diff --git a/.github/workflows/certora-prover.yml b/.github/workflows/certora-prover.yml index f8556b756a..5987dc1807 100644 --- a/.github/workflows/certora-prover.yml +++ b/.github/workflows/certora-prover.yml @@ -32,7 +32,7 @@ jobs: - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 with: - version: nightly + version: stable - name: Install forge dependencies run: forge install - name: Install python @@ -50,7 +50,7 @@ jobs: - name: Install solc run: | pip install solc-select - solc-select use 0.8.12 --always-install + solc-select use 0.8.27 --always-install - name: Verify rule ${{ matrix.params }} run: | bash ${{ matrix.params }} diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index bbf1376d44..535d51034f 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -26,19 +26,20 @@ jobs: id: get_issue_number with: script: | - if (context.issue && context.issue.number) { - // Return issue number if present - return context.issue.number; + let issue_number; + // Attempt to find a pull request associated with the commit + const pullRequests = await github.rest.repos.listPullRequestsAssociatedWithCommit({ + commit_sha: context.sha, + owner: context.repo.owner, + repo: context.repo.repo, + }); + + if (pullRequests.data.length > 0) { + issue_number = pullRequests.data[0].number; } else { - // Otherwise return issue number from commit - return ( - await github.rest.repos.listPullRequestsAssociatedWithCommit({ - commit_sha: context.sha, - owner: context.repo.owner, - repo: context.repo.repo, - }) - ).data[0].number; + throw new Error('No associated issue or pull request found.'); } + return issue_number; result-encoding: string - name: Checkout code uses: actions/checkout@v2 @@ -49,9 +50,12 @@ jobs: - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 with: - version: nightly + version: stable - name: Run coverage run: forge coverage --report lcov + env: + RPC_MAINNET: ${{ secrets.RPC_MAINNET }} + RPC_HOLESKY: ${{ secrets.RPC_HOLESKY }} - name: Prune coverage report run: lcov --remove ./lcov.info -o ./lcov.info.pruned 'src/test/*' 'script/*' '*Storage.sol' --ignore-errors inconsistent - name: Generate reports diff --git a/.github/workflows/deploy-local.yml b/.github/workflows/deploy-local.yml index 33b29c10a6..25f9dd9a6a 100644 --- a/.github/workflows/deploy-local.yml +++ b/.github/workflows/deploy-local.yml @@ -30,7 +30,7 @@ jobs: - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 with: - version: nightly + version: stable - name: Run forge install run: forge install - name: Start anvil and deploy diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index 1869ccf191..0edb734c11 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -18,7 +18,7 @@ jobs: - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 with: - version: nightly + version: stable - name: Run forge fmt run: | forge fmt --check src/contracts diff --git a/.github/workflows/storage-report.yml b/.github/workflows/storage-report.yml index d4665b0155..f95b2099e9 100644 --- a/.github/workflows/storage-report.yml +++ b/.github/workflows/storage-report.yml @@ -16,7 +16,7 @@ jobs: - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 with: - version: nightly + version: stable - name: "Generate and prepare the storage reports for current branch" run: | diff --git a/.github/workflows/testinparallel.yml b/.github/workflows/testinparallel.yml index 8ae97b9a48..fd4c63be13 100644 --- a/.github/workflows/testinparallel.yml +++ b/.github/workflows/testinparallel.yml @@ -34,12 +34,12 @@ jobs: - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 with: - version: nightly + version: stable - name: Run Forge build run: | forge --version - forge build --sizes + forge build id: build - name: Run unit tests @@ -57,9 +57,9 @@ jobs: CHAIN_ID: ${{ secrets.CHAIN_ID }} - name: Run integration mainnet fork tests - run: forge test --match-contract Integration + run: forge test --match-contract Integration env: FOUNDRY_PROFILE: "forktest" RPC_MAINNET: ${{ secrets.RPC_MAINNET }} RPC_HOLESKY: ${{ secrets.RPC_HOLESKY }} - CHAIN_ID: ${{ secrets.CHAIN_ID }} \ No newline at end of file + CHAIN_ID: ${{ secrets.CHAIN_ID }} diff --git a/.gitignore b/.gitignore index cb82d385c8..3213174f12 100644 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,7 @@ InheritanceGraph.png surya_report.md .idea + +*state.json +deployed_strategies.json +populate_src* \ No newline at end of file diff --git a/.gitmodules b/.gitmodules index 3c23de6f89..2a8236c617 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,15 +1,9 @@ -[submodule "lib/openzeppelin-contracts-upgradeable"] - path = lib/openzeppelin-contracts-upgradeable - url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable [submodule "lib/ds-test"] path = lib/ds-test url = https://github.com/dapphub/ds-test [submodule "lib/forge-std"] path = lib/forge-std url = https://github.com/foundry-rs/forge-std -[submodule "lib/openzeppelin-contracts"] - path = lib/openzeppelin-contracts - url = https://github.com/OpenZeppelin/openzeppelin-contracts [submodule "lib/openzeppelin-contracts-v4.9.0"] path = lib/openzeppelin-contracts-v4.9.0 url = https://github.com/OpenZeppelin/openzeppelin-contracts diff --git a/.solhint.json b/.solhint.json index 8c451d3fd5..f4d49a7776 100644 --- a/.solhint.json +++ b/.solhint.json @@ -16,6 +16,8 @@ "compiler-version": "off", "custom-errors": "off", "no-global-import": "off", - "immutable-vars-naming": "off" + "immutable-vars-naming": "off", + "no-console": "off" + } } diff --git a/.solhintignore b/.solhintignore index 497fd271cf..e69de29bb2 100644 --- a/.solhintignore +++ b/.solhintignore @@ -1 +0,0 @@ -Slasher.sol \ No newline at end of file diff --git a/README.md b/README.md index 72cecb6ce8..58d6b07c5d 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,14 @@ surya mdreport surya_report.md ./src/contracts/**/*.sol make bindings ``` +### Generate updated Storage Report + +To update the storage reports in `/docs/storage-report` run: + +```bash +make storage-report +``` + ## Deployments ### Current Mainnet Deployment diff --git a/certora/harnesses/DelegationManagerHarness.sol b/certora/harnesses/DelegationManagerHarness.sol index 9f2366ee6e..05143f5371 100644 --- a/certora/harnesses/DelegationManagerHarness.sol +++ b/certora/harnesses/DelegationManagerHarness.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: BUSL-1.1 -pragma solidity ^0.8.12; +pragma solidity ^0.8.27; import "../../src/contracts/core/DelegationManager.sol"; diff --git a/certora/harnesses/EigenPodHarness.sol b/certora/harnesses/EigenPodHarness.sol index 1845cff7a7..a000e49547 100644 --- a/certora/harnesses/EigenPodHarness.sol +++ b/certora/harnesses/EigenPodHarness.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: BUSL-1.1 -pragma solidity ^0.8.12; +pragma solidity ^0.8.27; import "../../src/contracts/pods/EigenPod.sol"; diff --git a/certora/harnesses/EigenPodManagerHarness.sol b/certora/harnesses/EigenPodManagerHarness.sol index 84576ec9fe..034425449d 100644 --- a/certora/harnesses/EigenPodManagerHarness.sol +++ b/certora/harnesses/EigenPodManagerHarness.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: BUSL-1.1 -pragma solidity ^0.8.12; +pragma solidity ^0.8.27; import "../../src/contracts/pods/EigenPodManager.sol"; diff --git a/certora/harnesses/PausableHarness.sol b/certora/harnesses/PausableHarness.sol index fc0095ebe1..2719eba6f2 100644 --- a/certora/harnesses/PausableHarness.sol +++ b/certora/harnesses/PausableHarness.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: BUSL-1.1 -pragma solidity ^0.8.12; +pragma solidity ^0.8.27; import "../../src/contracts/permissions/Pausable.sol"; diff --git a/certora/harnesses/SlasherHarness.sol b/certora/harnesses/SlasherHarness.sol deleted file mode 100644 index 5198957807..0000000000 --- a/certora/harnesses/SlasherHarness.sol +++ /dev/null @@ -1,85 +0,0 @@ -// SPDX-License-Identifier: BUSL-1.1 -pragma solidity ^0.8.12; - -import "../../src/contracts/core/Slasher.sol"; - -contract SlasherHarness is Slasher { - - constructor(IStrategyManager _strategyManager, IDelegationManager _delegation) Slasher(_strategyManager, _delegation) {} - - /// Harnessed functions - function get_is_operator(address staker) public returns (bool) { - return delegation.isOperator(staker); - } - - function get_is_delegated(address staker) public returns (bool) { - return delegation.isDelegated(staker); - } - - - // Linked List Functions - function get_list_exists(address operator) public returns (bool) { - return StructuredLinkedList.listExists(_operatorToWhitelistedContractsByUpdate[operator]); - } - - function get_next_node_exists(address operator, uint256 node) public returns (bool) { - (bool res, ) = StructuredLinkedList.getNextNode(_operatorToWhitelistedContractsByUpdate[operator], node); - return res; - } - - function get_next_node(address operator, uint256 node) public returns (uint256) { - (, uint256 res) = StructuredLinkedList.getNextNode(_operatorToWhitelistedContractsByUpdate[operator], node); - return res; - } - - function get_previous_node_exists(address operator, uint256 node) public returns (bool) { - (bool res, ) = StructuredLinkedList.getPreviousNode(_operatorToWhitelistedContractsByUpdate[operator], node); - return res; - } - - function get_previous_node(address operator, uint256 node) public returns (uint256) { - (, uint256 res) = StructuredLinkedList.getPreviousNode(_operatorToWhitelistedContractsByUpdate[operator], node); - return res; - } - - function get_list_head(address operator) public returns (uint256) { - return StructuredLinkedList.getHead(_operatorToWhitelistedContractsByUpdate[operator]); - } - - function get_lastest_update_block_at_node(address operator, uint256 node) public returns (uint256) { - return _whitelistedContractDetails[operator][_uintToAddress(node)].latestUpdateBlock; - } - - function get_lastest_update_block_at_head(address operator) public returns (uint256) { - return get_lastest_update_block_at_node(operator, get_list_head(operator)); - } - - function get_linked_list_entry(address operator, uint256 node, bool direction) public returns (uint256) { - return (_operatorToWhitelistedContractsByUpdate[operator].list[node][direction]); - } - - // // uses that _HEAD = 0. Similar to StructuredLinkedList.nodeExists but slightly better defined - // function nodeDoesExist(address operator, uint256 node) public returns (bool) { - // if (get_next_node(operator, node) == 0 && get_previous_node(operator, node) == 0) { - // // slightly stricter check than that defined in StructuredLinkedList.nodeExists - // if (get_next_node(operator, 0) == node && get_previous_node(operator, 0) == node) { - // return true; - // } else { - // return false; - // } - // } else { - // return true; - // } - // } - - // // uses that _PREV = false, _NEXT = true - // function nodeIsWellLinked(address operator, uint256 node) public returns (bool) { - // return ( - // // node is not linked to itself - // get_previous_node(operator, node) != node && get_next_node(operator, node) != node - // && - // // node is the previous node's next node and the next node's previous node - // get_linked_list_entry(operator, get_previous_node(operator, node), true) == node && get_linked_list_entry(operator, get_next_node(operator, node), false) == node - // ); - // } -} diff --git a/certora/harnesses/StrategyManagerHarness.sol b/certora/harnesses/StrategyManagerHarness.sol index 441037032d..a8c1ba2a04 100644 --- a/certora/harnesses/StrategyManagerHarness.sol +++ b/certora/harnesses/StrategyManagerHarness.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: BUSL-1.1 -pragma solidity ^0.8.12; +pragma solidity ^0.8.27; import "../../src/contracts/core/StrategyManager.sol"; diff --git a/certora/scripts/core/verifyDelegationManager.sh b/certora/scripts/core/verifyDelegationManager.sh index 678b5a37cc..d581121037 100644 --- a/certora/scripts/core/verifyDelegationManager.sh +++ b/certora/scripts/core/verifyDelegationManager.sh @@ -3,12 +3,12 @@ then RULE="--rule $2" fi -solc-select use 0.8.12 +solc-select use 0.8.27 certoraRun certora/harnesses/DelegationManagerHarness.sol \ lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol lib/openzeppelin-contracts/contracts/mocks/ERC1271WalletMock.sol \ src/contracts/pods/EigenPodManager.sol src/contracts/pods/EigenPod.sol src/contracts/strategies/StrategyBase.sol src/contracts/core/StrategyManager.sol \ - src/contracts/core/Slasher.sol src/contracts/permissions/PauserRegistry.sol \ + src/contracts/permissions/PauserRegistry.sol \ --verify DelegationManagerHarness:certora/specs/core/DelegationManager.spec \ --solc_via_ir \ --solc_optimize 1 \ diff --git a/certora/scripts/core/verifyStrategyManager.sh b/certora/scripts/core/verifyStrategyManager.sh index 7f3b1c5d2a..1e404ea4c1 100644 --- a/certora/scripts/core/verifyStrategyManager.sh +++ b/certora/scripts/core/verifyStrategyManager.sh @@ -3,13 +3,13 @@ then RULE="--rule $2" fi -solc-select use 0.8.12 +solc-select use 0.8.27 certoraRun certora/harnesses/StrategyManagerHarness.sol \ lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol lib/openzeppelin-contracts/contracts/mocks/ERC1271WalletMock.sol \ src/contracts/pods/EigenPodManager.sol src/contracts/pods/EigenPod.sol \ src/contracts/strategies/StrategyBase.sol src/contracts/core/DelegationManager.sol \ - src/contracts/core/Slasher.sol src/contracts/permissions/PauserRegistry.sol \ + src/contracts/permissions/PauserRegistry.sol \ --verify StrategyManagerHarness:certora/specs/core/StrategyManager.spec \ --solc_via_ir \ --solc_optimize 1 \ diff --git a/certora/scripts/permissions/verifyPausable.sh b/certora/scripts/permissions/verifyPausable.sh index c9d23f965f..29cc4c1ad5 100644 --- a/certora/scripts/permissions/verifyPausable.sh +++ b/certora/scripts/permissions/verifyPausable.sh @@ -3,7 +3,7 @@ then RULE="--rule $2" fi -solc-select use 0.8.12 +solc-select use 0.8.27 certoraRun certora/harnesses/PausableHarness.sol \ src/contracts/permissions/PauserRegistry.sol \ diff --git a/certora/scripts/pods/verifyEigenPod.sh b/certora/scripts/pods/verifyEigenPod.sh index d4bc140a80..812d26bf24 100644 --- a/certora/scripts/pods/verifyEigenPod.sh +++ b/certora/scripts/pods/verifyEigenPod.sh @@ -3,11 +3,11 @@ then RULE="--rule $2" fi -# solc-select use 0.8.12 +# solc-select use 0.8.27 # certoraRun certora/harnesses/EigenPodHarness.sol \ # src/contracts/core/DelegationManager.sol src/contracts/pods/EigenPodManager.sol \ -# src/contracts/core/Slasher.sol src/contracts/permissions/PauserRegistry.sol \ +# src/contracts/permissions/PauserRegistry.sol \ # src/contracts/core/StrategyManager.sol \ # src/contracts/strategies/StrategyBase.sol \ # lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol \ diff --git a/certora/scripts/pods/verifyEigenPodManager.sh b/certora/scripts/pods/verifyEigenPodManager.sh index 428f89ba33..6d0b90e4c9 100644 --- a/certora/scripts/pods/verifyEigenPodManager.sh +++ b/certora/scripts/pods/verifyEigenPodManager.sh @@ -3,11 +3,11 @@ then RULE="--rule $2" fi -# solc-select use 0.8.12 +# solc-select use 0.8.27 # certoraRun certora/harnesses/EigenPodManagerHarness.sol \ # src/contracts/core/DelegationManager.sol src/contracts/pods/EigenPod.sol src/contracts/strategies/StrategyBase.sol src/contracts/core/StrategyManager.sol \ -# src/contracts/core/Slasher.sol src/contracts/permissions/PauserRegistry.sol \ +# src/contracts/permissions/PauserRegistry.sol \ # --verify EigenPodManagerHarness:certora/specs/pods/EigenPodManager.spec \ # --optimistic_loop \ # --optimistic_fallback \ diff --git a/certora/scripts/strategies/verifyStrategyBase.sh b/certora/scripts/strategies/verifyStrategyBase.sh index 5c3d2683f5..8d966e540a 100644 --- a/certora/scripts/strategies/verifyStrategyBase.sh +++ b/certora/scripts/strategies/verifyStrategyBase.sh @@ -3,13 +3,12 @@ then RULE="--rule $2" fi -solc-select use 0.8.12 +solc-select use 0.8.27 certoraRun src/contracts/strategies/StrategyBase.sol \ lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol \ src/contracts/core/StrategyManager.sol \ src/contracts/permissions/PauserRegistry.sol \ - src/contracts/core/Slasher.sol \ --verify StrategyBase:certora/specs/strategies/StrategyBase.spec \ --solc_via_ir \ --solc_optimize 1 \ diff --git a/certora/specs/core/DelegationManager.spec b/certora/specs/core/DelegationManager.spec index f607b75fd3..17eee65667 100644 --- a/certora/specs/core/DelegationManager.spec +++ b/certora/specs/core/DelegationManager.spec @@ -78,7 +78,7 @@ in this case, the end state is that: isOperator(staker) == false, delegatedTo(staker) != staker && delegatedTo(staker) != 0, and isDelegated(staker) == true (redundant with above) --only allowed when calling `delegateTo` or `delegateToBySignature` +-only allowed when calling `delegateTo` 2) FROM not delegated AND not registered as an operator @@ -172,7 +172,7 @@ rule cannotChangeDelegationWithoutUndelegating(address staker) { } } -// verifies that an undelegated address can only delegate when calling `delegateTo`, `delegateToBySignature` or `registerAsOperator` +// verifies that an undelegated address can only delegate when calling `delegateTo` or `registerAsOperator` rule canOnlyDelegateWithSpecificFunctions(address staker) { requireInvariant operatorsAlwaysDelegatedToSelf(staker); // assume the staker begins as undelegated @@ -192,16 +192,6 @@ rule canOnlyDelegateWithSpecificFunctions(address staker) { } else { assert (!isDelegated(staker), "staker delegated to inappropriate address?"); } - } else if (f.selector == sig:delegateToBySignature(address, address, ISignatureUtils.SignatureWithExpiry, ISignatureUtils.SignatureWithExpiry, bytes32).selector) { - address toDelegateFrom; - address operator; - require(operator != 0); - ISignatureUtils.SignatureWithExpiry stakerSignatureAndExpiry; - ISignatureUtils.SignatureWithExpiry approverSignatureAndExpiry; - bytes32 salt; - delegateToBySignature(e, toDelegateFrom, operator, stakerSignatureAndExpiry, approverSignatureAndExpiry, salt); - // TODO: this check could be stricter! need to filter when the block timestamp is appropriate for expiry and signature is valid - assert (!isDelegated(staker) || delegatedTo(staker) == operator, "delegateToBySignature bug?"); } else if (f.selector == sig:registerAsOperator(IDelegationManager.OperatorDetails, string).selector) { IDelegationManager.OperatorDetails operatorDetails; string metadataURI; diff --git a/docs/README.md b/docs/README.md index 4e6597b73e..f88ed06775 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,10 +1,11 @@ [middleware-repo]: https://github.com/Layr-Labs/eigenlayer-middleware/ +[elip-002]: https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md -## EigenLayer Docs - v0.4.0 Release +## EigenLayer Docs - v1.0.0 Release -This repo contains the EigenLayer core contracts, which enable restaking of liquid staking tokens (LSTs) and beacon chain ETH to secure new services, called AVSs (actively validated services). For more info on AVSs, check out the EigenLayer middleware contracts [here][middleware-repo]. +This repo contains the EigenLayer core contracts, which enable restaking of liquid staking tokens (LSTs), beacon chain ETH, and permissionlessly deployed ERC20 Strategies to secure new services called AVSs (actively validated services). For more info on AVSs, check out the EigenLayer middleware contracts [here][middleware-repo]. -This document provides an overview of system components, contracts, and user roles. Further documentation on the major system contracts can be found in [/core](./core/). +This document provides an overview of system components, contracts, and user roles and is up-to-date with the latest [ELIP-002][elip-002]. Further documentation on the major system contracts can be found in [/core](./core/). #### Contents @@ -14,7 +15,8 @@ This document provides an overview of system components, contracts, and user rol * [`DelegationManager`](#delegationmanager) * [`RewardsCoordinator`](#rewardscoordinator) * [`AVSDirectory`](#avsdirectory) - * [`Slasher`](#slasher) + * [`AllocationManager`](#allocationmanager) + * [`PermissionController`](#permissioncontroller) * [Roles and Actors](#roles-and-actors) * [Common User Flows](#common-user-flows) * [Depositing Into EigenLayer](#depositing-into-eigenlayer) @@ -53,7 +55,7 @@ See full documentation in: These contracts work together to enable restaking for ERC20 tokens supported by EigenLayer: * The `StrategyManager` acts as the entry and exit point for any supported tokens in EigenLayer. It handles deposits into LST-specific strategies, and manages accounting+interactions between users with restaked LSTs and the `DelegationManager`. * `StrategyFactory` allows anyone to deploy strategies to support deposits/withdrawals for new ERC20 tokens -* `StrategyBaseTVLLimits` is deployed as multiple separate instances, one for each supported token. When a user deposits into a strategy through the `StrategyManager`, this contract receives the tokens and awards the user with a proportional quantity of shares in the strategy. When a user withdraws, the strategy contract sends the LSTs back to the user. +* `StrategyBaseTVLLimits` is deployed as multiple separate instances, one for each supported token. When a user deposits into a strategy through the `StrategyManager`, this contract receives the tokens and awards the user with a proportional quantity of deposit shares in the strategy. When a user withdraws, the strategy contract sends the LSTs back to the user. See full documentation in [`/core/StrategyManager.md`](./core/StrategyManager.md). @@ -63,9 +65,13 @@ See full documentation in [`/core/StrategyManager.md`](./core/StrategyManager.md | -------- | -------- | -------- | | [`DelegationManager.sol`](../src/contracts/core/DelegationManager.sol) | Singleton | Transparent proxy | -The `DelegationManager` sits between the `EigenPodManager` and `StrategyManager` to manage delegation and undelegation of Stakers to Operators. Its primary features are to allow Operators to register as Operators (`registerAsOperator`), to keep track of shares being delegated to Operators across different strategies, and to manage withdrawals on behalf of the `EigenPodManager` and `StrategyManager`. +The `DelegationManager` sits between the `EigenPodManager` and `StrategyManager` to manage delegation and undelegation of stakers to operators. Its primary features are to allow users to become operators, to keep track of delegated shares to operators across different strategies, and to manage withdrawals on behalf of stakers via the `EigenPodManager` and `StrategyManager`. -See full documentation in [`/core/DelegationManager.md`](./core/DelegationManager.md). +The `DelegationManager` is tightly coupled with the `AllocationManager`. The `DelegationManager` ingests information about slashing as part of managing share accounting for stakers whose operators have been slashed. It also receives directives to slash/burn operator shares when an AVS slashes an operator. + +See: +* full documentation in [`/core/DelegationManager.md`](./core/DelegationManager.md) +* share accounting documentation in [`/core/accounting/SharesAccounting.md`](./core/accounting/SharesAccounting.md) #### RewardsCoordinator @@ -74,9 +80,9 @@ See full documentation in [`/core/DelegationManager.md`](./core/DelegationManage | [`RewardsCoordinator.sol`](../src/contracts/core/RewardsCoordinator.sol) | Singleton | Transparent proxy | The `RewardsCoordinator` is the main entry point of submission and claiming of ERC20 rewards in EigenLayer. It carries out three basic functions: -* AVSs (via the AVS's contracts) submit "rewards submissions" to their registered Operators and Stakers over a specific time period -* *Off-chain*, the rewards updater will use each RewardsSubmission time period to apply reward amounts to historical Staker/Operator stake weights. This is consolidated into a merkle root that is posted *on-chain* to the `RewardsCoordinator`, allowing Stakers/Operators to claim their allocated rewards. -* Stakers/Operators can claim rewards posted by the rewards updater. +* AVSs (via the AVS's contracts) submit "rewards submissions" to their registered operators and stakers over a specific time period +* *Off-chain*, the rewards updater will use each RewardsSubmission time period to apply reward amounts to historical staker/operator stake weights. This is consolidated into a merkle root that is posted *on-chain* to the `RewardsCoordinator`, allowing stakers/operators to claim their allocated rewards. +* Stakers/operators can claim rewards posted by the rewards updater. See full documentation in [`/core/RewardsCoordinator.md`](./core/RewardsCoordinator.md). @@ -86,21 +92,42 @@ See full documentation in [`/core/RewardsCoordinator.md`](./core/RewardsCoordina | -------- | -------- | -------- | | [`AVSDirectory.sol`](../src/contracts/core/AVSDirectory.sol) | Singleton | Transparent proxy | -The `AVSDirectory` handles interactions between AVSs and the EigenLayer core contracts. Once registered as an Operator in EigenLayer core (via the `DelegationManager`), Operators can register with one or more AVSs (via the AVS's contracts) to begin providing services to them offchain. As a part of registering with an AVS, the AVS will record this registration in the core contracts by calling into the `AVSDirectory`. +##### Note: This contract is left unchanged for backwards compatability. Operator<>AVS Registrations are to be replaced entirely with the `AllocationManager` and this contract will be deprecated in a future release. + +Previously, the `AVSDirectory` handled interactions between AVSs and the EigenLayer core contracts. Once registered as an operator in EigenLayer core (via the `DelegationManager`), operators could register with one or more AVSs (via the AVS's contracts) to begin providing services to them offchain. As a part of registering with an AVS, the AVS would record this registration in the core contracts by calling into the `AVSDirectory`. As of the slashing release, this process is now managed by the [`AllocationManager`](#allocationmanager). See full documentation in [`/core/AVSDirectory.md`](./core/AVSDirectory.md). For more information on AVS contracts, see the [middleware repo][middleware-repo]. -#### Slasher +#### AllocationManager + +| File | Type | Proxy | +| -------- | -------- | -------- | +| [`AllocationManager.sol`](../src/contracts/core/AllocationManager.sol) | Singleton | Transparent proxy | + +The `AllocationManager` is replaces the AVSDirectory with the introduction of _operator sets_ and slashing. It handles several use cases: +* AVSs can create operator sets and can define the EigenLayer Strategies within them +* Operators can register to or deregister from an AVS's operator sets +* Operators can make slashable security commitments to an operator set by allocating a proportion of their total delegated stake for a Strategy to be slashable. Ex. As an operator, I can allocate 50% of my delegated stETH to be slashable by a specific operator set +* AVSs can slash an operator who has allocated to and is registered for one of the AVS's operator sets + +See full documentation in [`/core/AllocationManager.md`](./core/AllocationManager.md). + +#### PermissionController | File | Type | Proxy | | -------- | -------- | -------- | -| [`Slasher.sol`](../src/contracts/core/Slasher.sol) | - | - | +| [`PermissionController.sol`](../src/contracts/permissions/PermissionController.sol) | Singleton | Transparent proxy | + +The `PermissionController` allows AVSs and operators to delegate the ability to call certain core contract functions to other addresses. This delegation ability is not available to stakers, and is not available in ALL core contract functions. -
-🚧 The Slasher contract is under active development and its interface expected to change. We recommend writing slashing logic without integrating with the Slasher at this point in time. Although the Slasher is deployed, it will remain completely paused/unusable during M2. No contracts interact with it, and its design is not finalized. 🚧 -
+The following core contracts use the `PermissionController` in certain methods:
+* `DelegationManager`
+* `AllocationManager`
+* `RewardsCoordinator`
+
+See full documentation in [`/permissions/PermissionController.md`](./permissions/PermissionController.md).
---
@@ -110,39 +137,33 @@ To see an example of the user flows described in this section, check out our int
##### Staker
-A Staker is any party who has assets deposited (or "restaked") into EigenLayer. Currently, these assets can be:
+A staker is any party who has assets deposited (or "restaked") into EigenLayer. Currently, these assets can be:
* Native beacon chain ETH (via the EigenPodManager)
-* Liquid staking tokens (via the StrategyManager): cbETH, rETH, stETH, ankrETH, OETH, osETH, swETH, wBETH
+* Arbitrary ERC20s (via the StrategyManager)
-Stakers can restake any combination of these: a Staker may hold ALL of these assets, or only one of them.
+Stakers can restake any combination of these: a staker may hold ALL of these assets, or only one of them.
*Flows:*
-* Stakers **deposit** assets into EigenLayer via either the StrategyManager (for LSTs) or EigenPodManager (for beacon chain ETH)
+* Stakers **deposit** assets into EigenLayer via either the StrategyManager (for ERC20s) or the EigenPodManager (for beacon chain ETH)
* Stakers **withdraw** assets via the DelegationManager, *no matter what assets they're withdrawing*
-* Stakers **delegate** to an Operator via the DelegationManager
-
-*Unimplemented as of v0.4.0:*
-* Stakers are at risk of being slashed if the Operator misbehaves
+* Stakers **delegate** to an operator via the DelegationManager
##### Operator
-An Operator is a user who helps run the software built on top of EigenLayer (AVSs). Operators register in EigenLayer and allow Stakers to delegate to them, then opt in to provide various services built on top of EigenLayer. Operators may themselves be Stakers; these are not mutually exclusive.
+An operator is a user who helps run the software built on top of EigenLayer (AVSs). operators register in EigenLayer and allow stakers to delegate to them, then opt in to provide various services built on top of EigenLayer. operators may themselves be stakers; these are not mutually exclusive.
*Flows:*
-* User can **register** as an Operator via the DelegationManager
-* Operators can **deposit** and **withdraw** assets just like Stakers can
+* Users can **register** as an operator via the DelegationManager
+* Operators can **deposit** and **withdraw** assets just like stakers can
* Operators can opt in to providing services for an AVS using that AVS's middleware contracts. See the [EigenLayer middleware][middleware-repo] repo for more details.
-*Unimplemented as of v0.4.0:*
-* Operators may be slashed by the services they register with (if they misbehave)
-
---
#### Common User Flows
##### Depositing Into EigenLayer
-Depositing into EigenLayer varies depending on whether the Staker is depositing Native ETH or LSTs:
+Depositing into EigenLayer varies depending on whether the staker is depositing Native ETH or LSTs:
![.](./images/Staker%20Flow%20Diagrams/Depositing.png)
@@ -152,13 +173,13 @@ Depositing into EigenLayer varies depending on whether the Staker is depositing
##### Undelegating or Queueing a Withdrawal
-Undelegating from an Operator automatically queues a withdrawal that needs to go through the `DelegationManager's` withdrawal delay. Stakers that want to withdraw can choose to `undelegate`, or can simply call `queueWithdrawals` directly.
+Undelegating from an operator automatically queues a withdrawal that needs to go through the `DelegationManager's` withdrawal delay. Stakers that want to withdraw can choose to `undelegate`, or can simply call `queueWithdrawals` directly.
![.](./images/Staker%20Flow%20Diagrams/Queue%20Withdrawal.png)
##### Completing a Withdrawal as Shares
-This flow is mostly useful if a Staker wants to change which Operator they are delegated to. The Staker first needs to undelegate (see above). At this point, they can delegate to a different Operator. However, the new Operator will only be awarded shares once the Staker completes their queued withdrawal "as shares":
+This flow is mostly useful if a staker wants to change which operator they are delegated to. The staker first needs to undelegate (see above). At this point, they can delegate to a different operator. However, the new operator will only be awarded shares once the staker completes their queued withdrawal "as shares":
![.](./images/Staker%20Flow%20Diagrams/Complete%20Withdrawal%20as%20Shares.png)
@@ -172,12 +193,12 @@ However, note that *before* a withdrawal can be completed, native ETH stakers wi
##### `EigenPods`: Processing Validator Exits
-If a Staker wants to fully withdraw from the beacon chain, they need to perform these additional steps before their withdrawal is completable:
+If a staker wants to fully withdraw from the beacon chain, they need to perform these additional steps before their withdrawal is completable:
![.](./images/Staker%20Flow%20Diagrams/Validator%20Exits.png)
##### `EigenPods`: Processing Validator Yield
-As the Staker's `EigenPod` accumulates consensus layer or execution layer yield, the `EigenPod's` balance will increase. The Staker can Checkpoint their validator to claim this yield as shares, which can either remain staked in EigenLayer or be withdrawn via the `DelegationManager` withdrawal queue:
+As the staker's `EigenPod` accumulates consensus layer or execution layer yield, the `EigenPod's` balance will increase. The staker can Checkpoint their validator to claim this yield as shares, which can either remain staked in EigenLayer or be withdrawn via the `DelegationManager` withdrawal queue:
![.](./images/Staker%20Flow%20Diagrams/Validator%20Yield.png)
\ No newline at end of file
diff --git a/docs/core/AVSDirectory.md b/docs/core/AVSDirectory.md
index 5a84e3baa7..f55178f9aa 100644
--- a/docs/core/AVSDirectory.md
+++ b/docs/core/AVSDirectory.md
@@ -1,80 +1,145 @@
-[middleware-repo]: https://github.com/Layr-Labs/eigenlayer-middleware/
+# AVSDirectory
-## AVSDirectory
+## Overview
-| File | Type | Proxy |
-| -------- | -------- | -------- |
-| [`AVSDirectory.sol`](../../src/contracts/core/AVSDirectory.sol) | Singleton | Transparent proxy |
+The AVSDirectory contract is where registration relationships are defined between AVSs, operatorSets, and operators. Registration and deregistration are used in the protocol to activate and deactivate slashable stake allocations. They're also used to make the protocol more legible to external integrations.
-The `AVSDirectory` handles interactions between AVSs and the EigenLayer core contracts. Once registered as an Operator in EigenLayer core (via the `DelegationManager`), Operators can register with one or more AVSs (via the AVS's contracts) to begin providing services to them offchain. As a part of registering with an AVS, the AVS will record this registration in the core contracts by calling into the `AVSDirectory`.
+The slashing release introduces the concept of operatorSets, which are simply an (address, uint32) pair that the define an AVS and an operator set ID. OperatorSets are used to group operators by different tasks and sets of tokens. For example, EigenDA has an ETH/LST operatorSet and an Eigen operatorSet. A bridge may have on operatorSet for all operators that serve a particular chain. Overall, operatorSets are mainly used for protocol legibility.
-For more information on AVS contracts, see the [middleware repo][middleware-repo].
+Functionality is provided for AVSs to migrate from an pre-operatorSet registration model to an operatorSet model. Direct to AVS registration is still supported for AVSs that have not migrated to the operatorSet model, but is slated to be deprecated soon in the future.
-Currently, the only interactions between AVSs and the core contracts is to track whether Operators are currently registered for the AVS. This is handled by two methods:
-* [`AVSDirectory.registerOperatorToAVS`](#registeroperatortoavs)
-* [`AVSDirectory.deregisterOperatorFromAVS`](#deregisteroperatorfromavs)
+## `becomeOperatorSetAVS`
+```solidity
+/**
+ * @notice Sets the AVS as an operator set AVS, preventing legacy M2 operator registrations.
+ *
+ * @dev msg.sender must be the AVS.
+ */
+function becomeOperatorSetAVS() external;
+```
+
+AVSs call this to become an operator set AVS. Once an AVS becomes an operator set AVS, they can no longer register operators via the legacy M2 registration path. This is a seperate function to help avoid accidental migrations to the operator set AVS model.
-In a future release, this contract will implement additional interactions that relate to (i) rewarding Operators for the services they provide and (ii) slashing Operators that misbehave. Currently, these features are not implemented.
+## `createOperatorSets`
+```solidity
+/**
+ * @notice Called by an AVS to create a list of new operatorSets.
+ *
+ * @param operatorSetIds The IDs of the operator set to initialize.
+ *
+ * @dev msg.sender must be the AVS.
+ */
+function createOperatorSets(
+ uint32[] calldata operatorSetIds
+) external;
+```
----
+AVSs use this function to create a list of new operator sets.They must call this function before they add any operators to the operator sets. The operator set IDs must be not already exist.
-#### `registerOperatorToAVS`
+This can be called before the AVS becomes an operator set AVS. (TODO: we should make this so that it can only be called after the AVS becomes an operator set AVS?)
+## `migrateOperatorsToOperatorSets`
```solidity
-function registerOperatorToAVS(
- address operator,
- ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature
-)
- external
- onlyWhenNotPaused(PAUSED_OPERATOR_REGISTER_DEREGISTER_TO_AVS)
+/**
+ * @notice Called by an AVS to migrate operators that have a legacy M2 registration to operator sets.
+ *
+ * @param operators The list of operators to migrate
+ * @param operatorSetIds The list of operatorSets to migrate the operators to
+ *
+ * @dev The msg.sender used is the AVS
+ * @dev The operator can only be migrated at most once per AVS
+ * @dev The AVS can no longer register operators via the legacy M2 registration path once it begins migration
+ * @dev The operator is deregistered from the M2 legacy AVS once migrated
+ */
+function migrateOperatorsToOperatorSets(
+ address[] calldata operators,
+ uint32[][] calldata operatorSetIds
+) external;
```
-Allows the caller (an AVS) to register an `operator` with itself, given the provided signature is valid.
+AVSs that launched before the slashing release can use this function to migrate operators that have a legacy M2 registration to operator sets. Each operator can only be migrated once for the AVS and the AVS can no longer register operators via the legacy M2 registration path once it begins migration.
-*Effects*:
-* Sets the `operator's` status to `REGISTERED` for the AVS
-
-*Requirements*:
-* Pause status MUST NOT be set: `PAUSED_OPERATOR_REGISTER_DEREGISTER_TO_AVS`
-* `operator` MUST already be a registered Operator (via the `DelegationManager`)
-* `operator` MUST NOT already be registered with the AVS
-* `operatorSignature` must be a valid, unused, unexpired signature from the `operator`. The signature is an ECDSA signature by the operator over the [`OPERATOR_AVS_REGISTRATION_TYPEHASH`](../../src/contracts/core/DelegationManagerStorage.sol). Expiry is a utc timestamp in seconds. Salt is used only once per signature to prevent replay attacks.
+## `registerOperatorToOperatorSets`
+```solidity
+/**
+ * @notice Called by AVSs to add an operator to list of operatorSets.
+ *
+ * @param operator The address of the operator to be added to the operator set.
+ * @param operatorSetIds The IDs of the operator sets.
+ * @param operatorSignature The signature of the operator on their intent to register.
+ *
+ * @dev msg.sender is used as the AVS.
+ */
+function registerOperatorToOperatorSets(
+ address operator,
+ uint32[] calldata operatorSetIds,
+ ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature
+) external;
+```
-*As of M2*:
-* Operator registration/deregistration does not have any sort of consequences for the Operator or its shares. Eventually, this will tie into rewards for services and slashing for misbehavior.
+AVSs use this function to add an operator to a list of operator sets. The operator's signature is required to confirm their intent to register. If the operator has a slashable stake allocation to the AVS, it takes effect when the operator is registered (and up to `DEALLOCATION_DELAY` seconds after the operator is deregistered).
-#### `deregisterOperatorFromAVS`
+The operator set must exist before the operator can be added to it and the AVS must be an operator set AVS.
+## `deregisterOperatorFromOperatorSets`
```solidity
-function deregisterOperatorFromAVS(
- address operator
-)
- external
- onlyWhenNotPaused(PAUSED_OPERATOR_REGISTER_DEREGISTER_TO_AVS)
+/**
+ * @notice Called by AVSs to remove an operator from an operator set.
+ *
+ * @param operator The address of the operator to be removed from the operator set.
+ * @param operatorSetIds The IDs of the operator sets.
+ *
+ * @dev msg.sender is used as the AVS.
+ */
+function deregisterOperatorFromOperatorSets(address operator, uint32[] calldata operatorSetIds) external;
```
-Allows the caller (an AVS) to deregister an `operator` with itself
+AVSs use this function to remove an operator from an operator set. The operator is still slashable for its slashable stake allocation to the AVS until `DEALLOCATION_DELAY` seconds after the operator is deregistered.
+
+The operator must be registered to the operator set before they can be deregistered from it.
-*Effects*:
-* Sets the `operator's` status to `UNREGISTERED` for the AVS
-*Requirements*:
-* Pause status MUST NOT be set: `PAUSED_OPERATOR_REGISTER_DEREGISTER_TO_AVS`
-* `operator` MUST already be registered with the AVS
+## `forceDeregisterFromOperatorSets`
+```solidity
+/**
+ * @notice Called by an operator to deregister from an operator set
+ *
+ * @param operator The operator to deregister from the operatorSets.
+ * @param avs The address of the AVS to deregister the operator from.
+ * @param operatorSetIds The IDs of the operator sets.
+ * @param operatorSignature the signature of the operator on their intent to deregister or empty if the operator itself is calling
+ *
+ * @dev if the operatorSignature is empty, the caller must be the operator
+ * @dev this will likely only be called in case the AVS contracts are in a state that prevents operators from deregistering
+ */
+function forceDeregisterFromOperatorSets(
+ address operator,
+ address avs,
+ uint32[] calldata operatorSetIds,
+ ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature
+) external;
+```
-*As of M2*:
-* Operator registration/deregistration does not have any sort of consequences for the Operator or its shares. Eventually, this will tie into rewards for services and slashing for misbehavior.
+Operators can use this function to deregister from an operator set without requiring the AVS to sign off on the deregistration. This function is intended to be used in cases where the AVS contracts are in a state that prevents operators from deregistering (either malicious or unintentional).
-#### `cancelSalt`
+Operators can also deallocate their slashable stake allocation seperately to avoid slashing risk, so this function is mainly for external integrations to interpret the correct state of the protocol.
+## `updateAVSMetadataURI`
```solidity
-function cancelSalt(bytes32 salt) external
+/**
+ * @notice Called by an AVS to emit an `AVSMetadataURIUpdated` event indicating the information has updated.
+ *
+ * @param metadataURI The URI for metadata associated with an AVS.
+ *
+ * @dev Note that the `metadataURI` is *never stored* and is only emitted in the `AVSMetadataURIUpdated` event.
+ */
+function updateAVSMetadataURI(
+ string calldata metadataURI
+) external;
```
-Allows the caller (an Operator) to cancel a signature salt before it is used to register for an AVS.
+This function allows an AVS to update the metadata URI associated with the AVS. The metadata URI is never stored on-chain and is only emitted in the `AVSMetadataURIUpdated` event.
-*Effects*:
-* Sets `operatorSaltIsSpent[msg.sender][salt]` to `true`
+## View Functions
-*Requirements*:
-* Salt MUST NOT already be cancelled
\ No newline at end of file
+See the [AVS Directory Inteface](../../../src/contracts/interfaces/IAVSDirectory.sol) for view functions.
\ No newline at end of file
diff --git a/docs/core/AllocationManager.md b/docs/core/AllocationManager.md
new file mode 100644
index 0000000000..4e722b5228
--- /dev/null
+++ b/docs/core/AllocationManager.md
@@ -0,0 +1,815 @@
+# AllocationManager
+
+| File | Notes |
+| -------- | -------- |
+| [`AllocationManager.sol`](../../src/contracts/core/AllocationManager.sol) | |
+| [`AllocationManagerStorage.sol`](../../src/contracts/core/AllocationManagerStorage.sol) | state variables |
+| [`IAllocationManager.sol`](../../src/contracts/interfaces/IAllocationManager.sol) | interface |
+
+Libraries and Mixins:
+
+| File | Notes |
+| -------- | -------- |
+| [`PermissionControllerMixin.sol`](../../src/contracts/mixins/PermissionControllerMixin.sol) | account delegation |
+| [`Pausable.sol`](../../src/contracts/permissions/Pausable.sol) | |
+| [`SlashingLib.sol`](../../src/contracts/libraries/SlashingLib.sol) | slashing math |
+| [`OperatorSetLib.sol`](../../src/contracts/libraries/OperatorSetLib.sol) | encode/decode operator sets |
+| [`Snapshots.sol`](../../src/contracts/libraries/Snapshots.sol) | historical state |
+
+## Prior Reading
+
+* [ELIP-002: Slashing via Unique Stake and Operator Sets](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md)
+
+## Overview
+
+The `AllocationManager` manages registration and deregistration of operators to operator sets, handles allocation and slashing of operators' slashable stake, and is the entry point an AVS uses to slash an operator. The `AllocationManager's` responsibilities are broken down into the following concepts:
+* [Operator Sets](#operator-sets)
+* [Allocations and Slashing](#allocations-and-slashing)
+* [Config](#config)
+
+## Parameterization
+
+* `ALLOCATION_CONFIGURATION_DELAY`: The delay in blocks before allocations take effect.
+ * Mainnet: `126000 blocks` (17.5 days).
+ * Testnet: `75 blocks` (15 minutes).
+* `DEALLOCATION_DELAY`: The delay in blocks before deallocations take effect.
+ * Mainnet: `100800 blocks` (14 days).
+ * Testnet: `50 blocks` (10 minutes).
+
+---
+
+## Operator Sets
+
+Operator sets, as described in [ELIP-002](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md#operator-sets), are useful for AVSs to configure operator groupings which can be assigned different tasks, rewarded based on their strategy allocations, and slashed according to different rules. Operator sets are defined in [`libraries/OperatorSetLib.sol`](../../src/contracts/libraries/OperatorSetLib.sol):
+
+```solidity
+/**
+ * @notice An operator set identified by the AVS address and an identifier
+ * @param avs The address of the AVS this operator set belongs to
+ * @param id The unique identifier for the operator set
+ */
+struct OperatorSet {
+ address avs;
+ uint32 id;
+}
+```
+
+The `AllocationManager` tracks operator sets and members of operator sets in the following mappings:
+
+```solidity
+/// @dev Lists the operator set ids an AVS has created
+mapping(address avs => EnumerableSet.UintSet) internal _operatorSets;
+
+/// @dev Lists the members of an AVS's operator set
+mapping(bytes32 operatorSetKey => EnumerableSet.AddressSet) internal _operatorSetMembers;
+```
+
+Every `OperatorSet` corresponds to a single AVS, as indicated by the `avs` parameter. On creation, the AVS provides an `id` (unique to that AVS), as well as a list of `strategies` the `OperatorSet` includes. Together, the `avs` and `id` form the `key` that uniquely identifies a given `OperatorSet`. Operators can register to and deregister from operator sets. In combination with allocating slashable magnitude, operator set registration forms the basis of operator slashability (discussed further in [Allocations and Slashing](#allocations-and-slashing)).
+
+**Concepts:**
+* [Registration Status](#registration-status)
+
+**Methods:**
+* [`createOperatorSets`](#createoperatorsets)
+* [`addStrategiesToOperatorSet`](#addstrategiestooperatorset)
+* [`removeStrategiesFromOperatorSet`](#removestrategiesfromoperatorset)
+* [`registerForOperatorSets`](#registerforoperatorsets)
+* [`deregisterFromOperatorSets`](#deregisterfromoperatorsets)
+
+#### Registration Status
+
+Operator registration and deregistration is tracked in the following state variables:
+
+```solidity
+/// @dev Lists the operator sets the operator is registered for. Note that an operator
+/// can be registered without allocated stake. Likewise, an operator can allocate
+/// without being registered.
+mapping(address operator => EnumerableSet.Bytes32Set) internal registeredSets;
+
+/**
+ * @notice Contains registration details for an operator pertaining to an operator set
+ * @param registered Whether the operator is currently registered for the operator set
+ * @param slashableUntil If the operator is not registered, they are still slashable until
+ * this block is reached.
+ */
+struct RegistrationStatus {
+ bool registered;
+ uint32 slashableUntil;
+}
+
+/// @dev Contains the operator's registration status for an operator set.
+mapping(address operator => mapping(bytes32 operatorSetKey => RegistrationStatus)) internal registrationStatus;
+```
+
+For each operator, `registeredSets` keeps a list of `OperatorSet` `keys` for which the operator is currently registered. Each operator registration and deregistration respectively adds and removes the relevant `key` for a given operator. An additional factor in registration is the operator's `RegistrationStatus`.
+
+The `RegistrationStatus.slashableUntil` value is used to ensure an operator remains slashable for a period of time after they initiate deregistration. This is to prevent an operator from committing a slashable offence and immediately deregistering to avoid penalty. This means that when an operator deregisters from an operator set, their `RegistrationStatus.slashableUntil` value is set to `block.number + DEALLOCATION_DELAY`.
+
+#### `createOperatorSets`
+
+```solidity
+/**
+ * @notice Parameters used by an AVS to create new operator sets
+ * @param operatorSetId the id of the operator set to create
+ * @param strategies the strategies to add as slashable to the operator set
+ */
+struct CreateSetParams {
+ uint32 operatorSetId;
+ IStrategy[] strategies;
+}
+
+/**
+ * @notice Allows an AVS to create new operator sets, defining strategies that the operator set uses
+ */
+function createOperatorSets(
+ address avs,
+ CreateSetParams[] calldata params
+)
+ external
+ checkCanCall(avs)
+```
+
+_Note: this method can be called directly by an AVS, or by a caller authorized by the AVS. See [`PermissionController.md`](../permissions/PermissionController.md) for details._
+
+AVSs use this method to create new operator sets. An AVS can create as many operator sets as they desire, depending on their needs. Once created, operators can [allocate slashable stake to](#modifyallocations) and [register for](#registerforoperatorsets) these operator sets.
+
+On creation, the `avs` specifies an `operatorSetId` unique to the AVS. Together, the `avs` address and `operatorSetId` create a `key` that uniquely identifies this operator set throughout the `AllocationManager`.
+
+Optionally, the `avs` can provide a list of `strategies`, specifying which strategies will be slashable for the new operator set. AVSs may create operator sets with various strategies based on their needs - and strategies may be added to more than one operator set.
+
+*Effects*:
+* For each `CreateSetParams` element:
+ * For each `params.strategies` element:
+ * Add `strategy` to `_operatorSetStrategies[operatorSetKey]`
+ * Emits `StrategyAddedToOperatorSet` event
+
+*Requirements*:
+* Caller MUST be authorized, either as the AVS itself or an admin/appointee (see [`PermissionController.md`](../permissions/PermissionController.md))
+* For each `CreateSetParams` element:
+ * Each `params.operatorSetId` MUST NOT already exist in `_operatorSets[avs]`
+
+#### `addStrategiesToOperatorSet`
+
+```solidity
+/**
+ * @notice Allows an AVS to add strategies to an operator set
+ * @dev Strategies MUST NOT already exist in the operator set
+ * @param avs the avs to set strategies for
+ * @param operatorSetId the operator set to add strategies to
+ * @param strategies the strategies to add
+ */
+function addStrategiesToOperatorSet(
+ address avs,
+ uint32 operatorSetId,
+ IStrategy[] calldata strategies
+)
+ external
+ checkCanCall(avs)
+```
+
+_Note: this method can be called directly by an AVS, or by a caller authorized by the AVS. See [`PermissionController.md`](../permissions/PermissionController.md) for details._
+
+This function allows an AVS to add slashable strategies to a given operator set. If any strategy is already registered for the given operator set, the entire call will fail.
+
+*Effects*:
+* For each `strategies` element:
+ * Adds the strategy to `_operatorSetStrategies[operatorSetKey]`
+ * Emits a `StrategyAddedToOperatorSet` event
+
+*Requirements*:
+* Caller MUST be authorized, either as the AVS itself or an admin/appointee (see [`PermissionController.md`](../permissions/PermissionController.md))
+* The operator set MUST be registered for the AVS
+* Each proposed strategy MUST NOT be registered for the operator set
+
+#### `removeStrategiesFromOperatorSet`
+
+```solidity
+/**
+ * @notice Allows an AVS to remove strategies from an operator set
+ * @dev Strategies MUST already exist in the operator set
+ * @param avs the avs to remove strategies for
+ * @param operatorSetId the operator set to remove strategies from
+ * @param strategies the strategies to remove
+ */
+function removeStrategiesFromOperatorSet(
+ address avs,
+ uint32 operatorSetId,
+ IStrategy[] calldata strategies
+)
+ external
+ checkCanCall(avs)
+```
+
+_Note: this method can be called directly by an AVS, or by a caller authorized by the AVS. See [`PermissionController.md`](../permissions/PermissionController.md) for details._
+
+This function allows an AVS to remove slashable strategies from a given operator set. If any strategy is not registered for the given operator set, the entire call will fail.
+
+*Effects*:
+* For each `strategies` element:
+ * Removes the strategy from `_operatorSetStrategies[operatorSetKey]`
+ * Emits a `StrategyRemovedFromOperatorSet` event
+
+*Requirements*:
+* Caller MUST be authorized, either as the AVS itself or an admin/appointee (see [`PermissionController.md`](../permissions/PermissionController.md))
+* The operator set MUST be registered for the AVS
+* Each proposed strategy MUST be registered for the operator set
+
+#### `registerForOperatorSets`
+
+```solidity
+/**
+ * @notice Parameters used to register for an AVS's operator sets
+ * @param avs the AVS being registered for
+ * @param operatorSetIds the operator sets within the AVS to register for
+ * @param data extra data to be passed to the AVS to complete registration
+ */
+struct RegisterParams {
+ address avs;
+ uint32[] operatorSetIds;
+ bytes data;
+}
+
+/**
+ * @notice Allows an operator to register for one or more operator sets for an AVS. If the operator
+ * has any stake allocated to these operator sets, it immediately becomes slashable.
+ * @dev After registering within the ALM, this method calls the AVS Registrar's `IAVSRegistrar.
+ * registerOperator` method to complete registration. This call MUST succeed in order for
+ * registration to be successful.
+ */
+function registerForOperatorSets(
+ address operator,
+ RegisterParams calldata params
+)
+ external
+ onlyWhenNotPaused(PAUSED_OPERATOR_SET_REGISTRATION_AND_DEREGISTRATION)
+ checkCanCall(operator)
+```
+
+_Note: this method can be called directly by an operator, or by a caller authorized by the operator. See [`PermissionController.md`](../permissions/PermissionController.md) for details._
+
+An operator may call this function to register for any number of operator sets of a given AVS at once. There are two very important details to know about this method:
+1. As part of registration, each operator set is added to the operator's `registeredSets`. Note that for each newly-registered set, **any stake allocations to the operator set become immediately slashable**.
+2. Once all sets have been added, the AVS's configured `IAVSRegistrar` is called to confirm and complete registration. _This call MUST NOT revert,_ as **AVSs are expected to use this call to reject ineligible operators** (according to their own custom logic). Note that if the AVS has not configured a registrar, the `avs` itself is called.
+
+This method makes an external call to the `IAVSRegistrar.registerOperator` method, passing in the registering `operator`, the `operatorSetIds` being registered for, and the input `params.data` provided during registration. From [`IAVSRegistrar.sol`](../../src/contracts/interfaces/IAVSRegistrar.sol):
+
+```solidity
+/**
+ * @notice Called by the AllocationManager when an operator wants to register
+ * for one or more operator sets. This method should revert if registration
+ * is unsuccessful.
+ * @param operator the registering operator
+ * @param operatorSetIds the list of operator set ids being registered for
+ * @param data arbitrary data the operator can provide as part of registration
+ */
+function registerOperator(address operator, uint32[] calldata operatorSetIds, bytes calldata data) external;
+```
+
+*Effects*:
+* Adds the proposed operator sets to the operator's list of registered sets (`registeredSets`)
+* Adds the operator to `_operatorSetMembers` for each operator set
+* Marks the operator as registered for the given operator sets (in `registrationStatus`)
+* Passes the `params` for registration to the AVS's `AVSRegistrar`, which can arbitrarily handle the registration request
+* Emits an `OperatorAddedToOperatorSet` event for each operator
+
+*Requirements*:
+* Pause status MUST NOT be set: `PAUSED_OPERATOR_SET_REGISTRATION_AND_DEREGISTRATION`
+* `operator` MUST be registered as an operator in the `DelegationManager`
+* Caller MUST be authorized, either the operator themselves, or an admin/appointee (see [`PermissionController.md`](../permissions/PermissionController.md))
+* Each `operatorSetId` MUST exist for the given AVS
+* Operator MUST NOT already be registered for any proposed operator sets
+* If operator has deregistered, operator MUST NOT be slashable anymore (i.e. the `DEALLOCATION_DELAY` must have passed)
+* The call to the AVS's configured `IAVSRegistrar` MUST NOT revert
+
+#### `deregisterFromOperatorSets`
+
+```solidity
+/**
+ * @notice Parameters used to deregister from an AVS's operator sets
+ * @param operator the operator being deregistered
+ * @param avs the avs being deregistered from
+ * @param operatorSetIds the operator sets within the AVS being deregistered from
+ */
+struct DeregisterParams {
+ address operator;
+ address avs;
+ uint32[] operatorSetIds;
+}
+
+/**
+ * @notice Allows an operator or AVS to deregister the operator from one or more of the AVS's operator sets.
+ * If the operator has any slashable stake allocated to the AVS, it remains slashable until the
+ * DEALLOCATION_DELAY has passed.
+ * @dev After deregistering within the ALM, this method calls the AVS Registrar's `IAVSRegistrar.
+ * deregisterOperator` method to complete deregistration. Unlike when registering, this call MAY FAIL.
+ * Failure is permitted to prevent AVSs from being able to maliciously prevent operators from deregistering.
+ */
+function deregisterFromOperatorSets(
+ DeregisterParams calldata params
+)
+ external
+ onlyWhenNotPaused(PAUSED_OPERATOR_SET_REGISTRATION_AND_DEREGISTRATION)
+```
+
+_Note: this method can be called directly by an operator/AVS, or by a caller authorized by the operator/AVS. See [`PermissionController.md`](../permissions/PermissionController.md) for details._
+
+This method may be called by EITHER an operator OR an AVS to which an operator is registered; it is intended to allow deregistration to be triggered by EITHER party. This method generally inverts the effects of `registerForOperatorSets`, with two specific exceptions:
+1. As part of deregistration, each operator set is removed from the operator's `registeredSets`. HOWEVER, **any stake allocations to that operator set will remain slashable for `DEALLOCATION_DELAY` blocks.**
+2. Once all sets have been removed, the AVS's configured `IAVSRegistrar` is called to complete deregistration on the AVS side. **Unlike registration, if this call reverts it will be ignored.** This is to stop an AVS from maliciously preventing operators from deregistering.
+
+This method makes an external call to the `IAVSRegistrar.deregisterOperator` method, passing in the deregistering `operator` and the `operatorSetIds` being deregistered from. From [`IAVSRegistrar.sol`](../../src/contracts/interfaces/IAVSRegistrar.sol):
+
+```solidity
+/**
+ * @notice Called by the AllocationManager when an operator is deregistered from
+ * one or more operator sets. If this method reverts, it is ignored.
+ * @param operator the deregistering operator
+ * @param operatorSetIds the list of operator set ids being deregistered from
+ */
+function deregisterOperator(address operator, uint32[] calldata operatorSetIds) external;
+```
+
+*Effects*:
+* Removes the proposed operator sets from the operator's list of registered sets (`registeredSets`)
+* Removes the operator from `_operatorSetMembers` for each operator set
+* Updates the operator's `registrationStatus` with:
+ * `registered: false`
+ * `slashableUntil: block.number + DEALLOCATION_DELAY`
+ * As mentioned above, this allows for AVSs to slash deregistered operators until `block.number == slashableUntil`
+* Emits an `OperatorRemovedFromOperatorSet` event for each operator
+* Passes the `operator` and `operatorSetIds` to the AVS's `AVSRegistrar`, which can arbitrarily handle the deregistration request
+
+*Requirements*:
+
+* Pause status MUST NOT be set: `PAUSED_OPERATOR_SET_REGISTRATION_AND_DEREGISTRATION`
+* Caller MUST be authorized, either the operator/AVS themselves, or an admin/appointee (see [`PermissionController.md`](../permissions/PermissionController.md))
+* Each operator set ID MUST exist for the given AVS
+* Operator MUST be registered for the given operator sets
+* Note that, unlike `registerForOperatorSets`, the AVS's `AVSRegistrar` MAY revert and the deregistration will still succeed
+
+---
+
+## Allocations and Slashing
+
+[Operator set registration](#operator-sets) is one step of preparing to participate in an AVS. When an operator successfully registers for an operator set, it is because the AVS in question is ready to assign them tasks. However, it follows that _before assigning tasks_ to an operator, an AVS will expect operators to allocate slashable stake to the operator set such that the AVS has some economic security.
+
+For this reason, it is expected that many AVSs will require operators to **allocate slashable stake BEFORE registering for an operator set**. This is due to [`registerForOperatorSets`](#registerforoperatorsets) serving in part as an AVS's "consent mechanism," as calling `IAVSRegsitrar.registerOperator` allows the AVS to query the amount of slashable stake the operator can provide when assigned tasks.
+
+It is only once an operator is both _registered for an operator set_ and _has an active allocation to that operator set_ that the associated AVS can slash actual stake from an operator.
+
+See [ELIP-002#Unique Stake Allocation & Deallocation](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md#unique-stake-allocation--deallocation) for additional context.
+
+**Concepts:**
+* [Max vs Encumbered Magnitude](#max-vs-encumbered-magnitude)
+* [Evaluating the "Current" Allocation](#evaluating-the-current-allocation)
+* [Evaluating Whether an Allocation is "Slashable"](#evaluating-whether-an-allocation-is-slashable)
+
+**Methods:**
+* [`modifyAllocations`](#modifyallocations)
+* [`clearDeallocationQueue`](#cleardeallocationqueue)
+* [`slashOperator`](#slashoperator)
+
+#### Max vs Encumbered Magnitude
+
+Operators allocate _magnitude_, which represents a proportion of their total stake. For a given strategy, the `AllocationManager` tracks two quantities, _max magnitude_ and _encumbered magnitude_:
+
+```solidity
+/**
+ * @notice Contains allocation info for a specific strategy
+ * @param maxMagnitude the maximum magnitude that can be allocated between all operator sets
+ * @param encumberedMagnitude the currently-allocated magnitude for the strategy
+ */
+struct StrategyInfo {
+ uint64 maxMagnitude;
+ uint64 encumberedMagnitude;
+}
+
+/// @dev Contains a history of the operator's maximum magnitude for a given strategy
+mapping(address operator => mapping(IStrategy strategy => Snapshots.DefaultWadHistory)) internal _maxMagnitudeHistory;
+
+/// @dev For a strategy, contains the amount of magnitude an operator has allocated to operator sets
+/// @dev This value should be read with caution, as deallocations that are completable but not
+/// popped off the queue are still included in the encumbered magnitude
+mapping(address operator => mapping(IStrategy strategy => uint64)) public encumberedMagnitude;
+```
+
+An operator's max magnitude starts at `1 WAD` (`1e18`), and is decreased when they are slashed. Max magnitude represents "100%" of allocatable magnitude. When an operator allocates magnitude from a strategy to an operator set, their encumbered magnitude for that strategy increases. An operator cannot allocate > 100%; therefore, a strategy's encumbered magnitude can never exceed that strategy's max magnitude.
+
+#### Evaluating the "Current" Allocation
+
+As mentioned in the previous section, allocations and deallocations take place on a delay, and as such the `Allocation` struct has both a `currentMagnitude`, and `pendingDiff` / `effectBlock` fields:
+
+```solidity
+/**
+ * @notice Defines allocation information from a strategy to an operator set, for an operator
+ * @param currentMagnitude the current magnitude allocated from the strategy to the operator set
+ * @param pendingDiff a pending change in magnitude, if it exists (0 otherwise)
+ * @param effectBlock the block at which the pending magnitude diff will take effect
+ */
+struct Allocation {
+ uint64 currentMagnitude;
+ int128 pendingDiff;
+ uint32 effectBlock;
+}
+```
+
+Although the `allocations` mapping can be used to fetch an `Allocation` directly, you'll notice a convention in the `AllocationManager` of using the `_getUpdatedAllocation` helper, instead. This helper reads an existing `Allocation`, then evaluates `block.number` against `Allocation.effectBlock` to determine whether or not to apply the `pendingDiff`.
+* If the diff can be applied, the helper returns an `Allocation` with an updated `currentMagnitude` and zeroed out `pendingDiff` and `effectBlock` fields -- as if the modification has already been completed.
+* Otherwise, the `Allocation` is returned from storage unmodified.
+
+Generally, when an `Allocation` is mentioned in this doc (or used within the `AllocationManager.sol` contract), we are referring to the "Current" `Allocation` as defined above.
+
+#### Evaluating Whether an Allocation is "Slashable"
+
+Given an `operator` and an `Allocation` from a `strategy` to an AVS's `OperatorSet`, the `AllocationManager` uses the following criteria to determine whether the operator's allocation is slashable:
+1. The `operator` must be registered for the operator set, or if they are deregistered, they must still be slashable (See [Registration Status](#registration-status)).
+2. The AVS must have added the `strategy` to the operator set (See [`addStrategiesToOperatorSet`](#addstrategiestooperatorset) and [`removeStrategiesFromOperatorSet`](#removestrategiesfromoperatorset))
+3. The existing `Allocation` must have a nonzero `Allocation.currentMagnitude`
+
+If ALL of these are true, the `AllocationManager` will allow the AVS to slash the `operator's` `Allocation`.
+
+#### `modifyAllocations`
+
+```solidity
+/**
+ * @notice struct used to modify the allocation of slashable magnitude to an operator set
+ * @param operatorSet the operator set to modify the allocation for
+ * @param strategies the strategies to modify allocations for
+ * @param newMagnitudes the new magnitude to allocate for each strategy to this operator set
+ */
+struct AllocateParams {
+ OperatorSet operatorSet;
+ IStrategy[] strategies;
+ uint64[] newMagnitudes;
+}
+
+/**
+ * @notice Modifies the proportions of slashable stake allocated to an operator set from a list of strategies
+ * Note that deallocations remain slashable for DEALLOCATION_DELAY blocks therefore when they are cleared they may
+ * free up less allocatable magnitude than initially deallocated.
+ * @param operator the operator to modify allocations for
+ * @param params array of magnitude adjustments for one or more operator sets
+ * @dev Updates encumberedMagnitude for the updated strategies
+ */
+function modifyAllocations(
+ address operator,
+ AllocateParams[] calldata params
+)
+ external
+ onlyWhenNotPaused(PAUSED_MODIFY_ALLOCATIONS)
+```
+
+_Note: this method can be called directly by an operator, or by a caller authorized by the operator. See [`PermissionController.md`](../permissions/PermissionController.md) for details._
+
+This function is called by an operator to EITHER increase OR decrease the slashable magnitude allocated from a strategy to an operator set. As input, the operator provides an operator set as the target, and a list of strategies and corresponding `newMagnitudes` to allocate. The `newMagnitude` value is compared against the operator's current `Allocation` for that operator set/strategy:
+* If `newMagnitude` is _greater than_ `Allocation.currentMagnitude`, this is an allocation
+* If `newMagnitude` is _less than_ `Allocation.currentMagnitude`, this is a dellocation
+* If `newMagnitude` is _equal to_ `Allocation.currentMagnitude`, this is invalid (revert)
+
+Allocation modifications play by different rules depending on a few factors. Recall that at all times, the `encumberedMagnitude` for a strategy may not exceed that strategy's `maxMagnitude`. Additionally, note that _before processing a modification for a strategy,_ the `deallocationQueue` for that strategy is first cleared. This ensures any completable deallocations are processed first, freeing up magnitude for allocation. This process is further explained in [`clearDeallocationQueue`](#cleardeallocationqueue).
+
+Finally, `modifyAllocations` does NOT require an allocation to consider whether its corresponding strategy is relevant to the operator set in question. This is primarily to cut down on complexity. Because [`removeStrategiesFromOperatorSet`](#removestrategiesfromoperatorset) always allows an AVS to _remove_ strategies from consideration, we always need to be sure an operator can initiate a _deallocation_ for such strategies. Although there's not a clear usecase for _allocating_ when a strategy is not included in an operator set, we elected not to check for this. It's possible some AVSs may announce a strategy is being added ahead of time specifically to encourage allocations in advance. **It is expected behavior** that an AVS adding a strategy to an operator set makes any existing allocations to that strategy instantly slashable.
+
+**If we are handling an _increase in magnitude_ (allocation):**
+
+* The increase in magnitude is immediately added to the strategy's `encumberedMagnitude`. This ensures that subsequent _allocations to other operator sets from the same strategy_ will not go above the strategy's `maxMagnitude`.
+* The `allocation.pendingDiff` is set, with an `allocation.effectBlock` equal to the current block plus the operator's configured allocation delay.
+
+**If we are handling a _decrease in magnitude_ (deallocation):**
+
+First, evaluate whether the operator's _existing allocation is currently slashable_ by the AVS. This is important because the AVS might be using the existing allocation to secure a task given to this operator. See [Evaluating Whether an Allocation is "Slashable"](#evaluating-whether-an-allocation-is-slashable) for details.
+
+Next, _if the existing allocation IS slashable_:
+
+* The `allocation.pendingDiff` is set, with an `allocation.effectBlock` equal to the current block plus `DEALLOCATION_DELAY + 1`. This means the existing allocation _remains slashable_ for `DEALLOCATION_DELAY` blocks.
+* The _operator set_ is pushed to the operator's `deallocationQueue` for that strategy, denoting that there is a pending deallocation for this `(operatorSet, strategy)`. This is an ordered queue that enforces deallocations are processed sequentially and is used both in this method and in [`clearDeallocationQueue`](#cleardeallocationqueue).
+
+Finally, _if the existing allocation IS NOT slashable_, the deallocated amount is immediately **freed**. It is subtracted from the strategy's encumbered magnitude and can be used for subsequent allocations. This is the only type of update that does not result in a "pending modification." The rationale here is that if the existing allocation is not slashable, the AVS does not need it to secure tasks, and therefore does not need to enforce a deallocation delay.
+
+*Effects*:
+* For each `AllocateParams` element:
+ * Complete any existing deallocations (See [`clearDeallocationQueue`](#cleardeallocationqueue))
+ * Update the operator's `encumberedMagnitude`, `allocations`, and `deallocationQueue` according to the rules described above. Additionally:
+ * If `encumberedMagnitude` is updated, emits `EncumberedMagnitudeUpdated`
+ * If a pending modification is created:
+ * Adds the `strategy` to `allocatedStrategies[operator][operatorSetKey]` (if not present)
+ * Adds the `operatorSetKey` to `allocatedSets[operator]` (if not present)
+ * If the allocation now has a `currentMagnitude` of 0:
+ * Removes `strategy` from the `allocatedStrategies[operator][operatorSetKey]` list
+ * If this list now has a length of 0, remove `operatorSetKey` from `allocatedSets[operator]`
+ * Emits an `AllocationUpdated` event
+
+*Requirements*:
+* Pause status MUST NOT be set: `PAUSED_MODIFY_ALLOCATIONS`
+* Caller MUST be authorized, either as the operator themselves or an admin/appointee (see [`PermissionController.md`](../permissions/PermissionController.md))
+* Operator MUST have already set an allocation delay (See [`setAllocationDelay`](#setallocationdelay))
+* For each `AllocationParams` element:
+ * Provided strategies MUST be of equal length to provided magnitudes for a given `AllocateParams` object
+ * Operator set MUST exist for each specified AVS
+ * Operator MUST NOT have pending, non-completable modifications for any given strategy
+ * New magnitudes MUST NOT match existing ones
+ * New encumbered magnitude MUST NOT exceed the operator's max magnitude for the given strategy
+
+#### `clearDeallocationQueue`
+
+```solidity
+/**
+ * @notice This function takes a list of strategies and for each strategy, removes from the deallocationQueue
+ * all clearable deallocations up to max `numToClear` number of deallocations, updating the encumberedMagnitude
+ * of the operator as needed.
+ *
+ * @param operator address to clear deallocations for
+ * @param strategies a list of strategies to clear deallocations for
+ * @param numToClear a list of number of pending deallocations to clear for each strategy
+ *
+ * @dev can be called permissionlessly by anyone
+ */
+function clearDeallocationQueue(
+ address operator,
+ IStrategy[] calldata strategies,
+ uint16[] calldata numToClear
+)
+ external
+ onlyWhenNotPaused(PAUSED_MODIFY_ALLOCATIONS)
+```
+
+This function is used to complete any eligible pending deallocations for an operator. The function takes an operator, a list of strategies, and a corresponding number of pending deallocations to complete.
+
+Clearing pending deallocations plays an important role in [`modifyAllocations`](#modifyallocations), as completable deallocations represent magnitude that can be freed for re-allocation to a different operator set. This method exists as a convenience for operators that want to complete pending deallocations as a standalone operation. However, `modifyAllocations` will _automatically_ clear any eligible deallocations when processing an allocation modification for a given strategy.
+
+For each strategy, the method iterates over `deallocationQueue[operator][strategy]`:
+
+```solidity
+/// @dev For a strategy, keeps an ordered queue of operator sets that have pending deallocations
+/// These must be completed in order to free up magnitude for future allocation
+mapping(address operator => mapping(IStrategy strategy => DoubleEndedQueue.Bytes32Deque)) internal deallocationQueue;
+```
+
+This queue contains a per-strategy ordered list of operator sets that, due to prior calls by the `operator` to `modifyAllocations`, have a pending decrease in slashable magnitude. For each operator set in the queue, the corresponding allocation for that operator set is evaluated. If its `effectBlock` has been reached, the deallocation is completed, freeing up the deallocated magnitude by subtracting it from `encumberedMagnitude[operator][strategy]`. The corresponding entry is then popped from the front of the queue.
+
+This method stops iterating when: the queue is empty, a deallocation is reached that cannot be completed yet, or when it has cleared `numToClear` entries from the queue.
+
+*Effects*:
+* For each `strategy` and _completeable_ deallocation in `deallocationQueue[operator][strategy]`:
+ * Pops the corresponding operator set from the `deallocationQueue`
+ * Reduces `allocation.currentMagnitude` by the deallocated amount
+ * Sets `allocation.pendingDiff` and `allocation.effectBlock` to 0
+ * Adds the deallocated amount to the strategy's `encumberedMagnitude`
+ * Emits `EncumberedMagnitudeUpdated`
+ * Additionally, if the deallocation leaves `allocation.currentMagnitude` equal to zero:
+ * Removes `strategy` from the `allocatedStrategies[operator][operatorSetKey]` list
+ * If this list now has a length of 0, remove `operatorSetKey` from `allocatedSets[operator]`
+
+*Requirements*:
+* Pause status MUST NOT be set: `PAUSED_MODIFY_ALLOCATIONS`
+* Strategy list MUST be equal length of `numToClear` list
+
+#### `slashOperator`
+
+```solidity
+/**
+ * @notice Struct containing parameters to slashing
+ * @param operator the address to slash
+ * @param operatorSetId the ID of the operatorSet the operator is being slashed on behalf of
+ * @param strategies the set of strategies to slash
+ * @param wadsToSlash the parts in 1e18 to slash, this will be proportional to the operator's
+ * slashable stake allocation for the operatorSet
+ * @param description the description of the slashing provided by the AVS for legibility
+ */
+struct SlashingParams {
+ address operator;
+ uint32 operatorSetId;
+ IStrategy[] strategies;
+ uint256[] wadsToSlash;
+ string description;
+}
+
+/**
+ * @notice Called by an AVS to slash an operator in a given operator set
+ */
+function slashOperator(
+ address avs,
+ SlashingParams calldata params
+)
+ external
+ onlyWhenNotPaused(PAUSED_OPERATOR_SLASHING)
+ checkCanCall(avs)
+```
+
+_Note: this method can be called directly by an AVS, or by a caller authorized by the AVS. See [`PermissionController.md`](../permissions/PermissionController.md) for details._
+
+AVSs use slashing as a punitive disincentive for misbehavior. For details and examples of how slashing works, see [ELIP-002#Slashing of Unique Stake](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md#slashing-of-unique-stake). Note that whatever slashing criteria an AVS decides on, the only criteria enforced by the `AllocationManager` are those detailed above (see [Evaluating Whether an Allocation is "Slashable"](#evaluating-whether-an-allocation-is-slashable)).
+
+In order to slash an eligible operator, the AVS specifies which operator set the operator belongs to, the `strategies` the operator should be slashed for, and for each strategy, the _proportion of the operator's allocated magnitude_ that should be slashed (given by `wadsToSlash`). An optional `description` string allows the AVS to add context to the slash.
+
+Once triggered in the `AllocationManager`, slashing is instant and irreversable. For each slashed strategy, the operator's `maxMagnitude` and `encumberedMagnitude` are decreased, and the allocation made to the given operator set has its `currentMagnitude` reduced. See [TODO - Accounting Doc]() for details on how slashed amounts are calculated.
+
+There are two edge cases to note for this method:
+1. In the process of slashing an `operator` for a given `strategy`, if the `Allocation` being slashed has a `currentMagnitude` of 0, the call will NOT revert. Instead, the `strategy` is skipped and slashing continues with the next `strategy` listed. This is to prevent an edge case where slashing occurs on or around a deallocation's `effectBlock` -- if the call reverted, the entire slash would fail. Skipping allows any valid slashes to be processed without requiring resubmission.
+2. If the `operator` has a pending, non-completable deallocation, the deallocation's `pendingDiff` is reduced proportional to the slash. This ensures that when the deallocation is completed, less `encumberedMagnitude` is freed.
+
+Once slashing is processed for a strategy, [slashed stake is burned via the `DelegationManager`](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md#burning-of-slashed-funds).
+
+*Effects*:
+* Given an `operator` and `operatorSet`, then for each `params.strategies` element and its corresponding `allocation`:
+ * Calculates magnitude to slash by multiplying current magnitude by the provided `wadsToSlash`
+ * Reduce `allocation.currentMagnitude` by the slashed magnitude
+ * Emit an `AllocationUpdated` event
+ * Reduce the operator's `encumberedMagnitude` for this strategy by the slashed magnitude
+ * Emit an `EncumberedMagnitudeUpdated` event
+ * Push an entry to the operator's `maxMagnitudeHistory`, reducing their `maxMagnitude` by the slashed magnitude
+ * Emit a `MaxMagnitudeUpdated` event
+ * If the `allocation` has a pending, non-completable deallocation, additionally reduce `allocation.pendingDiff` by the same proportion and emit an `AllocationUpdated` event
+ * If the `allocation` now has a `currentMagnitude` of 0:
+ * Removes `strategy` from the `allocatedStrategies[operator][operatorSetKey]` list
+ * If this list now has a length of 0, remove `operatorSetKey` from `allocatedSets[operator]`
+ * Calls [`DelegationManager.slashOperatorShares`](./DelegationManager.md#slashoperatorshares)
+* Emit an `OperatorSlashed` event
+
+*Requirements*:
+* Pause status MUST NOT be set: `PAUSED_OPERATOR_SLASHING`
+* Caller MUST be authorized, either as the AVS itself or an admin/appointee (see [`PermissionController.md`](../permissions/PermissionController.md))
+* Operator set MUST be registered for the AVS
+* Operator MUST BE slashable, i.e.:
+ * Operator is registered for the operator set, *OR*
+ * The operator's `DEALLOCATION_DELAY` has not yet completed
+* `params.strategies` MUST be in ascending order (to ensure no duplicates)
+* `params.strategies.length` MUST be equal to `params.wadsToSlash.length`
+* For each `params.strategies` element:
+ * `wadsToSlash` MUST be within the bounds `(0, 1e18]`
+ * Operator set MUST contain the strategy
+
+---
+
+## Config
+
+**Methods:**
+* [`setAllocationDelay`](#setallocationdelay)
+* [`setAVSRegistrar`](#setavsregistrar)
+* [`updateAVSMetadataURI`](#updateavsmetadatauri)
+
+#### `setAllocationDelay`
+
+```solidity
+/**
+ * @notice Called by the delegation manager OR an operator to set an operator's allocation delay.
+ * This is set when the operator first registers, and is the number of blocks between an operator
+ * allocating magnitude to an operator set, and the magnitude becoming slashable.
+ * @param operator The operator to set the delay on behalf of.
+ * @param delay the allocation delay in blocks
+ */
+function setAllocationDelay(
+ address operator,
+ uint32 delay
+)
+ external
+```
+
+_Note: IF NOT CALLED BY THE `DelegationManager`, this method can be called directly by an operator, or by a caller authorized by the operator. See [`PermissionController.md`](../permissions/PermissionController.md) for details._
+
+This function sets an operator's allocation delay, in blocks. This delay can be updated by the operator once set. Both the initial setting of this value and any further updates _take `ALLOCATION_CONFIGURATION_DELAY` blocks_ to take effect. Because having a delay is a requirement to allocating slashable stake, this effectively means that once the slashing release goes live, no one will be able to allocate slashable stake for at least `ALLOCATION_CONFIGURATION_DELAY` blocks.
+
+The `DelegationManager` calls this upon operator registration for all new operators created after the slashing release. For operators that existed in the `DelegationManager` _prior_ to the slashing release, **they will need to call this method to configure an allocation delay prior to allocating slashable stake to any AVS**.
+
+The allocation delay's primary purpose is to give stakers delegated to an operator the chance to withdraw their stake before the operator can change the risk profile to something they're not comfortable with. However, operators can choose to configure this delay however they want - including setting it to 0.
+
+*Effects*:
+* Sets the operator's `pendingDelay` to the proposed `delay`, and save the `effectBlock` at which the `pendingDelay` can be activated
+ * `effectBlock = uint32(block.number) + ALLOCATION_CONFIGURATION_DELAY`
+* If the operator has a `pendingDelay`, and if the `effectBlock` has passed, sets the operator's `delay` to the `pendingDelay` value
+ * This also sets the `isSet` boolean to `true` to indicate that the operator's `delay`, even if 0, was set intentionally
+* Emits an `AllocationDelaySet` event
+
+*Requirements*:
+* Caller MUST BE either the DelegationManager, or a registered operator
+ * An admin and/or appointee for the operator can also call this function (see [`PermissionController.md`](../permissions/PermissionController.md))
+
+#### `setAVSRegistrar`
+
+```solidity
+/**
+ * @notice Called by an AVS to configure the address that is called when an operator registers
+ * or is deregistered from the AVS's operator sets. If not set (or set to 0), defaults
+ * to the AVS's address.
+ * @param registrar the new registrar address
+ */
+function setAVSRegistrar(
+ address avs,
+ IAVSRegistrar registrar
+)
+ external
+ checkCanCall(avs)
+```
+
+_Note: this method can be called directly by an AVS, or by a caller authorized by the AVS. See [`PermissionController.md`](../permissions/PermissionController.md) for details._
+
+Sets the `registrar` for a given `avs`. Note that if the registrar is set to 0, `getAVSRegistrar` will return the AVS's address.
+
+The avs registrar is called when operators register to or deregister from an operator set. From [`IAVSRegistrar.sol`](../../src/contracts/interfaces/IAVSRegistrar.sol), the avs registrar should use the following interface:
+
+```solidity
+interface IAVSRegistrar {
+ /**
+ * @notice Called by the AllocationManager when an operator wants to register
+ * for one or more operator sets. This method should revert if registration
+ * is unsuccessful.
+ * @param operator the registering operator
+ * @param operatorSetIds the list of operator set ids being registered for
+ * @param data arbitrary data the operator can provide as part of registration
+ */
+ function registerOperator(address operator, uint32[] calldata operatorSetIds, bytes calldata data) external;
+
+ /**
+ * @notice Called by the AllocationManager when an operator is deregistered from
+ * one or more operator sets. If this method reverts, it is ignored.
+ * @param operator the deregistering operator
+ * @param operatorSetIds the list of operator set ids being deregistered from
+ */
+ function deregisterOperator(address operator, uint32[] calldata operatorSetIds) external;
+}
+```
+
+Note that when an operator registers, registration will FAIL if the call to `IAVSRegistrar` reverts. However, when an operator deregisters, a revert in `deregisterOperator` is ignored.
+
+*Effects*:
+* Sets `_avsRegistrar[avs]` to `registrar`
+* Emits an `AVSRegistrarSet` event
+
+*Requirements*:
+* Caller MUST be authorized, either as the AVS itself or an admin/appointee (see [`PermissionController.md`](../permissions/PermissionController.md))
+
+#### `updateAVSMetadataURI`
+
+```solidity
+/**
+ * @notice Called by an AVS to emit an `AVSMetadataURIUpdated` event indicating the information has updated.
+ *
+ * @param metadataURI The URI for metadata associated with an AVS.
+ *
+ * @dev Note that the `metadataURI` is *never stored* and is only emitted in the `AVSMetadataURIUpdated` event.
+ */
+function updateAVSMetadataURI(
+ address avs,
+ string calldata metadataURI
+)
+ external
+ checkCanCall(avs)
+```
+
+_Note: this method can be called directly by an AVS, or by a caller authorized by the AVS. See [`PermissionController.md`](../permissions/PermissionController.md) for details._
+
+Below is the format AVSs should use when updating their metadata URI. This is not validated onchain.
+
+```json
+{
+ "name": "AVS",
+ "website": "https.avs.xyz/",
+ "description": "Some description about",
+ "logo": "http://github.com/logo.png",
+ "twitter": "https://twitter.com/avs",
+ "operatorSets": [
+ {
+ "name": "ETH Set",
+ "id": "1", // Note: we use this param to match the opSet id in the Allocation Manager
+ "description": "The ETH operatorSet for AVS",
+ "software": [
+ {
+ "name": "NetworkMonitor",
+ "description": "",
+ "url": "https://link-to-binary-or-github.com"
+ },
+ {
+ "name": "ValidatorClient",
+ "description": "",
+ "url": "https://link-to-binary-or-github.com"
+ }
+ ],
+ "slashingConditions": ["Condition A", "Condition B"]
+ },
+ {
+ "name": "EIGEN Set",
+ "id": "2", // Note: we use this param to match the opSet id in the Allocation Manager
+ "description": "The EIGEN operatorSet for AVS",
+ "software": [
+ {
+ "name": "NetworkMonitor",
+ "description": "",
+ "url": "https://link-to-binary-or-github.com"
+ },
+ {
+ "name": "ValidatorClient",
+ "description": "",
+ "url": "https://link-to-binary-or-github.com"
+ }
+ ],
+ "slashingConditions": ["Condition A", "Condition B"]
+ }
+ ]
+}
+```
+
+*Effects*:
+* Emits an `AVSMetadataURIUpdated` event for use in offchain services
+
+*Requirements*:
+* Caller MUST be authorized, either as the AVS itself or an admin/appointee (see [`PermissionController.md`](../permissions/PermissionController.md))
\ No newline at end of file
diff --git a/docs/core/DelegationManager.md b/docs/core/DelegationManager.md
index 8569deae45..11da3e186f 100644
--- a/docs/core/DelegationManager.md
+++ b/docs/core/DelegationManager.md
@@ -1,57 +1,74 @@
## DelegationManager
-| File | Type | Proxy |
-| -------- | -------- | -------- |
-| [`DelegationManager.sol`](../../src/contracts/core/DelegationManager.sol) | Singleton | Transparent proxy |
+| File | Notes |
+| -------- | -------- |
+| [`DelegationManager.sol`](../../src/contracts/core/DelegationManager.sol) | |
+| [`DelegationManagerStorage.sol`](../../src/contracts/core/DelegationManagerStorage.sol) | state variables |
+| [`IDelegationManager.sol`](../../src/contracts/interfaces/IDelegationManager.sol) | interface |
-The primary functions of the `DelegationManager` are (i) to allow Stakers to delegate to Operators, (ii) allow Stakers to be undelegated from Operators, and (iii) handle withdrawals and withdrawal processing for shares in both the `StrategyManager` and `EigenPodManager`.
+Libraries and Mixins:
-Whereas the `EigenPodManager` and `StrategyManager` perform accounting for individual Stakers according to their native ETH or LST holdings respectively, the `DelegationManager` sits between these two contracts and tracks these accounting changes according to the Operators each Staker has delegated to.
+| File | Notes |
+| -------- | -------- |
+| [`PermissionControllerMixin.sol`](../../src/contracts/mixins/PermissionControllerMixin.sol) | account delegation |
+| [`SignatureUtils.sol`](../../src/contracts/mixins/SignatureUtils.sol) | signature validation |
+| [`Pausable.sol`](../../src/contracts/permissions/Pausable.sol) | |
+| [`SlashingLib.sol`](../../src/contracts/libraries/SlashingLib.sol) | slashing math |
+| [`Snapshots.sol`](../../src/contracts/libraries/Snapshots.sol) | historical state |
-This means that each time a Staker's balance changes in either the `EigenPodManager` or `StrategyManager`, the `DelegationManager` is called to record this update to the Staker's delegated Operator (if they have one). For example, if a Staker is delegated to an Operator and deposits into a strategy, the `StrategyManager` will call the `DelegationManager` to update the Operator's delegated shares for that strategy.
+## Prior Reading
-Additionally, whether a Staker is delegated to an Operator or not, the `DelegationManager` is how a Staker queues (and later completes) a withdrawal.
+* [ELIP-002: Slashing via Unique Stake and Operator Sets](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md)
+* [Shares Accounting](./accounting/SharesAccounting.md)
-#### High-level Concepts
+## Overview
-This document organizes methods according to the following themes (click each to be taken to the relevant section):
+The `DelegationManager` is the intersection between the two sides of the protocol. It (i) allows stakers to delegate/undelegate to/from operators, (ii) handles withdrawals and withdrawal processing for assets in both the `StrategyManager` and `EigenPodManager`, and (iii) manages accounting around slashing for stakers and operators.
+
+When operators are slashed by AVSs, it receives share burning directives from the `AllocationManager`. When stakers deposit assets using the `StrategyManager/EigenPodManager`, it tracks share/delegation accounting changes. The `DelegationManager` combines inputs from both sides of the protocol into a staker's "deposit scaling factor," which serves as the primary conversion vehicle between a staker's _raw deposited assets_ and the _amount they can withdraw_.
+
+The `DelegationManager's` responsibilities can be broken down into the following concepts:
* [Becoming an Operator](#becoming-an-operator)
-* [Delegating to an Operator](#delegating-to-an-operator)
-* [Undelegating and Withdrawing](#undelegating-and-withdrawing)
-* [Accounting](#accounting)
-* [System Configuration](#system-configuration)
-
-#### Important state variables
-
-* `mapping(address => address) public delegatedTo`: Staker => Operator.
- * If a Staker is not delegated to anyone, `delegatedTo` is unset.
- * Operators are delegated to themselves - `delegatedTo[operator] == operator`
-* `mapping(address => mapping(IStrategy => uint256)) public operatorShares`: Tracks the current balance of shares an Operator is delegated according to each strategy. Updated by both the `StrategyManager` and `EigenPodManager` when a Staker's delegatable balance changes.
- * Because Operators are delegated to themselves, an Operator's own restaked assets are reflected in these balances.
- * A similar mapping exists in the `StrategyManager`, but the `DelegationManager` additionally tracks beacon chain ETH delegated via the `EigenPodManager`. The "beacon chain ETH" strategy gets its own special address for this mapping: `0xbeaC0eeEeeeeEEeEeEEEEeeEEeEeeeEeeEEBEaC0`.
-* `uint256 public minWithdrawalDelayBlocks`:
- * As of M2, this is 50400 (roughly 1 week)
- * For all strategies including native beacon chain ETH, Stakers at minimum must wait this amount of time before a withdrawal can be completed.
- To withdraw a specific strategy, it may require additional time depending on the strategy's withdrawal delay. See `strategyWithdrawalDelayBlocks` below.
-* `mapping(IStrategy => uint256) public strategyWithdrawalDelayBlocks`:
- * This mapping tracks the withdrawal delay for each strategy. This mapping value only comes into affect
- if `strategyWithdrawalDelayBlocks[strategy] > minWithdrawalDelayBlocks`. Otherwise, `minWithdrawalDelayBlocks` is used.
-* `mapping(bytes32 => bool) public pendingWithdrawals;`:
- * `Withdrawals` are hashed and set to `true` in this mapping when a withdrawal is initiated. The hash is set to false again when the withdrawal is completed. A per-staker nonce provides a way to distinguish multiple otherwise-identical withdrawals.
-
-#### Helpful definitions
-
-* `isDelegated(address staker) -> (bool)`
- * True if `delegatedTo[staker] != address(0)`
-* `isOperator(address operator) -> (bool)`
- * True if `delegatedTo[operator] == operator`
+* [Delegation and Withdrawals](#delegation-and-withdrawals)
+* [Slashing and Accounting](#slashing-and-accounting)
+
+## Parameterization
+
+* `MIN_WITHDRAWAL_DELAY_BLOCKS`: The delay in blocks before withdrawals can be completed.
+ * Mainnet: `100800 blocks` (14 days).
+ * Testnet: `50 blocks` (10 minutes).
+* `beaconChainETHStrategy`: a pseudo strategy used to represent beacon chain ETH internally. This is not a real contract!
+ * Value: `0xbeaC0eeEeeeeEEeEeEEEEeeEEeEeeeEeeEEBEaC0`
---
-### Becoming an Operator
+## Becoming an Operator
-Operators interact with the following functions to become an Operator:
+The `DelegationManager` tracks operator-related state in the following mappings:
+```solidity
+/// @notice Returns the `operator` a `staker` is delgated to, or address(0) if not delegated.
+/// Note: operators are delegated to themselves
+mapping(address staker => address operator) public delegatedTo;
+
+/// @notice Returns the operator details for a given `operator`.
+/// Note: two of the `OperatorDetails` fields are deprecated. The only relevant field
+/// is `OperatorDetails.delegationApprover`.
+mapping(address operator => OperatorDetails) internal _operatorDetails;
+
+/**
+ * @notice Tracks the current balance of shares an `operator` is delegated according to each `strategy`.
+ * Updated by both the `StrategyManager` and `EigenPodManager` when a staker's delegatable balance changes,
+ * and by the `AllocationManager` when the `operator` is slashed.
+ *
+ * @dev The following invariant should hold for each `strategy`:
+ *
+ * operatorShares[operator] = sum(withdrawable shares of all stakers delegated to operator)
+ */
+mapping(address operator => mapping(IStrategy strategy => uint256 shares)) public operatorShares;
+```
+
+**Methods**:
* [`DelegationManager.registerAsOperator`](#registerasoperator)
* [`DelegationManager.modifyOperatorDetails`](#modifyoperatordetails)
* [`DelegationManager.updateOperatorMetadataURI`](#updateoperatormetadatauri)
@@ -59,64 +76,256 @@ Operators interact with the following functions to become an Operator:
#### `registerAsOperator`
```solidity
-function registerAsOperator(OperatorDetails calldata registeringOperatorDetails, string calldata metadataURI) external
+/**
+ * @notice Registers the caller as an operator in EigenLayer.
+ * @param initDelegationApprover is an address that, if set, must provide a signature when stakers delegate
+ * to an operator.
+ * @param allocationDelay The delay before allocations take effect.
+ * @param metadataURI is a URI for the operator's metadata, i.e. a link providing more details on the operator.
+ *
+ * @dev Once an operator is registered, they cannot 'deregister' as an operator, and they will forever be considered "delegated to themself".
+ * @dev This function will revert if the caller is already delegated to an operator.
+ * @dev Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event
+ */
+function registerAsOperator(
+ address initDelegationApprover,
+ uint32 allocationDelay,
+ string calldata metadataURI
+) external;
```
-Registers the caller as an Operator in EigenLayer. The new Operator provides the `OperatorDetails`, a struct containing:
-* `address __deprecated_earningsReceiver`: Currently deprecated address slot that may be reused in the future for a different purpose. *(currently unused)*
-* `address delegationApprover`: if set, this address must sign and approve new delegation from Stakers to this Operator *(optional)*
-* `uint32 stakerOptOutWindowBlocks`: the minimum delay (in blocks) between beginning and completing registration for an AVS. *(currently unused)*
+Registers the caller as an operator in EigenLayer. The new operator provides the following input parameters:
+* `address initDelegationApprover`: *(OPTIONAL)* if set to a non-zero address, this address must sign and approve new delegation from stakers to this operator (See [`delegateTo`](#delegateto))
+* `uint32 allocationDelay`: the delay (in blocks) before slashable stake allocations will take effect. This is passed to the `AllocationManager` (See [`AllocationManager.md#setAllocationDelay`](./AllocationManager.md#setallocationdelay))
+* `string calldata metadataURI`: emits this input in the event `OperatorMetadataURIUpdated`. Does not store the value anywhere.
-`registerAsOperator` cements the Operator's `OperatorDetails`, and self-delegates the Operator to themselves - permanently marking the caller as an Operator. They cannot "deregister" as an Operator - however, they can exit the system by withdrawing their funds via `queueWithdrawals`.
+`registerAsOperator` cements the operator's delegation approver and allocation delay in storage, and self-delegates the operator to themselves - permanently marking the caller as an operator. They cannot "deregister" as an operator - however, if they have deposited funds, they can still withdraw them (See [Delegation and Withdrawals](#delegation-and-withdrawals)).
*Effects*:
-* Sets `OperatorDetails` for the Operator in question
-* Delegates the Operator to itself
-* If the Operator has shares in the `EigenPodManager`, the `DelegationManager` adds these shares to the Operator's shares for the beacon chain ETH strategy.
-* For each of the strategies in the `StrategyManager`, if the Operator holds shares in that strategy they are added to the Operator's shares under the corresponding strategy.
+* Sets `_operatorDetails[operator].delegationApprover`. Note that the other `OperatorDetails` fields are deprecated; only the `delegationApprover` is used.
+* Delegates the operator to themselves
+ * Tabulates any deposited shares across the `EigenPodManager` and `StrategyManager`, and delegates these shares to themselves
+ * For each strategy in which the operator holds assets, updates the operator's `depositScalingFactor` for that strategy
*Requirements*:
-* Caller MUST NOT already be an Operator
-* Caller MUST NOT already be delegated to an Operator
-* `stakerOptOutWindowBlocks <= MAX_STAKER_OPT_OUT_WINDOW_BLOCKS`: (~180 days)
+* Caller MUST NOT already be delegated
* Pause status MUST NOT be set: `PAUSED_NEW_DELEGATION`
+* For each strategy in which the operator holds assets, their `slashingFactor` for that strategy MUST be non-zero.
#### `modifyOperatorDetails`
```solidity
-function modifyOperatorDetails(OperatorDetails calldata newOperatorDetails) external
+/**
+ * @notice Updates an operator's stored `delegationApprover`.
+ * @param operator is the operator to update the delegationApprover for
+ * @param newDelegationApprover is the new delegationApprover for the operator
+ *
+ * @dev The caller must have previously registered as an operator in EigenLayer.
+ */
+function modifyOperatorDetails(
+ address operator,
+ address newDelegationApprover
+)
+ external
+ checkCanCall(operator)
```
-Allows an Operator to update their stored `OperatorDetails`.
+_Note: this method can be called directly by an operator, or by a caller authorized by the operator. See [`PermissionController.md`](../permissions/PermissionController.md) for details._
+
+Allows an operator to update their stored `delegationApprover`.
*Requirements*:
-* Caller MUST already be an Operator
-* `new stakerOptOutWindowBlocks >= old stakerOptOutWindowBlocks`
-* `new stakerOptOutWindowBlocks <= MAX_STAKER_OPT_OUT_WINDOW_BLOCKS`
+* `address operator` MUST already be an operator.
+* Caller MUST be authorized: either the operator themselves, or an admin/appointee (see [`PermissionController.md`](../permissions/PermissionController.md))
#### `updateOperatorMetadataURI`
```solidity
-function updateOperatorMetadataURI(string calldata metadataURI) external
+/**
+ * @notice Called by an operator to emit an `OperatorMetadataURIUpdated` event indicating the information has updated.
+ * @param operator The operator to update metadata for
+ * @param metadataURI The URI for metadata associated with an operator
+ * @dev Note that the `metadataURI` is *never stored * and is only emitted in the `OperatorMetadataURIUpdated` event
+ */
+function updateOperatorMetadataURI(
+ address operator,
+ string calldata metadataURI
+)
+ external
+ checkCanCall(operator)
```
-Allows an Operator to emit an `OperatorMetadataURIUpdated` event. No other state changes occur.
+_Note: this method can be called directly by an operator, or by a caller authorized by the operator. See [`PermissionController.md`](../permissions/PermissionController.md) for details._
+
+Allows an operator to emit an `OperatorMetadataURIUpdated` event. No other state changes occur.
*Requirements*:
-* Caller MUST already be an Operator
+* `address operator` MUST already be an operator.
+* Caller MUST be authorized: either the operator themselves, or an admin/appointee (see [`PermissionController.md`](../permissions/PermissionController.md))
---
-### Delegating to an Operator
+## Delegation and Withdrawals
-Stakers interact with the following functions to delegate their shares to an Operator:
+**Concepts**:
+* [Shares Accounting](./accounting/SharesAccounting.md)
+* [Legacy and Post-Slashing Withdrawals](#legacy-and-post-slashing-withdrawals)
+* [Slashing Factors and Scaling Shares](#slashing-factors-and-scaling-shares)
+**Methods**:
* [`DelegationManager.delegateTo`](#delegateto)
-* [`DelegationManager.delegateToBySignature`](#delegatetobysignature)
+* [`DelegationManager.undelegate`](#undelegate)
+* [`DelegationManager.redelegate`](#redelegate)
+* [`DelegationManager.queueWithdrawals`](#queuewithdrawals)
+* [`DelegationManager.completeQueuedWithdrawal`](#completequeuedwithdrawal)
+* [`DelegationManager.completeQueuedWithdrawals`](#completequeuedwithdrawals)
+
+#### Legacy and Post-Slashing Withdrawals
+
+The `DelegationManager` tracks withdrawal-related state in the following mappings:
+
+```solidity
+/**
+ * @dev A struct representing an existing queued withdrawal. After the withdrawal delay has elapsed, this withdrawal can be completed via `completeQueuedWithdrawal`.
+ * A `Withdrawal` is created by the `DelegationManager` when `queueWithdrawals` is called. The `withdrawalRoots` hashes returned by `queueWithdrawals` can be used
+ * to fetch the corresponding `Withdrawal` from storage (via `queuedWithdrawals`).
+ *
+ * @param staker The address that queued the withdrawal
+ * @param delegatedTo The address that the staker was delegated to at the time the withdrawal was queued. Used to determine if additional slashing occurred before
+ * this withdrawal became completeable.
+ * @param withdrawer The address that will call the contract to complete the withdrawal. Note that this will always equal `staker`; alternate withdrawers are not
+ * supported at this time.
+ * @param nonce The staker's `cumulativeWithdrawalsQueued` at time of queuing. Used to ensure withdrawals have unique hashes.
+ * @param startBlock The block number when the withdrawal was queued.
+ * @param strategies The strategies requested for withdrawal when the withdrawal was queued
+ * @param scaledShares The staker's deposit shares requested for withdrawal, scaled by the staker's `depositScalingFactor`. Upon completion, these will be
+ * scaled by the appropriate slashing factor as of the withdrawal's completable block. The result is what is actually withdrawable.
+ */
+struct Withdrawal {
+ address staker;
+ address delegatedTo;
+ address withdrawer;
+ uint256 nonce;
+ uint32 startBlock;
+ IStrategy[] strategies;
+ uint256[] scaledShares;
+}
+
+/// @dev Returns whether a withdrawal is pending for a given `withdrawalRoot`.
+/// @dev This variable will be deprecated in the future, values should only be read or deleted.
+mapping(bytes32 withdrawalRoot => bool pending) public pendingWithdrawals;
+
+/// @notice Returns the total number of withdrawals that have been queued for a given `staker`.
+/// @dev This only increments (doesn't decrement), and is used to help ensure that otherwise identical withdrawals have unique hashes.
+mapping(address staker => uint256 totalQueued) public cumulativeWithdrawalsQueued;
+
+/// @notice Returns a list of queued withdrawals for a given `staker`.
+/// @dev Entries are removed when the withdrawal is completed.
+/// @dev This variable only reflects withdrawals that were made after the slashing release.
+mapping(address staker => EnumerableSet.Bytes32Set withdrawalRoots) internal _stakerQueuedWithdrawalRoots;
+
+/// @notice Returns the details of a queued withdrawal given by `withdrawalRoot`.
+/// @dev This variable only reflects withdrawals that were made after the slashing release.
+mapping(bytes32 withdrawalRoot => Withdrawal withdrawal) public queuedWithdrawals;
+
+/// @notice Contains history of the total cumulative staker withdrawals for an operator and a given strategy.
+/// Used to calculate burned StrategyManager shares when an operator is slashed.
+/// @dev Stores scaledShares instead of total withdrawn shares to track current slashable shares, dependent on the maxMagnitude
+mapping(address operator => mapping(IStrategy strategy => Snapshots.DefaultZeroHistory)) internal
+ _cumulativeScaledSharesHistory;
+```
+
+Prior to the slashing release, withdrawals were only stored as hashes in the `pendingWithdrawals` mapping.
+
+With the slashing release, withdrawals are now stored entirely in state, and two new mappings have been added to support this:
+* `_stakedQueuedWithdrawalRoots`: a list of all the currently-queued withdrawal hashes belonging to a staker
+* `queuedWithdrawals`: maps queued withdrawal hash to `Withdrawal` struct
+
+Legacy withdrawals remain completable using the same methods as new withdrawals. The primary difference between the two is that it is not possible to query the corresponding `Withdrawal` struct for a legacy withdrawal hash. When determining what `Withdrawal` struct to supply to the contract to complete a legacy withdrawal, the caller will need to derive the original `Withdrawal` struct generated when the withdrawal was queued.
+
+#### Slashing Factors and Scaling Shares
+
+_See the [Shares Accounting](./accounting/SharesAccounting.md) doc for a more thorough explanation with examples._
+
+Throughout the `DelegationManager`, a staker's _deposit shares_ can be converted into their current _withdrawable shares_ by applying two factors: the _slashing factor_ and the _deposit scaling factor_. These two values are scaling factors that act as numerators when scaling shares. By default, these values start at `1 WAD` (`1e18`). `1 WAD` also acts as the denominator when scaling.
+
+```solidity
+/// @dev All scaling factors have `1e18` as an initial/default value. This value is represented
+/// by the constant `WAD`, which is used to preserve precision with uint256 math.
+///
+/// When applying scaling factors, they are typically multiplied/divided by `WAD`, allowing this
+/// constant to act as a "1" in mathematical formulae.
+uint64 constant WAD = 1e18;
+```
+
+The _deposit scaling factor_ is represented in `DelegationManager` storage, and can be thought of as a way to normalize newly-deposited shares using the _current_ slashing factor, so that _future_ withdrawals can be scaled appropriately if the slashing factor has changed:
+
+```solidity
+/*
+ * There are 2 types of shares:
+ * 1. deposit shares
+ * - These can be converted to an amount of tokens given a strategy
+ * - by calling `sharesToUnderlying` on the strategy address (they're already tokens
+ * in the case of EigenPods)
+ * - These live in the storage of the EigenPodManager and individual StrategyManager strategies
+ * 2. withdrawable shares
+ * - For a staker, this is the amount of shares that they can withdraw
+ * - For an operator, the shares delegated to them are equal to the sum of their stakers'
+ * withdrawable shares
+ *
+ * Along with a slashing factor, the DepositScalingFactor is used to convert between the two share types.
+ */
+struct DepositScalingFactor {
+ uint256 _scalingFactor;
+}
+
+/// @notice Returns the scaling factor applied to a `staker` for a given `strategy`
+mapping(address staker => mapping(IStrategy strategy => DepositScalingFactor)) internal _depositScalingFactor;
+```
+
+Calculating the _slashing factor_ varies depending on the strategy in question. _For all strategies_, the slashing factor is the max magnitude of the staker's delegated `operator` in the `AllocationManager` (See [Max vs Encumbered Magnitude](./AllocationManager.md#max-vs-encumbered-magnitude)). If the staker is NOT delegated, this is `WAD` (aka "1").
+
+_For the `beaconChainETHStrategy`_, the slashing factor _also_ includes the staker's `beaconChainSlashingFactor`, which acts like the `operator's` max magnitude, but for a staker's beacon chain assets. This means that, for the `beaconChainETHStrategy` specifically, _slashing factors_ can be applied because of EITHER/BOTH:
+* `operator` got slashed for this strategy by an AVS
+* `staker` got slashed on the beacon chain
+
+From `DelegationManager.sol`:
+
+```solidity
+/// @dev Calculate the amount of slashing to apply to the staker's shares
+function _getSlashingFactor(
+ address staker,
+ IStrategy strategy,
+ uint64 operatorMaxMagnitude
+) internal view returns (uint256) {
+ if (strategy == beaconChainETHStrategy) {
+ uint64 beaconChainSlashingFactor = eigenPodManager.beaconChainSlashingFactor(staker);
+ return operatorMaxMagnitude.mulWad(beaconChainSlashingFactor);
+ }
+
+ return operatorMaxMagnitude;
+}
+```
#### `delegateTo`
```solidity
+// @notice Struct that bundles together a signature and an expiration time for the signature. Used primarily for stack management.
+struct SignatureWithExpiry {
+ // the signature itself, formatted as a single bytes object
+ bytes signature;
+ // the expiration timestamp (UTC) of the signature
+ uint256 expiry;
+}
+
+/**
+ * @notice Caller delegates their stake to an operator.
+ * @param operator The account (`msg.sender`) is delegating its assets to for use in serving applications built on EigenLayer.
+ * @param approverSignatureAndExpiry (optional) Verifies the operator approves of this delegation
+ * @param approverSalt (optional) A unique single use value tied to an individual signature.
+ * @dev The signature/salt are used ONLY if the operator has configured a delegationApprover.
+ * If they have not, these params can be left empty.
+ */
function delegateTo(
address operator,
SignatureWithExpiry memory approverSignatureAndExpiry,
@@ -125,95 +334,138 @@ function delegateTo(
external
```
-Allows the caller (a Staker) to delegate their shares to an Operator. Delegation is all-or-nothing: when a Staker delegates to an Operator, they delegate ALL their shares. For each strategy the Staker has shares in, the `DelegationManager` will update the Operator's corresponding delegated share amounts.
+Allows a staker to delegate their assets to an operator. Delegation is all-or-nothing: when a staker delegates to an operator, they delegate ALL their assets. Stakers can only be delegated to one operator at a time.
+
+For each strategy the staker has deposit shares in, the `DelegationManager` will:
+* Query the staker's deposit shares from the `StrategyManager/EigenPodManager`
+* Get the slashing factor for this `(staker, operator, strategy)` and use it to update the staker's deposit scaling factor (See [Slashing Factors and Scaling Shares](#slashing-factors-and-scaling-shares))
+* Add the deposit shares to the operator's `operatorShares` directly. _Note_ that the initial delegation to an operator is a special case where deposit shares == withdrawable shares.
*Effects*:
-* Records the Staker as being delegated to the Operator
-* If the Staker has shares in the `EigenPodManager`, the `DelegationManager` adds these shares to the Operator's shares for the beacon chain ETH strategy.
-* For each of the strategies in the `StrategyManager`, if the Staker holds shares in that strategy they are added to the Operator's shares under the corresponding strategy.
+* Delegates the caller to the `operator`
+ * Tabulates any deposited shares across the `EigenPodManager` and `StrategyManager`, and delegates these shares to the `operator`
+ * For each strategy in which the caller holds assets, updates the caller's `depositScalingFactor` for that strategy
*Requirements*:
-* Pause status MUST NOT be set: `PAUSED_NEW_DELEGATION`
-* The caller MUST NOT already be delegated to an Operator
-* The `operator` MUST already be an Operator
+* The caller MUST NOT already be delegated to an operator
+* The `operator` MUST already be an operator
* If the `operator` has a `delegationApprover`, the caller MUST provide a valid `approverSignatureAndExpiry` and `approverSalt`
+* Pause status MUST NOT be set: `PAUSED_NEW_DELEGATION`
+* For each strategy in which the staker holds assets, the `slashingFactor` for that strategy MUST be non-zero.
-#### `delegateToBySignature`
+#### `undelegate`
```solidity
-function delegateToBySignature(
- address staker,
- address operator,
- SignatureWithExpiry memory stakerSignatureAndExpiry,
- SignatureWithExpiry memory approverSignatureAndExpiry,
- bytes32 approverSalt
+/**
+ * @notice Undelegates the staker from their operator and queues a withdrawal for all of their shares
+ * @param staker The account to be undelegated
+ * @return withdrawalRoots The roots of the newly queued withdrawals, if a withdrawal was queued. Returns
+ * an empty array if none was queued.
+ *
+ * @dev Reverts if the `staker` is also an operator, since operators are not allowed to undelegate from themselves.
+ * @dev Reverts if the caller is not the staker, nor the operator who the staker is delegated to, nor the operator's specified "delegationApprover"
+ * @dev Reverts if the `staker` is not delegated to an operator
+ */
+function undelegate(
+ address staker
)
- external
+ external
+ returns (bytes32[] memory withdrawalRoots);
```
-Allows a Staker to delegate to an Operator by way of signature. This function can be called by three different parties:
-* If the Operator calls this method, they need to submit only the `stakerSignatureAndExpiry`
-* If the Operator's `delegationApprover` calls this method, they need to submit only the `stakerSignatureAndExpiry`
-* If the anyone else calls this method, they need to submit both the `stakerSignatureAndExpiry` AND `approverSignatureAndExpiry`
-
-*Effects*: See `delegateTo` above.
+_Note: this method can be called directly by an operator, or by a caller authorized by the operator. See [`PermissionController.md`](../permissions/PermissionController.md) for details._
-*Requirements*: See `delegateTo` above. Additionally:
-* If caller is either the Operator's `delegationApprover` or the Operator, the `approverSignatureAndExpiry` and `approverSalt` can be empty
-* `stakerSignatureAndExpiry` MUST be a valid, unexpired signature over the correct hash and nonce
+`undelegate` can be called EITHER by a staker to undelegate themselves, OR by an operator to force-undelegate a staker from them. Force-undelegation is primarily useful if an operator has a `delegationApprover`, as this role is the only way to prevent a staker from delegating back to the operator once force-undelegated.
----
+Undelegation immediately sets the staker's delegated operator to 0, decreases the prior operator's delegated shares, and queues withdrawals for all of the staker's deposited assets. For UX reasons, one withdrawal is queued for each strategy in which the staker has deposited assets. Queued withdrawals mimic the behavior of the [`queueWithdrawals`](#queuewithdrawals) method; see that method's documentation for details.
-### Undelegating and Withdrawing
+Just as with a normal queued withdrawal, these withdrawals can be completed by the staker after `MIN_WITHDRAWAL_DELAY_BLOCKS`. These withdrawals do not require the staker to "fully exit" from the system -- the staker may choose to keep their assets in the system once withdrawals are completed (See [`completeQueuedWithdrawal`](#completequeuedwithdrawal) for details).
-These methods can be called by both Stakers AND Operators, and are used to (i) undelegate a Staker from an Operator, (ii) queue a withdrawal of a Staker/Operator's shares, or (iii) complete a queued withdrawal:
+*Effects*:
+* The `staker` is undelegated from their operator
+* If the `staker` has no deposit shares, there is no withdrawal queued or further effects
+* For each strategy held by the `staker`, a `Withdrawal` is queued:
+ * _Deposit shares_ are removed from the staker's deposit share balances
+ * See [`EigenPodManager.removeDepositShares`](./EigenPodManager.md#removedepositshares)
+ * See [`StrategyManager.removeDepositShares`](./StrategyManager.md#removedepositshares)
+ * _Deposit shares_ are converted to _withdrawable shares_ (See [Slashing Factors and Scaling Shares](#slashing-factors-and-scaling-shares)). These are decremented from the operator's delegated shares.
+ * _Deposit shares_ are converted to _scaled shares_ (See [Shares Accounting - Queue Withdrawals](./accounting/SharesAccounting.md#queue-withdrawal)), which are stored in the `Withdrawal` struct
+ * _Scaled shares_ are pushed to `_cumulativeScaledSharesHistory`, which is used for burning slashed shares
+ * The `Withdrawal` is saved to storage
+ * The hash of the `Withdrawal` is marked as "pending"
+ * The hash of the `Withdrawal` is set in a mapping to the `Withdrawal` struct itself
+ * The hash of the `Withdrawal` is pushed to `_stakerQueuedWithdrawalRoots`
+ * The staker's withdrawal nonce is increased by 1 for each `Withdrawal`
-* [`DelegationManager.undelegate`](#undelegate)
-* [`DelegationManager.queueWithdrawals`](#queuewithdrawals)
-* [`DelegationManager.completeQueuedWithdrawal`](#completequeuedwithdrawal)
-* [`DelegationManager.completeQueuedWithdrawals`](#completequeuedwithdrawals)
+*Requirements*:
+* Pause status MUST NOT be set: `PAUSED_ENTER_WITHDRAWAL_QUEUE`
+* `staker` MUST be delegated to an operator
+* `staker` MUST NOT be an operator
+* `staker` parameter MUST NOT be zero
+* Caller MUST be authorized: either the `staker` themselves, their operator, their operator's `delegationApprover`, or their operator's admin/appointee (see [`PermissionController.md`](../permissions/PermissionController.md))
+* See [`EigenPodManager.removeDepositShares`](./EigenPodManager.md#removedepositshares)
+* See [`StrategyManager.removeDepositShares`](./StrategyManager.md#removedepositshares)
-#### `undelegate`
+#### `redelegate`
```solidity
-function undelegate(
- address staker
+/**
+ * @notice Undelegates the staker from their current operator, and redelegates to `newOperator`
+ * Queues a withdrawal for all of the staker's withdrawable shares. These shares will only be
+ * delegated to `newOperator` AFTER the withdrawal is completed.
+ * @dev This method acts like a call to `undelegate`, then `delegateTo`
+ * @param newOperator the new operator that will be delegated all assets
+ * @dev NOTE: the following 2 params are ONLY checked if `newOperator` has a `delegationApprover`.
+ * If not, they can be left empty.
+ * @param newOperatorApproverSig A signature from the operator's `delegationApprover`
+ * @param approverSalt A unique single use value tied to the approver's signature
+ */
+ function redelegate(
+ address newOperator,
+ SignatureWithExpiry memory newOperatorApproverSig,
+ bytes32 approverSalt
)
external
- onlyWhenNotPaused(PAUSED_ENTER_WITHDRAWAL_QUEUE)
- returns (bytes32[] memory withdrawalRoots)
+ returns (bytes32[] memory withdrawalRoots);
```
-`undelegate` can be called by a Staker to undelegate themselves, or by a Staker's delegated Operator (or that Operator's `delegationApprover`). Undelegation (i) queues withdrawals on behalf of the Staker for all their delegated shares, and (ii) decreases the Operator's delegated shares according to the amounts and strategies being withdrawn.
-
-If the Staker has active shares in either the `EigenPodManager` or `StrategyManager`, they are removed while the withdrawal is in the queue - and an individual withdrawal is queued for each strategy removed.
-
-The withdrawals can be completed by the Staker after max(`minWithdrawalDelayBlocks`, `strategyWithdrawalDelayBlocks[strategy]`) where `strategy` is any of the Staker's delegated strategies. This does not require the Staker to "fully exit" from the system -- the Staker may choose to receive their shares back in full once withdrawals are completed (see [`completeQueuedWithdrawal`](#completequeuedwithdrawal) for details).
-
-Note that becoming an Operator is irreversible! Although Operators can withdraw, they cannot use this method to undelegate from themselves.
+`redelegate` is a convenience method that combines the effects of `undelegate` and `delegateTo`. `redelegate` allows a staker to switch their delegated operator to `newOperator` with a single call. **Note**, though, that the staker's assets will not be fully delegated to `newOperator` until the withdrawals queued during the undelegation portion of this method are completed.
*Effects*:
-* Any shares held by the Staker in the `EigenPodManager` and `StrategyManager` are removed from the Operator's delegated shares.
-* The Staker is undelegated from the Operator
-* If the Staker has no delegatable shares, there is no withdrawal queued or further effects
-* For each strategy being withdrawn, a `Withdrawal` is queued for the Staker:
- * The Staker's withdrawal nonce is increased by 1 for each `Withdrawal`
- * The hash of each `Withdrawal` is marked as "pending"
-* See [`EigenPodManager.removeShares`](./EigenPodManager.md#eigenpodmanagerremoveshares)
-* See [`StrategyManager.removeShares`](./StrategyManager.md#removeshares)
+* See [`delegateTo`](#delegateto) and [`undelegate`](#undelegate)
*Requirements*:
-* Pause status MUST NOT be set: `PAUSED_ENTER_WITHDRAWAL_QUEUE`
-* Staker MUST exist and be delegated to someone
-* Staker MUST NOT be an Operator
-* `staker` parameter MUST NOT be zero
-* Caller must be either the Staker, their Operator, or their Operator's `delegationApprover`
-* See [`EigenPodManager.removeShares`](./EigenPodManager.md#eigenpodmanagerremoveshares)
-* See [`StrategyManager.removeShares`](./StrategyManager.md#removeshares)
+* See [`delegateTo`](#delegateto) and [`undelegate`](#undelegate)
#### `queueWithdrawals`
```solidity
+/**
+ * @param strategies The strategies to withdraw from
+ * @param depositShares For each strategy, the number of deposit shares to withdraw. Deposit shares can
+ * be queried via `getDepositedShares`.
+ * NOTE: The number of shares ultimately received when a withdrawal is completed may be lower depositShares
+ * if the staker or their delegated operator has experienced slashing.
+ * @param __deprecated_withdrawer This field is ignored. The only party that may complete a withdrawal
+ * is the staker that originally queued it. Alternate withdrawers are not supported.
+ */
+struct QueuedWithdrawalParams {
+ IStrategy[] strategies;
+ uint256[] depositShares;
+ address __deprecated_withdrawer;
+}
+
+/**
+ * @notice Allows a staker to queue a withdrawal of their deposit shares. The withdrawal can be
+ * completed after the MIN_WITHDRAWAL_DELAY_BLOCKS via either of the completeQueuedWithdrawal methods.
+ *
+ * While in the queue, these shares are removed from the staker's balance, as well as from their operator's
+ * delegated share balance (if applicable). Note that while in the queue, deposit shares are still subject
+ * to slashing. If any slashing has occurred, the shares received may be less than the queued deposit shares.
+ *
+ * @dev To view all the staker's strategies/deposit shares that can be queued for withdrawal, see `getDepositedShares`
+ * @dev To view the current coversion between a staker's deposit shares and withdrawable shares, see `getWithdrawableShares`
+ */
function queueWithdrawals(
QueuedWithdrawalParams[] calldata queuedWithdrawalParams
)
@@ -222,41 +474,83 @@ function queueWithdrawals(
returns (bytes32[] memory)
```
-Allows the caller to queue one or more withdrawals of their held shares across any strategy (in either/both the `EigenPodManager` or `StrategyManager`). If the caller is delegated to an Operator, the `shares` and `strategies` being withdrawn are immediately removed from that Operator's delegated share balances. Note that if the caller is an Operator, this still applies, as Operators are essentially delegated to themselves.
-
-`queueWithdrawals` works very similarly to `undelegate`, except that the caller is not undelegated, and also may choose which strategies and how many shares to withdraw (as opposed to ALL shares/strategies).
+Allows the caller to queue their deposit shares for withdrawal across any strategy. Withdrawals can be completed after `MIN_WITHDRAWAL_DELAY_BLOCKS`, by calling [`completeQueuedWithdrawal`](#completequeuedwithdrawal). This method accepts _deposit shares_ as input - however, the amounts received upon completion may be lower if the staker has experienced slashing (See [Shares Accounting](./accounting/SharesAccounting.md) and [Slashing Factors and Scaling Shares](#slashing-factors-and-scaling-shares)).
-All shares being withdrawn (whether via the `EigenPodManager` or `StrategyManager`) are removed while the withdrawals are in the queue.
+For each `QueuedWithdrawalParams` passed as input, a `Withdrawal` is created in storage (See [Legacy and Post-Slashing Withdrawals](#legacy-and-post-slashing-withdrawals) for details on structure and querying). Queueing a withdrawal involves multiple transformations to a staker's _deposit shares_, serving a few different purposes:
+* The raw _deposit shares_ are removed from the staker's deposit share balance in the corresponding share manager (`EigenPodManager` or `StrategyManager`).
+* _Scaled shares_ are calculated by applying the staker's _deposit scaling factor_ to their _deposit shares_. Scaled shares:
+ * are stored in the `Withdrawal` itself and used during withdrawal completion
+ * are added to the operator's `cumulativeScaledSharesHistory`, where they can be burned if slashing occurs while the withdrawal is in the queue
+* _Withdrawable shares_ are calculated by applying both the staker's _deposit scaling factor_ AND any appropriate _slashing factor_ to the staker's _deposit shares_. These "currently withdrawable shares" are removed from the operator's delegated shares (if applicable).
-Withdrawals can be completed by the caller after max(`minWithdrawalDelayBlocks`, `strategyWithdrawalDelayBlocks[strategy]`) such that `strategy` represents the queued strategies to be withdrawn. Withdrawals do not require the caller to "fully exit" from the system -- they may choose to receive their shares back in full once the withdrawal is completed (see [`completeQueuedWithdrawal`](#completequeuedwithdrawal) for details).
-
-Note that the `QueuedWithdrawalParams` struct has a `withdrawer` field. Originally, this was used to specify an address that the withdrawal would be credited to once completed. However, `queueWithdrawals` now requires that `withdrawer == msg.sender`. Any other input is rejected.
+Note that the `QueuedWithdrawalParams.__deprecated_withdrawer` field is ignored. Originally, this was used to create withdrawals that could be completed by a third party. This functionality was removed during the M2 release due to growing concerns over the phish risk this presented. Until the slashing release, this field was explicitly checked for equivalence with `msg.sender`; however, at present it is ignored. All `Withdrawals` are created with `withdrawer == staker` regardless of this field's value.
*Effects*:
-* For each withdrawal:
- * If the caller is delegated to an Operator, that Operator's delegated balances are decreased according to the `strategies` and `shares` being withdrawn.
- * A `Withdrawal` is queued for the caller, tracking the strategies and shares being withdrawn
- * The caller's withdrawal nonce is increased
+* For each `QueuedWithdrawalParams` element:
+ * _Deposit shares_ are removed from the staker's deposit share balances
+ * See [`EigenPodManager.removeDepositShares`](./EigenPodManager.md#removedepositshares)
+ * See [`StrategyManager.removeDepositShares`](./StrategyManager.md#removedepositshares)
+ * _Deposit shares_ are converted to _withdrawable shares_ (See [Slashing Factors and Scaling Deposits](#slashing-factors-and-scaling-shares)). These are decremented from their operator's delegated shares (if applicable)
+ * _Deposit shares_ are converted to _scaled shares_ (See [Shares Accounting - Queue Withdrawals](./accounting/SharesAccounting.md#queue-withdrawal)), which are stored in the `Withdrawal` struct
+ * If the caller is delegated to an operator, _scaled shares_ are pushed to that operator's `_cumulativeScaledSharesHistory`, which may be burned if slashing occurs.
+ * The `Withdrawal` is saved to storage
* The hash of the `Withdrawal` is marked as "pending"
- * See [`EigenPodManager.removeShares`](./EigenPodManager.md#eigenpodmanagerremoveshares)
- * See [`StrategyManager.removeShares`](./StrategyManager.md#removeshares)
+ * The hash of the `Withdrawal` is set in a mapping to the `Withdrawal` struct itself
+ * The hash of the `Withdrawal` is pushed to `_stakerQueuedWithdrawalRoots`
+ * The staker's withdrawal nonce is increased by 1
*Requirements*:
* Pause status MUST NOT be set: `PAUSED_ENTER_WITHDRAWAL_QUEUE`
-* For each withdrawal:
- * `strategies.length` MUST equal `shares.length`
- * `strategies.length` MUST NOT be equal to 0
+* For each `QueuedWithdrawalParams` element:
+ * `strategies.length` MUST equal `depositShares.length`
* The `withdrawer` MUST equal `msg.sender`
- * See [`EigenPodManager.removeShares`](./EigenPodManager.md#eigenpodmanagerremoveshares)
- * See [`StrategyManager.removeShares`](./StrategyManager.md#removeshares)
+ * `strategies.length` MUST NOT be equal to 0
+ * See [`EigenPodManager.removeDepositShares`](./EigenPodManager.md#removedepositshares)
+ * See [`StrategyManager.removeDepositShares`](./StrategyManager.md#removedepositshares)
#### `completeQueuedWithdrawal`
```solidity
+/**
+ * @dev A struct representing an existing queued withdrawal. After the withdrawal delay has elapsed, this withdrawal can be completed via `completeQueuedWithdrawal`.
+ * A `Withdrawal` is created by the `DelegationManager` when `queueWithdrawals` is called. The `withdrawalRoots` hashes returned by `queueWithdrawals` can be used
+ * to fetch the corresponding `Withdrawal` from storage (via `getQueuedWithdrawal`).
+ *
+ * @param staker The address that queued the withdrawal
+ * @param delegatedTo The address that the staker was delegated to at the time the withdrawal was queued. Used to determine if additional slashing occurred before
+ * this withdrawal became completeable.
+ * @param withdrawer The address that will call the contract to complete the withdrawal. Note that this will always equal `staker`; alternate withdrawers are not
+ * supported at this time.
+ * @param nonce The staker's `cumulativeWithdrawalsQueued` at time of queuing. Used to ensure withdrawals have unique hashes.
+ * @param startBlock The block number when the withdrawal was queued.
+ * @param strategies The strategies requested for withdrawal when the withdrawal was queued
+ * @param scaledShares The staker's deposit shares requested for withdrawal, scaled by the staker's `depositScalingFactor`. Upon completion, these will be
+ * scaled by the appropriate slashing factor as of the withdrawal's completable block. The result is what is actually withdrawable.
+ */
+struct Withdrawal {
+ address staker;
+ address delegatedTo;
+ address withdrawer;
+ uint256 nonce;
+ uint32 startBlock;
+ IStrategy[] strategies;
+ uint256[] scaledShares;
+}
+
+/**
+ * @notice Used to complete a queued withdrawal
+ * @param withdrawal The withdrawal to complete
+ * @param tokens Array in which the i-th entry specifies the `token` input to the 'withdraw' function of the i-th Strategy in the `withdrawal.strategies` array.
+ * @param tokens For each `withdrawal.strategies`, the underlying token of the strategy
+ * NOTE: if `receiveAsTokens` is false, the `tokens` array is unused and can be filled with default values. However, `tokens.length` MUST still be equal to `withdrawal.strategies.length`.
+ * NOTE: For the `beaconChainETHStrategy`, the corresponding `tokens` value is ignored (can be 0).
+ * @param receiveAsTokens If true, withdrawn shares will be converted to tokens and sent to the caller. If false, the caller receives shares that can be delegated to an operator.
+ * NOTE: if the caller receives shares and is currently delegated to an operator, the received shares are
+ * automatically delegated to the caller's current operator.
+ */
function completeQueuedWithdrawal(
Withdrawal calldata withdrawal,
IERC20[] calldata tokens,
- uint256 middlewareTimesIndex,
bool receiveAsTokens
)
external
@@ -264,60 +558,59 @@ function completeQueuedWithdrawal(
nonReentrant
```
-After waiting max(`minWithdrawalDelayBlocks`, `strategyWithdrawalDelayBlocks[strategy]`) number of blocks, this allows the `withdrawer` of a `Withdrawal` to finalize a withdrawal and receive either (i) the underlying tokens of the strategies being withdrawn from, or (ii) the shares being withdrawn. This choice is dependent on the passed-in parameter `receiveAsTokens`.
+`MIN_WITHDRAWAL_DELAY_BLOCKS` after queueing, a staker can complete a `Withdrawal` by calling this method. The staker can elect to receive _either_ tokens OR shares depending on the value of the `receiveAsTokens` parameter.
+
+Before processing a withdrawal, this method will calculate the slashing factor at the withdrawal's completion block (`withdrawal.startBlock + MIN_WITHDRAWAL_DELAY_BLOCKS`), according to the operator that was delegated to when the withdrawal was queued (`withdrawal.delegatedTo`). This slashing factor is used to determine if any additional slashing occurred while the withdrawal was in the queue. If so, this slashing is applied now.
-For each strategy/share pair in the `Withdrawal`:
-* If the `withdrawer` chooses to receive tokens:
- * The shares are converted to their underlying tokens via either the `EigenPodManager` or `StrategyManager` and sent to the `withdrawer`.
-* If the `withdrawer` chooses to receive shares (and the strategy belongs to the `StrategyManager`):
- * The shares are awarded to the `withdrawer` via the `StrategyManager`
- * If the `withdrawer` is delegated to an Operator, that Operator's delegated shares are increased by the added shares (according to the strategy being added to).
+For each `Withdrawal`, `withdrawal.scaledShares` are converted into _withdrawable shares_, accounting for any slashing that occurred during the withdrawal period (See [Shares Accounting - Complete Withdrawal](./accounting/SharesAccounting.md#complete-withdrawal)).
-`Withdrawals` concerning `EigenPodManager` shares have some additional nuance depending on whether a withdrawal is specified to be received as tokens vs shares (read more about "why" in [`EigenPodManager.md`](./EigenPodManager.md)):
-* `EigenPodManager` withdrawals received as shares:
- * Shares ALWAYS go back to the originator of the withdrawal (rather than the `withdrawer` address).
- * Shares are also delegated to the originator's Operator, rather than the `withdrawer's` Operator.
- * Shares received by the originator may be lower than the shares originally withdrawn if the originator has debt.
-* `EigenPodManager` withdrawals received as tokens:
- * Before the withdrawal can be completed, the originator needs to prove that a withdrawal occurred on the beacon chain (see [`EigenPod.verifyAndProcessWithdrawals`](./EigenPodManager.md#eigenpodverifyandprocesswithdrawals)).
+If the staker chooses to receive the withdrawal _as tokens_, the withdrawable shares are converted to tokens via the corresponding share manager (`EigenPodManager`/`StrategyManager`), and sent to the caller.
+
+If the staker chooses to receive the withdrawal _as shares_, the withdrawable shares are credited to the staker via the corresponding share manager (`EigenPodManager`/`StrategyManager`). Additionally, if the caller is delegated to an operator, the new slashing factor for the given `(staker, operator, strategy)` determines how many shares are awarded to the operator (and how the staker's deposit scaling factor is updated) (See [Slashing Factors and Scaling Shares](#slashing-factors-and-scaling-shares)).
+
+**Note:** if the staker (i) receives the withdrawal as shares, (ii) has `MAX_STAKER_STRATEGY_LIST_LENGTH` unique deposit strategies in the `StrategyManager`, and (iii) is withdrawing to a `StrategyManager` strategy in which they do not currently have shares, this will revert. The staker cannot withdraw such that their `stakerStrategyList` length exceeds the maximum; this withdrawal will have to be completed as tokens instead.
+
+**Note:** if the staker receives a `beaconChainETHStrategy` withdrawal as tokens, the staker's `EigenPod` MUST have sufficient `withdrawableExecutionLayerGwei` to honor the withdrawal.
*Effects*:
* The hash of the `Withdrawal` is removed from the pending withdrawals
+* The hash of the `Withdrawal` is removed from the enumerable set of staker queued withdrawals
+* The `Withdrawal` struct is removed from the queued withdrawals
* If `receiveAsTokens`:
* See [`StrategyManager.withdrawSharesAsTokens`](./StrategyManager.md#withdrawsharesastokens)
- * See [`EigenPodManager.withdrawSharesAsTokens`](./EigenPodManager.md#eigenpodmanagerwithdrawsharesastokens)
+ * See [`EigenPodManager.withdrawSharesAsTokens`](./EigenPodManager.md#withdrawsharesastokens)
* If `!receiveAsTokens`:
- * For `StrategyManager` strategies:
- * Shares are awarded to the `withdrawer` and delegated to the `withdrawer's` Operator
- * See [`StrategyManager.addShares`](./StrategyManager.md#addshares)
- * For the native beacon chain ETH strategy (`EigenPodManager`):
- * Shares are awarded to `withdrawal.staker`, and delegated to the Staker's Operator
- * See [`EigenPodManager.addShares`](./EigenPodManager.md#eigenpodmanageraddshares)
+ * Withdrawable shares are awarded to the caller and delegated to the caller's current operator if applicable
+ * See [`StrategyManager.addShares`](./StrategyManager.md#addshares)
+ * See [`EigenPodManager.addShares`](./EigenPodManager.md#addshares)
*Requirements*:
* Pause status MUST NOT be set: `PAUSED_EXIT_WITHDRAWAL_QUEUE`
+* `tokens.length` must equal `withdrawal.strategies.length`
+* Caller MUST be the `staker/withdrawer` specified in the `Withdrawal`
+* At least `MIN_WITHDRAWAL_DELAY_BLOCKS` MUST have passed before `completeQueuedWithdrawal` is called
* The hash of the passed-in `Withdrawal` MUST correspond to a pending withdrawal
- * At least `minWithdrawalDelayBlocks` MUST have passed before `completeQueuedWithdrawal` is called
- * For all strategies in the `Withdrawal`, at least `strategyWithdrawalDelayBlocks[strategy]` MUST have passed before `completeQueuedWithdrawal` is called
- * Caller MUST be the `withdrawer` specified in the `Withdrawal`
* If `receiveAsTokens`:
* The caller MUST pass in the underlying `IERC20[] tokens` being withdrawn in the appropriate order according to the strategies in the `Withdrawal`.
* See [`StrategyManager.withdrawSharesAsTokens`](./StrategyManager.md#withdrawsharesastokens)
- * See [`EigenPodManager.withdrawSharesAsTokens`](./EigenPodManager.md#eigenpodmanagerwithdrawsharesastokens)
+ * See [`EigenPodManager.withdrawSharesAsTokens`](./EigenPodManager.md#withdrawsharesastokens)
* If `!receiveAsTokens`:
* See [`StrategyManager.addShares`](./StrategyManager.md#addshares)
- * See [`EigenPodManager.addShares`](./EigenPodManager.md#eigenpodmanageraddshares)
-
-*As of M2*:
-* The `middlewareTimesIndex` parameter has to do with the Slasher, which currently does nothing. As of M2, this parameter has no bearing on anything and can be ignored.
+ * See [`EigenPodManager.addShares`](./EigenPodManager.md#addshares)
#### `completeQueuedWithdrawals`
```solidity
+/**
+ * @notice Used to complete multiple queued withdrawals
+ * @param withdrawals Array of Withdrawals to complete. See `completeQueuedWithdrawal` for the usage of a single Withdrawal.
+ * @param tokens Array of tokens for each Withdrawal. See `completeQueuedWithdrawal` for the usage of a single array.
+ * @param receiveAsTokens Whether or not to complete each withdrawal as tokens. See `completeQueuedWithdrawal` for the usage of a single boolean.
+ * @dev See `completeQueuedWithdrawal` for relevant dev tags
+ */
function completeQueuedWithdrawals(
Withdrawal[] calldata withdrawals,
IERC20[][] calldata tokens,
- uint256[] calldata middlewareTimesIndexes,
bool[] calldata receiveAsTokens
)
external
@@ -329,107 +622,121 @@ This method is the plural version of [`completeQueuedWithdrawal`](#completequeue
---
-### Accounting
+## Slashing and Accounting
-These methods are called by the `StrategyManager` and `EigenPodManager` to update delegated share accounting when a Staker's balance changes (e.g. due to a deposit):
+These methods are all called by other system contracts: the `AllocationManager` calls `slashOperatorShares` during slashing, and the `EigenPodManager/StrategyManager` call `increaseDelegatedShares/decreaseDelegatedShares` when stakers' deposit shares (or when beacon chain balance decreases occur).
+**Methods**:
+* [`DelegationManager.slashOperatorShares`](#slashoperatorshares)
* [`DelegationManager.increaseDelegatedShares`](#increasedelegatedshares)
* [`DelegationManager.decreaseDelegatedShares`](#decreasedelegatedshares)
-#### `increaseDelegatedShares`
+#### `slashOperatorShares`
```solidity
-function increaseDelegatedShares(
- address staker,
- IStrategy strategy,
- uint256 shares
-)
+/**
+ * @notice Decreases the operators shares in storage after a slash and increases the burnable shares by calling
+ * into either the StrategyManager or EigenPodManager (if the strategy is beaconChainETH).
+ * @param operator The operator to decrease shares for
+ * @param strategy The strategy to decrease shares for
+ * @param prevMaxMagnitude the previous maxMagnitude of the operator
+ * @param newMaxMagnitude the new maxMagnitude of the operator
+ * @dev Callable only by the AllocationManager
+ * @dev Note: Assumes `prevMaxMagnitude <= newMaxMagnitude`. This invariant is maintained in
+ * the AllocationManager.
+ */
+function slashOperatorShares(
+ address operator,
+ IStrategy strategy,
+ uint64 prevMaxMagnitude,
+ uint64 newMaxMagnitude
+)
external
- onlyStrategyManagerOrEigenPodManager
+ onlyAllocationManager
```
-Called by either the `StrategyManager` or `EigenPodManager` when a Staker's shares for one or more strategies increase. This method is called to ensure that if the Staker is delegated to an Operator, that Operator's share count reflects the increase.
-
-*Entry Points*:
-* `StrategyManager.depositIntoStrategy`
-* `StrategyManager.depositIntoStrategyWithSignature`
-* `EigenPod.verifyWithdrawalCredentials`
-* `EigenPod.verifyBalanceUpdates`
-* `EigenPod.verifyAndProcessWithdrawals`
+_See [Shares Accounting - Slashing](https://github.com/Layr-Labs/eigenlayer-contracts/blob/slashing-magnitudes/docs/core/accounting/SharesAccounting.md#slashing) for a description of the accounting in this method._
-*Effects*: If the Staker in question is delegated to an Operator, the Operator's shares for the `strategy` are increased.
-* This method is a no-op if the Staker is not delegated to an Operator.
+This method is called by the `AllocationManager` when processing an AVS's slash of an operator. Slashing occurs instantly, with this method directly reducing the operator's delegated shares proportional to the slash.
-*Requirements*:
-* Caller MUST be either the `StrategyManager` or `EigenPodManager`
+Additionally, any _slashable shares_ in the withdrawal queue are marked for burning according to the same slashing proportion (shares in the withdrawal queue remain slashable for `MIN_WITHDRAWAL_DELAY_BLOCKS`). For the slashed strategy, the corresponding share manager (`EigenPodManager/StrateyManager`) is called, increasing the burnable shares for that strategy.
-#### `decreaseDelegatedShares`
+**Note**: native ETH does not currently posess a burning mechanism, as this requires Pectra to be able to force exit validators. Currently, slashing for the `beaconChainETHStrategy` is realized by modifying the amount stakers are able to withdraw.
-```solidity
-function decreaseDelegatedShares(
- address staker,
- IStrategy strategy,
- uint256 shares
-)
- external
- onlyStrategyManagerOrEigenPodManager
-```
-
-Called by the `EigenPodManager` when a Staker's shares decrease. This method is called to ensure that if the Staker is delegated to an Operator, that Operator's share count reflects the decrease.
-
-*Entry Points*: This method may be called as a result of the following top-level function calls:
-* `EigenPod.verifyBalanceUpdates`
-* `EigenPod.verifyAndProcessWithdrawals`
+*Effects*:
+* The `operator's` `operatorShares` are reduced for the given `strategy`, according to the proportion given by `prevMaxMagnitude` and `newMaxMagnitude`
+* Any slashable shares in the withdrawal queue are marked for burning according to the same proportion
+* See [`StrategyManager.increaseBurnableShares`](./StrategyManager.md#increaseBurnableShares)
+* See [`EigenPodManager.increaseBurnableShares`](./EigenPodManager.md#increaseBurnableShares)
-*Effects*: If the Staker in question is delegated to an Operator, the Operator's delegated balance for the `strategy` is decreased by `shares`
-* This method is a no-op if the Staker is not delegated to an Operator.
*Requirements*:
-* Caller MUST be either the `StrategyManager` or `EigenPodManager` (although the `StrategyManager` doesn't use this method)
-
----
-
-### System Configuration
-
-* [`DelegationManager.setMinWithdrawalDelayBlocks`](#setminwithdrawaldelayblocks)
-* [`DelegationManager.setStrategyWithdrawalDelayBlocks`](#setstrategywithdrawaldelayblocks)
+* The amount slashed from the operator must not result in underflow of their `operatorShares` for the given `strategy`
-#### `setMinWithdrawalDelayBlocks`
+#### `increaseDelegatedShares`
```solidity
-function setMinWithdrawalDelayBlocks(
- uint256 newMinWithdrawalDelayBlocks
+/**
+ * @notice Called by a share manager when a staker's deposit share balance in a strategy increases.
+ * This method delegates any new shares to an operator (if applicable), and updates the staker's
+ * deposit scaling factor regardless.
+ * @param staker The address whose deposit shares have increased
+ * @param strategy The strategy in which shares have been deposited
+ * @param prevDepositShares The number of deposit shares the staker had in the strategy prior to the increase
+ * @param addedShares The number of deposit shares added by the staker
+ *
+ * @dev Note that if either the staker's current operator has been slashed 100% for `strategy`, OR the
+ * staker has been slashed 100% on the beacon chain such that the calculated slashing factor is 0, this
+ * method WILL REVERT.
+ */
+function increaseDelegatedShares(
+ address staker,
+ IStrategy strategy,
+ uint256 prevDepositShares,
+ uint256 addedShares
)
- external
- onlyOwner
+ external
+ onlyStrategyManagerOrEigenPodManager
```
-Allows the Owner to set the overall minimum withdrawal delay for withdrawals concerning any strategy. The total time required for a withdrawal to be completable is at least `minWithdrawalDelayBlocks`. If any of the withdrawal's strategies have a higher per-strategy withdrawal delay, the time required is the maximum of these per-strategy delays.
+Called by either the `StrategyManager` or `EigenPodManager` when a staker's deposit shares for one or more strategies increase.
+
+If the staker is delegated to an operator, the new deposit shares are directly added to that operator's `operatorShares`. Regardless of delegation status, the staker's deposit scaling factor is updated.
+
+**Note** that if either the staker's current operator has been slashed 100% for `strategy`, OR the staker has been slashed 100% on the beacon chain such that the calculated slashing factor is 0, this method WILL REVERT. See [Shares Accounting - Fully Slashed](./accounting/SharesAccountingEdgeCases.md#fully-slashed-for-a-strategy) for details.
*Effects*:
-* Sets the global `minWithdrawalDelayBlocks`
+* If the staker is delegated to an operator, `addedShares` are added to the operator's shares
+* The staker's deposit scaling factor is updated
*Requirements*:
-* Caller MUST be the Owner
-* The new value MUST NOT be greater than `MAX_WITHDRAWAL_DELAY_BLOCKS`
+* Caller MUST be either the `StrategyManager` or `EigenPodManager`
-#### `setStrategyWithdrawalDelayBlocks`
+#### `decreaseDelegatedShares`
```solidity
-function setStrategyWithdrawalDelayBlocks(
- IStrategy[] calldata strategies,
- uint256[] calldata withdrawalDelayBlocks
+/**
+ * @notice If the staker is delegated, decreases its operator's shares in response to
+ * a decrease in balance in the beaconChainETHStrategy
+ * @param staker the staker whose operator's balance will be decreased
+ * @param curDepositShares the current deposit shares held by the staker
+ * @param beaconChainSlashingFactorDecrease the amount that the staker's beaconChainSlashingFactor has decreased by
+ * @dev Note: `beaconChainSlashingFactorDecrease` are assumed to ALWAYS be < 1 WAD.
+ * These invariants are maintained in the EigenPodManager.
+ */
+function decreaseDelegatedShares(
+ address staker,
+ uint256 curDepositShares,
+ uint64 beaconChainSlashingFactorDecrease
)
- external
- onlyOwner
+ external
+ onlyEigenPodManager
```
-Allows the Owner to set a per-strategy withdrawal delay for each passed-in strategy. The total time required for a withdrawal to be completable is at least `minWithdrawalDelayBlocks`. If any of the withdrawal's strategies have a higher per-strategy withdrawal delay, the time required is the maximum of these per-strategy delays.
+Called by the `EigenPodManager` when a staker's shares decrease due to a checkpointed balance decrease on the beacon chain. If the staker is delegated to an operator, the operator's shares are decreased in return. Otherwise, this method does nothing.
-*Effects*:
-* For each `strategy`, sets `strategyWithdrawalDelayBlocks[strategy]` to a new value
+*Effects*: If the staker in question is delegated to an operator, the operator's shares for the `beaconChainETHStrategy` are decreased by the amount the staker's withdrawable shares have decreased by
+* This method is a no-op if the staker is not delegated to an operator.
*Requirements*:
-* Caller MUST be the Owner
-* `strategies.length` MUST be equal to `withdrawalDelayBlocks.length`
-* For each entry in `withdrawalDelayBlocks`, the value MUST NOT be greater than `MAX_WITHDRAWAL_DELAY_BLOCKS`
\ No newline at end of file
+* Caller MUST be the `EigenPodManager`
\ No newline at end of file
diff --git a/docs/core/EigenPod.md b/docs/core/EigenPod.md
index b33e5d5da3..4c80c7fe35 100644
--- a/docs/core/EigenPod.md
+++ b/docs/core/EigenPod.md
@@ -150,7 +150,7 @@ Checkpoint proofs comprise the bulk of proofs submitted to an `EigenPod`. Comple
* when the pod has accumulated fees / partial withdrawals from validators
* whether any validators on the beacon chain have increased/decreased in balance
-When a checkpoint is completed, shares are updated accordingly for each of these events. Shares can be withdrawn via the `DelegationManager` withdrawal queue (see [DelegationManager: Undelegating and Withdrawing](./DelegationManager.md#undelegating-and-withdrawing)), which means an `EigenPod's` checkpoint proofs also play an important role in allowing Pod Owners to exit funds from the system.
+When a checkpoint is completed, shares are updated accordingly for each of these events. OwnedShares can be withdrawn via the `DelegationManager` withdrawal queue (see [DelegationManager: Undelegating and Withdrawing](./DelegationManager.md#undelegating-and-withdrawing)), which means an `EigenPod's` checkpoint proofs also play an important role in allowing Pod Owners to exit funds from the system.
_Important Notes:_
* `EigenPods` can only have **one active checkpoint** at a given time, and once started, checkpoints **cannot be cancelled** (only completed)
diff --git a/docs/core/EigenPodManager.md b/docs/core/EigenPodManager.md
index fde955d9f8..322ef3cdb7 100644
--- a/docs/core/EigenPodManager.md
+++ b/docs/core/EigenPodManager.md
@@ -1,50 +1,75 @@
## EigenPodManager
-| File | Type | Proxy |
-| -------- | -------- | -------- |
-| [`EigenPodManager.sol`](../../src/contracts/pods/EigenPodManager.sol) | Singleton | Transparent proxy |
-| [`EigenPod.sol`](../../src/contracts/pods/EigenPod.sol) | Instanced, deployed per-user | Beacon proxy |
+| File | Notes |
+| -------- | -------- |
+| [`EigenPodManager.sol`](../../src/contracts/pods/EigenPodManager.sol) | |
+| [`EigenPodManagerStorage.sol`](../../src/contracts/pods/EigenPodManagerStorage.sol) | state variables |
+| [`IEigenPodManager.sol`](../../src/contracts/interfaces/IEigenPodManager.sol) | interface |
-The `EigenPodManager` manages the relationship between a Staker's `EigenPod`, the delegatable shares each Staker holds in the beacon chain ETH strategy, and the withdrawal of those shares via the `DelegationManager`. These functions together support Stakers' ability to restake beacon chain ETH and delegate restaked ETH to Operators in order to earn additional yield.
+Libraries and Mixins:
+| File | Notes |
+| -------- | -------- |
+| [`EigenPodPausingConstants.sol`](../../src/contracts/pods/EigenPodPausingConstants.sol) | pause values for `EigenPod/EigenPodManager` methods |
-The `EigenPodManager` is the entry point for this process, allowing Stakers to deploy an `EigenPod` and begin restaking. After a Staker deploys their `EigenPod`, the `EigenPodManager` receives various updates from the pod that add or remove shares from the Staker.
+## Prior Reading
-#### High-level Concepts
+* [Shares Accounting](./accounting/SharesAccounting.md), especially [_Handling Beacon Chain Balance Decreases in EigenPods_](./accounting/SharesAccounting.md#handling-beacon-chain-balance-decreases-in-eigenpods)
-This document organizes methods according to the following themes (click each to be taken to the relevant section):
+## Overview
+
+The `EigenPodManager` manages the "beacon chain ETH strategy", a virtual strategy that stakers can hold delegatable shares in, similar to the strategies managed by the `StrategyManager`. Whereas the `StrategyManager's` strategy shares are backed by deposited ERC20 tokens, beacon chain ETH strategy shares are backed either by beacon chain validators or native ETH attributed to `EigenPods`.
+
+The `EigenPodManager` allows any staker to deploy an `EigenPod`. `EigenPods` contains beacon chain state proof logic that enable a staker to point either/both a validator's _withdrawal credentials_ and/or _fee recipient_ addresses to their pod. After submitting beacon chain state proofs to their pod, the staker is awarded deposit shares in the beacon chain ETH strategy, which are then delegated to their operator in the `DelegationManager` (if applicable). For more details, see [`EigenPod.md`](./EigenPod.md).
+
+As an `EigenPod` receives balance updates, they are forwarded to the `EigenPodManager`. Balance increases resulting from validator activity on the beacon chain or ETH received in the `EigenPod` will result in an increase in the staker's _deposit shares_ for the beacon chain ETH strategy.
+
+Balance decreases resulting from validator inactivity or beacon chain slashing do NOT decrease the staker's deposit shares. Instead, they result in a _decrease_ to the staker's _beacon chain slashing factor_. Among other factors, the `DelegationManager` uses the beacon chain slashing factor when determining:
+* How many of a staker's _deposit shares_ can actually be withdrawn
+* How many of a staker's _deposit shares_ can be delegated to an operator
+
+Note that the number of _withdrawable shares_ a staker's _deposit shares_ represent can be queried using `DelegationManager.getWithdrawableShares(staker, strategies)`.
+
+The `EigenPodManager's` responsibilities can be broken down into the following concepts:
* [Depositing Into EigenLayer](#depositing-into-eigenlayer)
* [Withdrawal Processing](#withdrawal-processing)
* [Other Methods](#other-methods)
-#### Important State Variables
+## Parameterization
-* `mapping(address => IEigenPod) public ownerToPod`: Tracks the deployed `EigenPod` for each Staker
-* `mapping(address => int256) public podOwnerShares`: Keeps track of the actively restaked beacon chain ETH for each Staker.
- * In some cases, a beacon chain balance update may cause a Staker's balance to drop below zero. This is because when queueing for a withdrawal in the `DelegationManager`, the Staker's current shares are fully removed. If the Staker's beacon chain balance drops after this occurs, their `podOwnerShares` may go negative. This is a temporary change to account for the drop in balance, and is ultimately corrected when the withdrawal is finally processed.
- * Since balances on the consensus layer are stored only in Gwei amounts, the EigenPodManager enforces the invariant that `podOwnerShares` is always a whole Gwei amount for every staker, i.e. `podOwnerShares[staker] % 1e9 == 0` always.
+* `beaconChainETHStrategy = 0xbeaC0eeEeeeeEEeEeEEEEeeEEeEeeeEeeEEBEaC0`
+ * A virtual strategy used to represent beacon chain ETH internally. The `DelegationManager` uses this address to denote the beacon chain ETH strategy managed by the `EigenPodManager`. However, it does not correspond to an actual contract!
+* `ethPOS = 0x00000000219ab540356cBB839Cbe05303d7705Fa`
+ * The address of the beacon chain deposit contract
+* `beaconProxyBytecode` (defined in `EigenPodManagerStorage.sol`)
+ * `EigenPods` are deployed using a beacon proxy. This bytecode is a constant, containing the _creation bytecode_ calculated by compiling [OpenZeppelin's `BeaconProxy` contract at version 4.7.1](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.7.1/contracts/proxy/beacon/BeaconProxy.sol). Compilation used solc version `0.8.12`, optimization enabled, 200 runs. Example verified contract [here](https://etherscan.io/address/0xA6f93249580EC3F08016cD3d4154AADD70aC3C96#code).
----
+---
-### Depositing Into EigenLayer
+## Depositing Into EigenLayer
-Before a Staker begins restaking beacon chain ETH, they need to deploy an `EigenPod`, stake, and start a beacon chain validator:
+Before a staker begins restaking beacon chain ETH, they need to deploy an `EigenPod`, stake, and start a beacon chain validator:
* [`createPod`](#createpod)
* [`stake`](#stake)
#### `createPod`
```solidity
-function createPod()
- external
- onlyWhenNotPaused(PAUSED_NEW_EIGENPODS)
+/**
+ * @notice Creates an EigenPod for the sender.
+ * @dev Function will revert if the `msg.sender` already has an EigenPod.
+ * @dev Returns EigenPod address
+ */
+function createPod()
+ external
+ onlyWhenNotPaused(PAUSED_NEW_EIGENPODS)
returns (address)
```
-Allows a Staker to deploy an `EigenPod` instance, if they have not done so already.
+Allows a staker to deploy an `EigenPod` instance, if they have not done so already.
-Each Staker can only deploy a single `EigenPod` instance, but a single `EigenPod` can serve as the fee recipient / withdrawal credentials for any number of beacon chain validators. Each `EigenPod` is created using Create2 and the beacon proxy pattern, using the Staker's address as the Create2 salt.
+Each staker can only deploy a single `EigenPod` instance, but a single `EigenPod` can serve as the fee recipient / withdrawal credentials for any number of beacon chain validators. Each `EigenPod` is created using Create2 and the beacon proxy pattern, using the staker's address as the Create2 salt.
-As part of the `EigenPod` deployment process, the Staker is made the Pod Owner, a permissioned role within the `EigenPod`.
+As part of the `EigenPod` deployment process, the staker is made the Pod Owner, a permissioned role within the `EigenPod`.
*Effects*:
* Create2 deploys `EigenPodManager.beaconProxyBytecode`, appending the `eigenPodBeacon` address as a constructor argument. `bytes32(msg.sender)` is used as the salt.
@@ -60,20 +85,27 @@ As part of the `EigenPod` deployment process, the Staker is made the Pod Owner,
#### `stake`
```solidity
+/**
+ * @notice Stakes for a new beacon chain validator on the sender's EigenPod.
+ * Also creates an EigenPod for the sender if they don't have one already.
+ * @param pubkey The 48 bytes public key of the beacon chain validator.
+ * @param signature The validator's signature of the deposit data.
+ * @param depositDataRoot The root/hash of the deposit data for the validator's deposit.
+ */
function stake(
- bytes calldata pubkey,
- bytes calldata signature,
+ bytes calldata pubkey,
+ bytes calldata signature,
bytes32 depositDataRoot
-)
- external
+)
+ external
payable
onlyWhenNotPaused(PAUSED_NEW_EIGENPODS)
```
-Allows a Staker to deposit 32 ETH into the beacon chain deposit contract, providing the credentials for the Staker's beacon chain validator. The `EigenPod.stake` method is called, which automatically calculates the correct withdrawal credentials for the pod and passes these to the deposit contract along with the 32 ETH.
+Allows a staker to deposit 32 ETH into the beacon chain deposit contract, providing the credentials for the staker's beacon chain validator. The `EigenPod.stake` method is called, which automatically calculates the correct withdrawal credentials for the pod and passes these to the deposit contract along with the 32 ETH.
*Effects*:
-* Deploys and initializes an `EigenPod` on behalf of Staker, if this has not been done already
+* Deploys and initializes an `EigenPod` on behalf of staker, if this has not been done already
* See [`EigenPod.stake`](./EigenPod.md#stake)
*Requirements*:
@@ -82,143 +114,258 @@ Allows a Staker to deposit 32 ETH into the beacon chain deposit contract, provid
---
-### Withdrawal Processing
+## Withdrawal Processing
+
+These methods are callable ONLY by the DelegationManager, and are used when processing undelegations and withdrawals.
-The `DelegationManager` is the entry point for all undelegation and withdrawals, which must be queued for a time before being completed. When a withdrawal is initiated, the `DelegationManager` calls the following method:
-* [`removeShares`](#removeshares)
+**Concepts**:
+* [Shares Accounting - Handling Beacon Chain Balance Decreases](./accounting/SharesAccounting.md#handling-beacon-chain-balance-decreases-in-eigenpods)
+* [Deposit Shares and Beacon Chain Slashing](#deposit-shares-and-beacon-chain-slashing)
-When completing a queued undelegation or withdrawal, the `DelegationManager` calls one of these two methods:
+**Methods**:
+* [`removeDepositShares`](#removeDepositShares)
* [`addShares`](#addshares)
* [`withdrawSharesAsTokens`](#withdrawsharesastokens)
-#### `removeShares`
+#### Deposit Shares and Beacon Chain Slashing
+
+The `EigenPodManager` tracks a staker's _deposit shares_ and _beacon chain slashing factor_ using the following state variables:
```solidity
-function removeShares(
- address podOwner,
- uint256 shares
-)
- external
+/**
+ * @notice mapping from pod owner to the deposit shares they have in the virtual beacon chain ETH strategy
+ *
+ * @dev When an EigenPod registers a balance increase, deposit shares are increased. When registering a balance
+ * decrease, however, deposit shares are NOT decreased. Instead, the pod owner's beacon chain slashing factor
+ * is decreased proportional to the balance decrease. This impacts the number of shares that will be withdrawn
+ * when the deposit shares are queued for withdrawal in the DelegationManager.
+ *
+ * Note that prior to the slashing release, deposit shares were decreased when balance decreases occurred.
+ * In certain cases, a combination of queueing a withdrawal plus registering a balance decrease could result
+ * in a staker having negative deposit shares in this mapping. This negative value would be corrected when the
+ * staker completes a withdrawal (as tokens or as shares).
+ *
+ * With the slashing release, negative shares are no longer possible. However, a staker can still have negative
+ * shares if they met the conditions for them before the slashing release. If this is the case, that staker
+ * should complete any outstanding queued withdrawal in the DelegationManager ("as shares"). This will correct
+ * the negative share count and allow the staker to continue using their pod as normal.
+ */
+mapping(address podOwner => int256 shares) public podOwnerDepositShares;
+
+/**
+ * @notice The amount of beacon chain slashing experienced by a pod owner as a proportion of WAD
+ * @param isSet whether the slashingFactor has ever been updated. Used to distinguish between
+ * a value of "0" and an uninitialized value.
+ * @param slashingFactor the proportion of the pod owner's balance that has been decreased due to
+ * slashing or other beacon chain balance decreases.
+ * @dev NOTE: if !isSet, `slashingFactor` should be treated as WAD. `slashingFactor` is monotonically
+ * decreasing and can hit 0 if fully slashed.
+ */
+struct BeaconChainSlashingFactor {
+ bool isSet;
+ uint64 slashingFactor;
+}
+
+/// @notice Returns the slashing factor applied to the `staker` for the `beaconChainETHStrategy`
+/// Note: this value starts at 1 WAD (1e18) for all stakers, and is updated when a staker's pod registers
+/// a balance decrease.
+mapping(address staker => BeaconChainSlashingFactor) internal _beaconChainSlashingFactor;
+```
+
+#### `removeDepositShares`
+
+```solidity
+/**
+ * @notice Used by the DelegationManager to remove a pod owner's deposit shares when they enter the withdrawal queue.
+ * Simply decreases the `podOwner`'s shares by `shares`, down to a minimum of zero.
+ * @dev This function reverts if it would result in `podOwnerDepositShares[podOwner]` being less than zero, i.e. it is forbidden for this function to
+ * result in the `podOwner` incurring a "share deficit". This behavior prevents a Staker from queuing a withdrawal which improperly removes excessive
+ * shares from the operator to whom the staker is delegated.
+ * @dev The delegation manager validates that the podOwner is not address(0)
+ */
+function removeDepositShares(
+ address podOwner,
+ IStrategy strategy,
+ uint256 depositSharesToRemove
+)
+ external
onlyDelegationManager
```
-The `DelegationManager` calls this method when a Staker queues a withdrawal (or undelegates, which also queues a withdrawal). The shares are removed while the withdrawal is in the queue, and when the queue completes, the shares will either be re-awarded or withdrawn as tokens (`addShares` and `withdrawSharesAsTokens`, respectively).
+The `DelegationManager` calls this method when a staker queues a withdrawal (or undelegates, which also queues a withdrawal). The shares are removed while the withdrawal is in the queue, and when the queue completes, the shares will either be re-awarded or withdrawn as tokens (`addShares` and `withdrawSharesAsTokens`, respectively).
-The Staker's share balance is decreased by the removed `shares`.
+The staker's share balance is decreased by `depositSharesToRemove`.
-This method is not allowed to cause the `Staker's` balance to go negative. This prevents a Staker from queueing a withdrawal for more shares than they have (or more shares than they delegated to an Operator).
+This method is not allowed to cause the `staker's` balance to go negative. This prevents a staker from queueing a withdrawal for more shares than they have (or more shares than they delegated to an operator).
-*Entry Points*:
-* `DelegationManager.undelegate`
-* `DelegationManager.queueWithdrawals`
+Note that the amount of deposit shares removed while in the withdrawal queue may not equal the amount credited when the withdrawal is completed. The staker may receive fewer if slashing occurred; see [`DelegationManager.md`](./DelegationManager.md) for details.
*Effects*:
-* Removes `shares` from `podOwner's` share balance
+* Removes `depositSharesToRemove` from `podOwner` share balance in `podOwnerDepositShares`
+* Emits a `NewTotalShares` event
*Requirements*:
-* `podOwner` MUST NOT be zero
-* `shares` MUST NOT be negative when converted to `int256`
-* `shares` MUST NOT be greater than `podOwner's` share balance
-* `shares` MUST be a whole Gwei amount
+* Caller MUST be the `DelegationManager`
+* `strategy` MUST be `beaconChainETHStrategy`
+* `staker` MUST NOT be zero
+* `depositSharesToRemove` MUST be less than `staker` share balance in `podOwnerDepositShares`
#### `addShares`
```solidity
+/**
+ * @notice Increases the `podOwner`'s shares by `shares`, paying off negative shares if needed.
+ * Used by the DelegationManager to award a pod owner shares on exiting the withdrawal queue
+ * @return existingDepositShares the pod owner's shares prior to any additions. Returns 0 if negative
+ * @return addedShares the number of shares added to the staker's balance above 0. This means that if,
+ * after shares are added, the staker's balance is non-positive, this will return 0.
+ */
function addShares(
- address podOwner,
+ address staker,
+ IStrategy strategy,
uint256 shares
-)
- external
- onlyDelegationManager
- returns (uint256)
+)
+ external
+ onlyDelegationManager
+ returns (uint256, uint256)
```
-The `DelegationManager` calls this method when a queued withdrawal is completed and the withdrawer specifies that they want to receive the withdrawal as "shares" (rather than as the underlying tokens). A Pod Owner might want to do this in order to change their delegated Operator without needing to fully exit their validators.
-
-Note that typically, shares from completed withdrawals are awarded to a `withdrawer` specified when the withdrawal is initiated in `DelegationManager.queueWithdrawals`. However, because beacon chain ETH shares are linked to proofs provided to a Pod Owner's `EigenPod`, this method is used to award shares to the original Pod Owner.
+The `DelegationManager` calls this method when a queued withdrawal is completed and the withdrawer specifies that they want to receive the withdrawal "as shares" (rather than as the underlying tokens). A staker might want to do this in order to change their delegated operator without needing to fully exit their validators.
-If the Pod Owner has a share deficit (negative shares), the deficit is repaid out of the added `shares`. If the Pod Owner's positive share count increases, this change is returned to the `DelegationManager` to be delegated to the Pod Owner's Operator (if they have one).
+This method credits the input deposit shares to the staker. In most cases, the input `shares` equal the same shares originally removed when the withdrawal was queued. However, if the staker's operator was slashed (or the staker experienced beacon chain slashing), they may receive less. See [`DelegationManager.md`](./DelegationManager.md) for details.
-*Entry Points*:
-* `DelegationManager.completeQueuedWithdrawal`
-* `DelegationManager.completeQueuedWithdrawals`
+If the staker has a share deficit (negative shares), the deficit is repaid out of the added `shares`. If the Pod Owner's positive share count increases, this change is returned to the `DelegationManager` to be delegated to the staker's operator (if they have one).
*Effects*:
-* The `podOwner's` share balance is increased by `shares`
+* Increases `staker`'s deposit share balance in `podOwnerDepositShares` by `shares`
*Requirements*:
-* `podOwner` MUST NOT be zero
+* Caller MUST be the `DelegationManager`
+* `strategy` MUST be `beaconChainETHStrategy`
+* `staker` MUST NOT be `address(0)`
* `shares` MUST NOT be negative when converted to an `int256`
-* `shares` MUST be a whole Gwei amount
+* Emits `PodSharesUpdated` and `NewTotalShares` events
#### `withdrawSharesAsTokens`
```solidity
+/**
+ * @notice Used by the DelegationManager to complete a withdrawal, sending tokens to the pod owner
+ * @dev Prioritizes decreasing the podOwner's share deficit, if they have one
+ * @dev This function assumes that `removeShares` has already been called by the delegationManager, hence why
+ * we do not need to update the podOwnerDepositShares if `currentpodOwnerDepositShares` is positive
+ */
function withdrawSharesAsTokens(
- address podOwner,
- address destination,
+ address podOwner,
+ IStrategy strategy,
+ IERC20,
uint256 shares
-)
- external
+)
+ external
onlyDelegationManager
```
-The `DelegationManager` calls this method when a queued withdrawal is completed and the withdrawer specifies that they want to receive the withdrawal as tokens (rather than shares). This can be used to "fully exit" some amount of beacon chain ETH and send it to a recipient (via `EigenPod.withdrawRestakedBeaconChainETH`).
+The `DelegationManager` calls this method when a queued withdrawal is completed and the withdrawer specifies that they want to receive the withdrawal as the tokens underlying the shares. This can be used to "fully exit" some amount of native ETH and send it to the pod owner (via `EigenPod.withdrawRestakedBeaconChainETH`).
-Note that because this method entails withdrawing and sending beacon chain ETH, two conditions must be met for this method to succeed: (i) the ETH being withdrawn should already be in the `EigenPod`, and (ii) the amount being withdrawn should be accounted for in `EigenPod.withdrawableRestakedExecutionLayerGwei`. This latter condition can be achieved by completing an `EigenPod` checkpoint just prior to completing a queued `DelegationManager` withdrawal (see [EigenPod: Checkpointing Validators](./EigenPod.md#checkpointing-validators) for details).
+Note that because this method entails withdrawing and sending native ETH, two conditions must be met for this method to succeed: (i) the ETH being withdrawn should already be in the `EigenPod`, and (ii) the amount being withdrawn should be accounted for in `EigenPod.withdrawableExecutionLayerGwei`. This latter condition can be achieved by completing an `EigenPod` checkpoint just prior to completing a queued `DelegationManager` withdrawal (see [EigenPod: Checkpointing Validators](./EigenPod.md#checkpointing-validators) for details).
Also note that, like `addShares`, if the original Pod Owner has a share deficit (negative shares), the deficit is repaid out of the withdrawn `shares` before any native ETH is withdrawn.
-*Entry Points*:
-* `DelegationManager.completeQueuedWithdrawal`
-* `DelegationManager.completeQueuedWithdrawals`
-
*Effects*:
-* If `podOwner's` share balance is negative, `shares` are added until the balance hits 0
- * Any remaining shares are converted 1:1 to ETH and sent to `destination` (see [`EigenPod.withdrawRestakedBeaconChainETH`](./EigenPod.md#withdrawrestakedbeaconchaineth))
+* If `staker`'s share balance in `podOwnerDepositShares` is negative (i.e. the staker has a *deficit*):
+ * If `shares` is greater than the current deficit:
+ * Sets `staker` balance in `podOwnerDepositShares` to 0
+ * Subtracts `|deficit|` from `shares` and converts remaining shares 1:1 to ETH (see [`EigenPod.withdrawRestakedBeaconChainETH`](./EigenPod.md#withdrawrestakedbeaconchaineth))
+ * If `shares` is less than or equal to the current deficit:
+ * Increases `staker` negative balance in `podOwnerDepositShares` by `shares`, bringing it closer to 0
+ * Does *not* withdraw any shares
+* Emits `PodSharesUpdated` and `NewTotalShares` events
*Requirements*:
-* `podOwner` MUST NOT be zero
-* `destination` MUST NOT be zero
+* Caller MUST be the `DelegationManager`
+* `strategy` MUST be `beaconChainETHStrategy`
+* `staker` MUST NOT be `address(0)`
* `shares` MUST NOT be negative when converted to an `int256`
-* `shares` MUST be a whole Gwei amount
* See [`EigenPod.withdrawRestakedBeaconChainETH`](./EigenPod.md#withdrawrestakedbeaconchaineth)
---
-### Other Methods
+## Other Methods
+
+**Methods**:
+* [`recordBeaconChainETHBalanceUpdate`](#recordbeaconchainethbalanceupdate)
+* [`increaseBurnableShares`](#increaseburnableshares)
#### `recordBeaconChainETHBalanceUpdate`
```solidity
+/**
+ * @notice Adds any positive share delta to the pod owner's deposit shares, and delegates them to the pod
+ * owner's operator (if applicable). A negative share delta does NOT impact the pod owner's deposit shares,
+ * but will reduce their beacon chain slashing factor and delegated shares accordingly.
+ * @param podOwner is the pod owner whose balance is being updated.
+ * @param prevRestakedBalanceWei is the total amount restaked through the pod before the balance update, including
+ * any amount currently in the withdrawal queue.
+ * @param balanceDeltaWei is the amount the balance changed
+ * @dev Callable only by the podOwner's EigenPod contract.
+ * @dev Reverts if `sharesDelta` is not a whole Gwei amount
+ */
function recordBeaconChainETHBalanceUpdate(
address podOwner,
- int256 sharesDelta
-)
- external
- onlyEigenPod(podOwner)
+ uint256 prevRestakedBalanceWei,
+ int256 balanceDeltaWei
+)
+ external
+ onlyEigenPod(podOwner)
nonReentrant
```
-This method is called by an `EigenPod` to report a change in its Pod Owner's shares. It accepts a positive or negative `sharesDelta`, which is added/subtracted against the Pod Owner's shares. The delta is also communicated to the `DelegationManager`, which updates the number of shares the Pod Owner has delegated to an Operator.
+This method is called by an `EigenPod` to report a change in its pod owner's shares. It accepts a positive or negative `balanceDeltaWei`. A positive delta is added to the pod owner's _deposit shares,_ and delegated to their operator if applicable. A negative delta is NOT removed from the pod owner's deposit shares. Instead, the proportion of the balance decrease is used to update the pod owner's beacon chain slashing factor and decrease the number of shares delegated to their operator (if applicable).
-Note that this method _may_ result in a Pod Owner's shares going negative. This can occur when:
-* The Pod Owner has queued a withdrawal for all their Beacon Chain ETH shares via `DelegationManager.queueWithdrawals`
- * This will set the `EigenPodManager.podOwnerShares[podOwner]` to 0
-* The Pod Owner's pod reports a negative delta, perhaps due to the Pod Owner getting slashed on the beacon chain.
+**Note** that prior to the slashing release, negative balance deltas subtracted from the pod owner's shares, and could, in certain cases, result in a negative share balance. As of the slashing release, negative balance deltas no longer subtract from share balances, updating the beacon chain slashing factor instead.
-In this case, the Pod Owner's `podOwnerShares` will go negative.
-
-*Entry Points*:
-* `EigenPod.verifyWithdrawalCredentials`
-* `EigenPod.startCheckpoint`
-* `EigenPod.verifyCheckpointProofs`
+If a staker has negative shares as of the slashing release, this method will REVERT, preventing any further balance updates from their pod while the negative share balance persists. In order to fix this and restore the use of their pod, the staker should complete any outstanding withdrawals in the `DelegationManager` "as shares," which will correct the share deficit.
*Effects*:
-* Adds or removes `sharesDelta` from the Pod Owner's shares
-* If `sharesDelta` is negative: see [`DelegationManager.decreaseDelegatedShares`](./DelegationManager.md#decreasedelegatedshares)
-* If `sharesDelta` is positive: see [`DelegationManager.increaseDelegatedShares`](./DelegationManager.md#increasedelegatedshares)
+* If `balanceDeltaWei` is positive or 0:
+ * Adds `shares` to `podOwnerDepositShares` for `podOwner`
+ * Emits `PodSharesUpdated` and `NewTotalShares` events
+ * Calls [`DelegationManager.increaseDelegatedShares`](./DelegationManager.md#increasedelegatedshares)
+* If `balanceDeltaWei` is negative:
+ * Reduces slashing factor proportional to relative balance decrease
+ * Emits `BeaconChainSlashingFactorDecreased` event
+ * Calls [`DelegationManager.decreaseDelegatedShares`](./DelegationManager.md#decreasedelegatedshares)
*Requirements*:
* Caller MUST be the `EigenPod` associated with the passed-in `podOwner`
-* `sharesDelta` MUST be a whole Gwei amount
+* `podOwner` MUST NOT be `address(0)`
+* `balanceDeltaWei` MUST be a whole Gwei amount
+* Legacy withdrawals MUST be complete (i.e. `currentDepositShares >= 0`)
+
+#### `increaseBurnableShares`
+
+```solidity
+/**
+ * @notice Increase the amount of burnable shares for a given Strategy. This is called by the DelegationManager
+ * when an operator is slashed in EigenLayer.
+ * @param strategy The strategy to burn shares in.
+ * @param addedSharesToBurn The amount of added shares to burn.
+ * @dev This function is only called by the DelegationManager when an operator is slashed.
+ */
+function increaseBurnableShares(
+ IStrategy strategy,
+ uint256 addedSharesToBurn
+)
+ external
+ onlyDelegationManager
+```
+
+The `DelegationManager` calls this method when an operator is slashed, calculating the number of slashable shares and marking them for burning here.
+
+Unlike in the `StrategyManager`, there is no current mechanism to burn these shares, as burning requires the Pectra hard fork to be able to eject validators. This will be added in a future update.
+
+*Effects*:
+* Increases `burnableShares` for the beacon chain ETH strategy by `addedSharesToBurn`
+
+*Requirements*:
+* Can only be called by the `DelegationManager`
\ No newline at end of file
diff --git a/docs/core/StrategyManager.md b/docs/core/StrategyManager.md
index 346ced740d..ddb817dbd5 100644
--- a/docs/core/StrategyManager.md
+++ b/docs/core/StrategyManager.md
@@ -1,50 +1,58 @@
## StrategyManager
-| File | Type | Proxy |
-| -------- | -------- | -------- |
-| [`StrategyManager.sol`](../../src/contracts/core/StrategyManager.sol) | Singleton | Transparent proxy |
-| [`StrategyFactory.sol`](../../src/contracts/core/StrategyFactory.sol) | Singleton | Transparent proxy |
-| [`StrategyBaseTVLLimits.sol`](../../src/contracts/strategies/StrategyBaseTVLLimits.sol) | Instanced, one per supported token | - Strategies deployed outside the `StrategyFactory` use transparent proxies
- Anything deployed via the `StrategyFactory` uses a Beacon proxy |
+| File | Notes |
+| -------- | -------- |
+| [`StrategyManager.sol`](../../src/contracts/core/StrategyManager.sol) | singleton share manager hooked into core |
+| [`StrategyManagerStorage.sol`](../../src/contracts/core/StrategyManagerStorage.sol) | state variables |
+| [`IStrategyManager.sol`](../../src/contracts/interfaces/IStrategyManager.sol) | interface |
-The primary function of the `StrategyManager` is to handle accounting for individual Stakers as they deposit and withdraw supported tokens from their corresponding strategies. It is responsible for (i) allowing Stakers to deposit tokens into the corresponding strategy, (ii) allowing the `DelegationManager` to remove shares when a Staker queues a withdrawal, and (iii) allowing the `DelegationManager` to complete a withdrawal by either adding shares back to the Staker or withdrawing the shares as tokens via the corresponding strategy.
+StrategyFactory:
-Any ERC20-compatible token can be supported by deploying a `StrategyBaseTVLLimits` instance from the `StrategyFactory`. The `StrategyFactory` only allows a strategy to be deployed once per token, and automatically whitelists newly-deployed strategies. This is further documented in [Strategies](#strategies) below.
+| File | Notes |
+| -------- | -------- |
+| [`StrategyFactory.sol`](../../src/contracts/core/StrategyFactory.sol) | allows deployment of `StrategyBase` for ERC20 tokens |
+| [`StrategyBase.sol`](../../src/contracts/strategies/StrategyBase.sol) | deployed as a beacon proxy via `StrategyFactory` |
-Each supported token has its own instance of `StrategyBaseTVLLimits`, has two main functions (`deposit` and `withdraw`), both of which can only be called by the `StrategyManager`. These `StrategyBaseTVLLimits` contracts are fairly simple deposit/withdraw contracts that hold tokens deposited by Stakers. Because these strategies are essentially extensions of the `StrategyManager`, their functions are documented in this file (see [Strategies](#strategies) below).
+Individual strategies:
-Note that for the EIGEN/bEIGEN token specifically, the `EigenStrategy` contract is used instead of `StrategyBaseTVLLimits`. Additionally, the EIGEN/bEIGEN token and several LSTs whitelisted prior to the existence of the `StrategyFactory` are blacklisted within the `StrategyFactory` to prevent duplicate strategies from being deployed for these tokens.
+| File | Notes |
+| -------- | -------- |
+| [`StrategyBaseTVLLimits.sol`](../../src/contracts/strategies/StrategyBaseTVLLimits.sol) | Pre-StrategyFactory, deployed for certain LSTs. Each instances uses a transparent proxy pattern |
+| [`EigenStrategy.sol`](../../src/contracts/strategies/EigenStrategy.sol) | One-off strategy deployed to support EIGEN/bEIGEN |
-#### High-level Concepts
+## Overview
-This document organizes methods according to the following themes (click each to be taken to the relevant section):
+The primary function of the `StrategyManager` is to handle _deposit share_ accounting for individual stakers as they deposit and withdraw supported tokens from their corresponding strategies. Note that the `StrategyManager` only handles _deposit shares_. When the word _shares_ is used in this document, it refers to _deposit shares,_ specifically. For an explanation of other share types, see [Shares Accounting - Terminology](./accounting/SharesAccounting.md#terminology).
+
+The `StrategyManager` is responsible for (i) allowing stakers to deposit tokens into the corresponding strategy, (ii) allowing the `DelegationManager` to remove deposit shares when a staker queues a withdrawal, and (iii) allowing the `DelegationManager` to complete a withdrawal by either adding deposit shares back to the staker or withdrawing the deposit shares as tokens via the corresponding strategy.
+
+Any ERC20-compatible token can be supported by deploying a `StrategyBase` instance from the `StrategyFactory`. Under the hood, the `StrategyFactory` uses the beacon proxy pattern and only allows a strategy to be deployed once per token. Deployed strategies are automatically whitelists for deposit in the `StrategyManager`. For details, see [Strategies](#strategies) below.
+
+**Note**: for the EIGEN/bEIGEN token specifically, the `EigenStrategy` contract is used instead of `StrategyBase`. Additionally, the EIGEN/bEIGEN token are blacklisted within the `StrategyFactory` to prevent duplicate strategies from being deployed for these tokens.
+
+**Note**: for certain LST tokens, the `StrategyBaseTVLLimits` contract is used instead of `StrategyBase`. These strategies were deployed before the `StrategyFactory` allowed arbitrary ERC20 strategies. Unlike strategies deployed through the `StrategyFactory`, these `StrategyBaseTVLLimits` contracts use the transparent proxy pattern. For all intents and purposes, these instances behave the same as `StrategyBase` instances deployed from the `StrategyFactory`. The "TVL Limits" capability of these instances has never been used. Any tokens using one of these instances are blacklisted in the `StrategyFactory` to prevent duplicate strategies from being deployed for these tokens.
+
+The `StrategyManager's` responsibilities can be broken down into the following concepts:
* [Depositing Into Strategies](#depositing-into-strategies)
* [Withdrawal Processing](#withdrawal-processing)
+* [Burning Slashed Shares](#burning-slashed-shares)
* [Strategies](#strategies)
* [System Configuration](#system-configuration)
-#### Important state variables
-
-* `mapping(address => mapping(IStrategy => uint256)) public stakerStrategyShares`: Tracks the current balance a Staker holds in a given strategy. Updated on deposit/withdraw.
-* `mapping(address => IStrategy[]) public stakerStrategyList`: Maintains a list of the strategies a Staker holds a nonzero number of shares in.
- * Updated as needed when Stakers deposit and withdraw: if a Staker has a zero balance in a Strategy, it is removed from the list. Likewise, if a Staker deposits into a Strategy and did not previously have a balance, it is added to the list.
-* `mapping(IStrategy => bool) public strategyIsWhitelistedForDeposit`: The `strategyWhitelister` is (as of M2) a permissioned role that can be changed by the contract owner. The `strategyWhitelister` has currently whitelisted 3 `StrategyBaseTVLLimits` contracts in this mapping, one for each supported LST.
-* `mapping(IStrategy => bool) public thirdPartyTransfersForbidden`: The `strategyWhitelister` can disable third party transfers for a given strategy. If `thirdPartyTransfersForbidden[strategy] == true`:
- * Users cannot deposit on behalf of someone else (see [`depositIntoStrategyWithSignature`](#depositintostrategywithsignature)).
- * Users cannot withdraw on behalf of someone else. (see [`DelegationManager.queueWithdrawals`](./DelegationManager.md#queuewithdrawals))
-
-#### Helpful definitions
+## Parameterization
-* `stakerStrategyListLength(address staker) -> (uint)`:
- * Gives `stakerStrategyList[staker].length`
- * Used (especially by the `DelegationManager`) to determine whether a Staker has shares in any strategy in the `StrategyManager` (will be 0 if not)
-* `uint256 constant MAX_TOTAL_SHARES = 1e38 - 1`
- * The maximum total shares a single strategy can handle. This maximum prevents overflow in offchain services.
+* `MAX_TOTAL_SHARES = 1e38 - 1`
+ * The maximum total shares a single strategy can handle. This maximum prevents overflow in offchain services. Deposits that would increase a strategy's total shares beyond this value will revert.
+* `MAX_STAKER_STRATEGY_LIST_LENGTH = 32`
+ * The maximum number of unique `StrategyManager` strategies a staker can have deposits in. Any deposits that cause this number to be exceeded will revert.
+* `DEFAULT_BURN_ADDRESS = 0x00000000000000000000000000000000000E16E4`
+ * When slashed shares are burned, they are converted to tokens and transferred to this address, where they are unrecoverable.
---
-### Depositing Into Strategies
+## Depositing Into Strategies
-The following methods are called by Stakers as they (i) deposit LSTs into strategies to receive shares:
+The following methods are called by stakers as they (i) deposit ERC20 tokens into strategies to receive deposit shares:
* [`StrategyManager.depositIntoStrategy`](#depositintostrategy)
* [`StrategyManager.depositIntoStrategyWithSignature`](#depositintostrategywithsignature)
@@ -54,39 +62,67 @@ Withdrawals are performed through the `DelegationManager` (see [`DelegationManag
#### `depositIntoStrategy`
```solidity
+/**
+ * @notice Deposits `amount` of `token` into the specified `strategy` and credits shares to the caller
+ * @param strategy the strategy that handles `token`
+ * @param token the token from which the `amount` will be transferred
+ * @param amount the number of tokens to deposit
+ * @return depositShares the number of deposit shares credited to the caller
+ * @dev The caller must have previously approved this contract to transfer at least `amount` of `token` on their behalf.
+ *
+ * WARNING: Be extremely cautious when depositing tokens that do not strictly adhere to ERC20 standards.
+ * Tokens that diverge significantly from ERC20 norms can cause unexpected behavior in token balances for
+ * that strategy, e.g. ERC-777 tokens allowing cross-contract reentrancy.
+ */
function depositIntoStrategy(
- IStrategy strategy,
- IERC20 token,
+ IStrategy strategy,
+ IERC20 token,
uint256 amount
)
external
onlyWhenNotPaused(PAUSED_DEPOSITS)
- onlyNotFrozen(msg.sender)
nonReentrant
- returns (uint256 shares)
+ returns (uint256 depositShares)
```
-Allows a Staker to deposit some `amount` of `token` into the specified `strategy` in exchange for shares of that strategy. The underlying `strategy` must be one of the whitelisted `StrategyBaseTVLLimits` instances, and the `token` parameter corresponds to the actual token being transferred as part of the deposit.
+Allows a staker to deposit some `amount` of `token` into the specified `strategy` in exchange for deposit shares in that strategy. The underlying `strategy` must be whitelisted for deposits, meaning it has either been deployed via the `StrategyFactory`, or is an existing `StrategyBaseTVLLimits/EigenStrategy` instance. The `token` parameter should correspond to the strategy's supported token.
The number of shares received is calculated by the `strategy` using an internal exchange rate that depends on the previous number of tokens deposited.
-If the Staker is delegated to an Operator, the Operator's delegated shares are increased in the `DelegationManager`.
+After processing a deposit, the `StrategyManager` forwards the deposit information to the `DelegationManager`, which updates the staker's deposit scaling factor and delegates shares to the staker's operator (if applicable). See [`DelegationManager.increaseDelegatedShares`](./DelegationManager.md#increasedelegatedshares) for details.
*Effects*:
* `token.safeTransferFrom`: Transfers `amount` of `token` to `strategy` on behalf of the caller.
-* See [`StrategyBaseTVLLimits.deposit`](#strategybasetvllimitsdeposit)
-* `StrategyManager` awards the Staker with the newly-created shares
+* `StrategyManager` awards the staker with the newly-created deposit shares
+* See [`StrategyBase.deposit`](#strategybasedeposit)
* See [`DelegationManager.increaseDelegatedShares`](./DelegationManager.md#increasedelegatedshares)
*Requirements*:
* Pause status MUST NOT be set: `PAUSED_DEPOSITS`
* Caller MUST allow at least `amount` of `token` to be transferred by `StrategyManager` to the strategy
-* `strategy` in question MUST be whitelisted for deposits.
-* See [`StrategyBaseTVLLimits.deposit`](#strategybasetvllimitsdeposit)
+* `strategy` in question MUST be whitelisted for deposits.
+* See [`StrategyBaseTVLLimits.deposit`](#strategybasedeposit)
#### `depositIntoStrategyWithSignature`
```solidity
+/**
+ * @notice Deposits `amount` of `token` into the specified `strategy` and credits shares to the `staker`
+ * Note tokens are transferred from `msg.sender`, NOT from `staker`. This method allows the caller, using a
+ * signature, to deposit their tokens to another staker's balance.
+ * @param strategy the strategy that handles `token`
+ * @param token the token from which the `amount` will be transferred
+ * @param amount the number of tokens to transfer from the caller to the strategy
+ * @param staker the staker that the deposited assets will be credited to
+ * @param expiry the timestamp at which the signature expires
+ * @param signature a valid ECDSA or EIP-1271 signature from `staker`
+ * @return depositShares the number of deposit shares credited to `staker`
+ * @dev The caller must have previously approved this contract to transfer at least `amount` of `token` on their behalf.
+ *
+ * WARNING: Be extremely cautious when depositing tokens that do not strictly adhere to ERC20 standards.
+ * Tokens that diverge significantly from ERC20 norms can cause unexpected behavior in token balances for
+ * that strategy, e.g. ERC-777 tokens allowing cross-contract reentrancy.
+ */
function depositIntoStrategyWithSignature(
IStrategy strategy,
IERC20 token,
@@ -97,134 +133,218 @@ function depositIntoStrategyWithSignature(
)
external
onlyWhenNotPaused(PAUSED_DEPOSITS)
- onlyNotFrozen(staker)
nonReentrant
- returns (uint256 shares)
+ returns (uint256 depositShares)
```
-This method has a similar purpose as `depositIntoStrategy()`, except it is intended to be used when submitting a deposit on behalf of `staker` which will be credited with the new shares.
+This method works like `depositIntoStrategy()`, transferring tokens _from the caller_ to the `strategy` contract. Unlike `depositIntoStrategy`, the resulting deposit shares are credited to the passed-in `staker` address, which must sign off on this intent.
*Effects*: See `depositIntoStrategy` above. Additionally:
-* The Staker's nonce is incremented
+* The staker's nonce is incremented
*Requirements*: See `depositIntoStrategy` above. Additionally:
* Caller MUST provide a valid, unexpired signature over the correct fields
-* `thirdPartyTransfersForbidden[strategy]` MUST be false
---
-### Withdrawal Processing
+## Withdrawal Processing
These methods are callable ONLY by the `DelegationManager`, and are used when processing undelegations and withdrawals:
-* [`StrategyManager.removeShares`](#removeshares)
+* [`StrategyManager.removeDepositShares`](#removedepositshares)
* [`StrategyManager.addShares`](#addshares)
* [`StrategyManager.withdrawSharesAsTokens`](#withdrawsharesastokens)
See [`DelegationManager.md`](./DelegationManager.md) for more context on how these methods are used.
-#### `removeShares`
+#### `removeDepositShares`
```solidity
-function removeShares(
+/// @notice Used by the DelegationManager to remove a Staker's shares from a particular strategy when entering the withdrawal queue
+/// @dev strategy must be beaconChainETH when talking to the EigenPodManager
+function removeDepositShares(
address staker,
IStrategy strategy,
- uint256 shares
+ uint256 depositSharesToRemove
)
external
onlyDelegationManager
```
-The `DelegationManager` calls this method when a Staker queues a withdrawal (or undelegates, which also queues a withdrawal). The shares are removed while the withdrawal is in the queue, and when the queue completes, the shares will either be re-awarded or withdrawn as tokens (`addShares` and `withdrawSharesAsTokens`, respectively).
+The `DelegationManager` calls this method when a staker queues a withdrawal (or undelegates, which also queues a withdrawal). The staker's deposit shares are removed while the withdrawal is in the queue, and when the withdrawal is completed, the staker can choose whether to be re-awarded the shares, or to convert and receive them as tokens (`addShares` and `withdrawSharesAsTokens`, respectively).
-The Staker's share balance for the `strategy` is decreased by the removed `shares`. If this causes the Staker's share balance to hit zero, the `strategy` is removed from the Staker's strategy list.
+The staker's deposit share balance for the `strategy` is decreased by the removed `depositSharesToRemove`. If this causes the staker's share balance to hit zero, the `strategy` is removed from the staker's strategy list.
-*Entry Points*:
-* `DelegationManager.undelegate`
-* `DelegationManager.queueWithdrawals`
+Note that the amount of deposit shares removed while in the withdrawal queue may not equal the amount credited when the withdrawal is completed. The staker may receive fewer if slashing occurred; see [`DelegationManager.md`](./DelegationManager.md) for details.
*Effects*:
-* The Staker's share balance for the given `strategy` is decreased by the given `shares`
- * If this causes the balance to hit zero, the `strategy` is removed from the Staker's strategy list
+* Decrease the staker's deposit share balance for the given `strategy` by the given `depositSharesToRemove`
+ * If this causes the balance to hit zero, the `strategy` is removed from the staker's strategy list
*Requirements*:
* Caller MUST be the `DelegationManager`
-* `staker` parameter MUST NOT be zero
-* `shares` parameter MUST NOT be zero
-* `staker` MUST have at least `shares` balance for the given `strategy`
+* `depositSharesToRemove` parameter MUST NOT be zero
+* `staker` MUST have at least `depositSharesToRemove` balance for the given `strategy`
#### `addShares`
```solidity
+/// @notice Used by the DelegationManager to award a Staker some shares that have passed through the withdrawal queue
+/// @dev strategy must be beaconChainETH when talking to the EigenPodManager
+/// @return existingDepositShares the shares the staker had before any were added
+/// @return addedShares the new shares added to the staker's balance
function addShares(
address staker,
IStrategy strategy,
uint256 shares
-)
- external
+)
+ external
onlyDelegationManager
+ returns (uint256, uint256)
```
-The `DelegationManager` calls this method when a queued withdrawal is completed and the withdrawer specifies that they want to receive the withdrawal as "shares" (rather than as the underlying tokens). In this case, the `shares` originally removed (via `removeShares`) are awarded to the `staker` passed in by the `DelegationManager`.
+The `DelegationManager` calls this method when a queued withdrawal is completed and the withdrawer specifies that they want to receive the withdrawal "as shares" (rather than as the underlying tokens).
+
+This method credits the input deposit shares to the staker. In most cases, the input `shares` equal the same shares originally removed when the withdrawal was queued. However, if the staker's operator was slashed, they may receive less. See [`DelegationManager.md`](./DelegationManager.md) for details.
-*Entry Points*:
-* `DelegationManager.completeQueuedWithdrawal`
-* `DelegationManager.completeQueuedWithdrawals`
+**Note** that if the staker has deposits in `MAX_STAKER_STRATEGY_LIST_LENGTH` unique strategies (and the input `strategy` is not among them), this method will revert. The staker can still choose to complete the withdrawal "as tokens" (See [`DelegationManager.completeQueuedWithdrawal`](./DelegationManager.md#completequeuedwithdrawal)).
*Effects*:
-* The `staker's` share balance for the given `strategy` is increased by `shares`
+* Increase the `staker's` deposit share balance for the given `strategy` by `shares`
* If the prior balance was zero, the `strategy` is added to the `staker's` strategy list
+* Emit a `Deposit` event
*Requirements*:
* Caller MUST be the `DelegationManager`
* `staker` parameter MUST NOT be zero
* `shares` parameter MUST NOT be zero
+* Length of `stakerStrategyList` for the `staker` MUST NOT exceed `MAX_STAKER_STRATEGY_LIST_LENGTH`
#### `withdrawSharesAsTokens`
```solidity
+/// @notice Used by the DelegationManager to convert deposit shares to tokens and send them to a staker
+/// @dev strategy must be beaconChainETH when talking to the EigenPodManager
+/// @dev token is not validated when talking to the EigenPodManager
function withdrawSharesAsTokens(
- address recipient,
+ address staker,
IStrategy strategy,
- uint shares,
- IERC20 token
+ IERC20 token,
+ uint256 shares
)
external
onlyDelegationManager
```
-The `DelegationManager` calls this method when a queued withdrawal is completed and the withdrawer specifies that they want to receive the withdrawal as the tokens underlying the shares. In this case, the `shares` originally removed (via `removeShares`) are converted to tokens within the `strategy` and sent to the `recipient`.
+The `DelegationManager` calls this method when a queued withdrawal is completed and the withdrawer specifies that they want to receive the withdrawal as the tokens underlying the shares.
-*Entry Points*:
-* `DelegationManager.completeQueuedWithdrawal`
-* `DelegationManager.completeQueuedWithdrawals`
+This method directs the `strategy` to convert the input deposit shares to tokens and send them to the `staker`. In most cases, the input `shares` equal the same shares originally removed when the withdrawal was queued. However, if the staker's operator was slashed, they may receive less. See [`DelegationManager.md`](./DelegationManager.md) for details.
*Effects*:
-* Calls [`StrategyBaseTVLLimits.withdraw`](#strategybasetvllimitswithdraw)
+* Calls [`StrategyBase.withdraw`](#strategybasewithdraw)
*Requirements*:
* Caller MUST be the `DelegationManager`
-* See [`StrategyBaseTVLLimits.withdraw`](#strategybasetvllimitswithdraw)
+* See [`StrategyBase.withdraw`](#strategybasewithdraw)
+
+---
+
+## Burning Slashed Shares
+
+Slashed shares are marked as burnable, and anyone can call `burnShares` to transfer them to the default burn address. Burnable shares are stored in `burnableShares`, an [EnumerableMap](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.9.0/contracts/utils/structs/EnumerableMap.sol) with strategy contract addresses as keys and associated view functions. The following methods handle burning of slashed shares:
+* [`StrategyManager.increaseBurnableShares`](#increaseburnableshares)
+* [`StrategyManager.burnShares`](#burnshares)
+
+#### `increaseBurnableShares`
+
+```solidity
+/**
+ * @notice Increase the amount of burnable shares for a given Strategy. This is called by the DelegationManager
+ * when an operator is slashed in EigenLayer.
+ * @param strategy The strategy to burn shares in.
+ * @param addedSharesToBurn The amount of added shares to burn.
+ * @dev This function is only called by the DelegationManager when an operator is slashed.
+ */
+function increaseBurnableShares(
+ IStrategy strategy,
+ uint256 addedSharesToBurn
+)
+ external
+ onlyDelegationManager
+```
+
+The `DelegationManager` calls this method when an operator is slashed, calculating the number of slashable shares and marking them for burning here.
+
+Anyone can then convert the shares to tokens and trigger a burn via `burnShares`. This asynchronous burning method was added to mitigate potential DoS vectors when slashing.
+
+*Effects*:
+* Increases `burnableShares` for the given `strategy` by `addedSharesToBurn`
+
+*Requirements*:
+* Can only be called by the `DelegationManager`
+
+#### `burnShares`
+
+```solidity
+/**
+ * @notice Burns Strategy shares for the given strategy by calling into the strategy to transfer
+ * to the default burn address.
+ * @param strategy The strategy to burn shares in.
+ */
+function burnShares(
+ IStrategy strategy
+)
+ external
+```
+
+Anyone can call this method to burn slashed shares previously added by the `DelegationManager` via `increaseBurnableShares`. This method resets the strategy's burnable shares to 0, and directs the corresponding `strategy` to convert the shares to tokens and transfer them to `DEFAULT_BURN_ADDRESS`, rendering them unrecoverable.
+
+*Effects*:
+* Resets the strategy's burnable shares to 0
+* Calls `withdraw` on the `strategy`, withdrawing shares and sending a corresponding amount of tokens to the `DEFAULT_BURN_ADDRESS`
---
-### Strategies
+## Strategies
-`StrategyBaseTVLLimits` only has two methods of note, and both can only be called by the `StrategyManager`. Documentation for these methods are included below, rather than in a separate file:
-* [`StrategyBaseTVLLimits.deposit`](#strategybasetvllimitsdeposit)
-* [`StrategyBaseTVLLimits.withdraw`](#strategybasetvllimitswithdraw)
+**Concepts**:
+* [StrategyBase vs StrategyBaseTVLLimits](#strategybase-vs-strategybasetvllimits)
-Additionally, using the `StrategyFactory`, anyone can deploy a new `StrategyBaseTVLLimits` instance for a particular token. The `StrategyFactory` manages these deployments and other strategy whitelisting features in the following methods:
+**Methods**:
+* [`StrategyBase.deposit`](#strategybasedeposit)
+* [`StrategyBase.withdraw`](#strategybasewithdraw)
* [`StrategyFactory.deployNewStrategy`](#strategyfactorydeploynewstrategy)
* [`StrategyFactory.blacklistTokens`](#strategyfactoryblacklisttokens)
* [`StrategyFactory.whitelistStrategies`](#strategyfactorywhiteliststrategies)
-* [`StrategyFactory.setThirdPartyTransfersForbidden`](#strategyfactorysetthirdpartytransfersforbidden)
* [`StrategyFactory.removeStrategiesFromWhitelist`](#strategyfactoryremovestrategiesfromwhitelist)
-#### `StrategyBaseTVLLimits.deposit`
+#### `StrategyBase` vs `StrategyBaseTVLLimits`
+
+Before the introduction of the `StrategyFactory`, strategies were manually deployed and whitelisted in the `StrategyManager`. These strategies used `StrategyBaseTVLLimits.sol`, and were deployed using the transparent proxy pattern. With the introduction of the `StrategyFactory`, anyone can create a depositable strategy for any ERC20 (provided it does not have a deployed strategy yet). The `StrategyFactory` deploys beacon proxies, each of which points at a single implementation of `StrategyBase.sol`.
+
+Though these are two different contracts, `StrategyBaseTVLLimits` inherits all its basic functionality from `StrategyBase`, and only implements a "TVL limits" capability on top of them. In short, this additional functionality checks, before each deposit, whether:
+1. the deposit amount exceeds a configured `maxPerDeposit`
+2. the total token balance after the deposit exceeds a configured `maxTotalDeposits`
+
+To this date, however, these "TVL limits" capabilities have _never_ been used. The values for both of the variables mentioned above have been set to `type(uint).max` since deployment, and there is no plan to change these. Effectively, all instances of `StrategyBaseTVLLimits` behave identically to instances of `StrategyBase` - with the exception being that the former uses a transparent proxy, and the latter a beacon proxy.
+
+#### `StrategyBase.deposit`
```solidity
+/**
+ * @notice Used to deposit tokens into this Strategy
+ * @param token is the ERC20 token being deposited
+ * @param amount is the amount of token being deposited
+ * @dev This function is only callable by the strategyManager contract. It is invoked inside of the strategyManager's
+ * `depositIntoStrategy` function, and individual share balances are recorded in the strategyManager as well.
+ * @dev Note that the assumption is made that `amount` of `token` has already been transferred directly to this contract
+ * (as performed in the StrategyManager's deposit functions). In particular, setting the `underlyingToken` of this contract
+ * to be a fee-on-transfer token will break the assumption that the amount this contract *received* of the token is equal to
+ * the amount that was input when the transfer was performed (i.e. the amount transferred 'out' of the depositor's balance).
+ * @dev Note that any validation of `token` is done inside `_beforeDeposit`. This can be overridden if needed.
+ * @return newShares is the number of new shares issued at the current exchange ratio.
+ */
function deposit(
- IERC20 token,
+ IERC20 token,
uint256 amount
)
external
@@ -233,13 +353,9 @@ function deposit(
returns (uint256 newShares)
```
-The `StrategyManager` calls this method when Stakers deposit LSTs into a strategy. At the time this method is called, the tokens have already been transferred to the strategy. The role of this method is to (i) calculate the number of shares the deposited tokens represent according to the exchange rate, and (ii) add the new shares to the strategy's recorded total shares.
+The `StrategyManager` calls this method when stakers deposit ERC20 tokens into a strategy. At the time this method is called, the tokens have already been transferred to the strategy. The role of this method is to (i) calculate the number of deposit shares the tokens represent according to the exchange rate, and (ii) add the new deposit shares to the strategy's recorded total shares.
-The new shares created are returned to the `StrategyManager` to be added to the Staker's strategy share balance.
-
-*Entry Points*:
-* `StrategyManager.depositIntoStrategy`
-* `StrategyManager.depositIntoStrategyWithSignature`
+The number of new shares created are returned to the `StrategyManager` to be added to the staker's strategy share balance.
*Effects*:
* `StrategyBaseTVLLimits.totalShares` is increased to account for the new shares created by the deposit
@@ -249,18 +365,26 @@ The new shares created are returned to the `StrategyManager` to be added to the
* Pause status MUST NOT be set: `PAUSED_DEPOSITS`
* The passed-in `token` MUST match the strategy's `underlyingToken`
* The token amount being deposited MUST NOT exceed the per-deposit cap
-* After deposit, the strategy's current token balance MUST NOT exceed the total-deposit cap
* When converted to shares via the strategy's exchange rate:
* The `amount` of `token` deposited MUST represent at least 1 new share for the depositor
* The new total shares awarded by the strategy MUST NOT exceed `MAX_TOTAL_SHARES`
-#### `StrategyBaseTVLLimits.withdraw`
+#### `StrategyBase.withdraw`
```solidity
+/**
+ * @notice Used to withdraw tokens from this Strategy, to the `recipient`'s address
+ * @param recipient is the address to receive the withdrawn funds
+ * @param token is the ERC20 token being transferred out
+ * @param amountShares is the amount of shares being withdrawn
+ * @dev This function is only callable by the strategyManager contract. It is invoked inside of the strategyManager's
+ * other functions, and individual share balances are recorded in the strategyManager as well.
+ * @dev Note that any validation of `token` is done inside `_beforeWithdrawal`. This can be overridden if needed.
+ */
function withdraw(
- address recipient,
- IERC20 token,
+ address recipient,
+ IERC20 token,
uint256 amountShares
)
external
@@ -268,13 +392,9 @@ function withdraw(
onlyStrategyManager
```
-The `StrategyManager` calls this method when a queued withdrawal is completed and the withdrawer has specified they would like to convert their withdrawn shares to tokens.
+The `StrategyManager` calls this method to convert a number of deposit shares to tokens, and transfer them to a `recipient`. Typically, this method is invoked as part of the withdrawal completion flow (see [`DelegationManager.completeQueuedWithdrawal`](./DelegationManager.md#completequeuedwithdrawal)). However, this method may also be invoked during the share burning flow (see [`StrategyManager.burnShares`](#burnshares)).
-This method converts the withdrawal shares back into tokens using the strategy's exchange rate. The strategy's total shares are decreased to reflect the withdrawal before transferring the tokens to the `recipient`.
-
-*Entry Points*:
-* `DelegationManager.completeQueuedWithdrawal`
-* `DelegationManager.completeQueuedWithdrawals`
+This method converts the deposit shares back into tokens using the strategy's exchange rate. The strategy's total shares are decreased to reflect the withdrawal before transferring the tokens to the `recipient`.
*Effects*:
* `StrategyBaseTVLLimits.totalShares` is decreased to account for the shares being withdrawn
@@ -290,20 +410,26 @@ This method converts the withdrawal shares back into tokens using the strategy's
#### `StrategyFactory.deployNewStrategy`
```solidity
+/**
+ * @notice Deploy a new StrategyBase contract for the ERC20 token, using a beacon proxy
+ * @dev A strategy contract must not yet exist for the token.
+ * @dev Immense caution is warranted for non-standard ERC20 tokens, particularly "reentrant" tokens
+ * like those that conform to ERC777.
+ */
function deployNewStrategy(IERC20 token)
external
onlyWhenNotPaused(PAUSED_NEW_STRATEGIES)
returns (IStrategy newStrategy)
```
-Allows anyone to deploy a new `StrategyBaseTVLLimits` instance that supports deposits/withdrawals using the provided `token`. As part of calling this method, the `StrategyFactory` automatically whitelists the new strategy in the `StrategyManager`.
+Allows anyone to deploy a new `StrategyBase` instance that supports deposits/withdrawals using the provided `token`. As part of calling this method, the `StrategyFactory` automatically whitelists the new strategy for deposits via the `StrategyManager`.
Note that the `StrategyFactory` only permits ONE strategy deployment per `token`. Once a `token` has an associated strategy deployed via this method, `deployNewStrategy` cannot be used to deploy a strategy for `token` again. Additionally, `deployNewStrategy` will reject any `token` placed onto the `StrategyFactory` blacklist. This feature was added to prevent the deployment of strategies that existed _before_ the `StrategyFactory` was created. For details, see [`StrategyFactory.blacklistTokens`](#strategyfactoryblacklisttokens).
**NOTE: Use caution when deploying strategies for tokens that do not strictly conform to ERC20 standards. Rebasing tokens similar to already-whitelisted LSTs should be supported, but please DYOR if your token falls outside of ERC20 norms.** Specific things to look out for include (but are not limited to): exotic rebasing tokens, tokens that support reentrant behavior (like ERC-777), and other nonstandard ERC20 derivatives.
*Effects*:
-* Deploys a new `BeaconProxy` for the `token`, which references the current `StrategyBaseTVLLimits` implementation
+* Deploys a new `BeaconProxy` for the `token`, which references the current `StrategyBase` implementation
* Updates the `tokenStrategy` mapping for the `token`, preventing a second strategy deployment for the same token
* See `StrategyManager.addStrategiesToDepositWhitelist`
@@ -316,7 +442,13 @@ Note that the `StrategyFactory` only permits ONE strategy deployment per `token`
#### `StrategyFactory.blacklistTokens`
```solidity
-function blacklistTokens(IERC20[] calldata tokens) external onlyOwner
+/**
+ * @notice Owner-only function to prevent strategies from being created for given tokens.
+ * @param tokens An array of token addresses to blacklist.
+ */
+function blacklistTokens(IERC20[] calldata tokens)
+ external
+ onlyOwner
```
Allows the owner to prevent certain `tokens` from having strategies deployed via `StrategyFactory.deployNewStrategy`. This method was added to prevent the deployment of strategies for tokens that already have strategies deployed/whitelisted through other means.
@@ -333,11 +465,13 @@ Note that once the owner adds tokens to the blacklist, they cannot be removed. T
#### `StrategyFactory.whitelistStrategies`
```solidity
+/**
+ * @notice Owner-only function to pass through a call to `StrategyManager.addStrategiesToDepositWhitelist`
+ */
function whitelistStrategies(
- IStrategy[] calldata strategiesToWhitelist,
- bool[] calldata thirdPartyTransfersForbiddenValues
-)
- external
+ IStrategy[] calldata strategiesToWhitelist
+)
+ external
onlyOwner
```
@@ -350,25 +484,17 @@ Allows the owner to explicitly whitelist strategies in the `StrategyManager`. Th
* Caller MUST be the owner
* See `StrategyManager.addStrategiesToDepositWhitelist`
-#### `StrategyFactory.setThirdPartyTransfersForbidden`
-
-```solidity
-function setThirdPartyTransfersForbidden(IStrategy strategy, bool value) external onlyOwner
-```
-
-Allows the owner to explicitly enable or disable third party transfers in the `StrategyManager`. This method is used as a passthrough for the `StrategyManager.setThirdPartyTransfersForbidden`, in case the owner needs to modify these values.
-
-*Effects*:
-* See `StrategyManager.setThirdPartyTransfersForbidden`
-
-*Requirements*:
-* Caller MUST be the owner
-* See `StrategyManager.setThirdPartyTransfersForbidden`
-
#### `StrategyFactory.removeStrategiesFromWhitelist`
```solidity
-function removeStrategiesFromWhitelist(IStrategy[] calldata strategiesToRemoveFromWhitelist) external
+/**
+ * @notice Owner-only function to pass through a call to `StrategyManager.removeStrategiesFromDepositWhitelist`
+ */
+function removeStrategiesFromWhitelist(
+ IStrategy[] calldata strategiesToRemoveFromWhitelist
+)
+ external
+ onlyOwner
```
Allows the owner to remove strategies from the `StrategyManager` strategy whitelist. This method is used as a passthrough for the `StrategyManager.removeStrategiesFromDepositWhitelist`, in case the owner needs to access this method.
@@ -382,17 +508,20 @@ Allows the owner to remove strategies from the `StrategyManager` strategy whitel
---
-### System Configuration
+## System Configuration
The Strategy Whitelister role has the ability to permit/remove strategies from being depositable via the `StrategyManager`. This role is held by the `StrategyFactory` (which is fully documented in [Strategies](#strategies)). The following methods concern the Strategy Whitelister role and its abilities within the `StrategyManager`:
* [`StrategyManager.setStrategyWhitelister`](#setstrategywhitelister)
* [`StrategyManager.addStrategiesToDepositWhitelist`](#addstrategiestodepositwhitelist)
* [`StrategyManager.removeStrategiesFromDepositWhitelist`](#removestrategiesfromdepositwhitelist)
-* [`StrategyManager.setThirdPartyTransfersForbidden`](#setthirdpartytransfersforbidden)
#### `setStrategyWhitelister`
```solidity
+/**
+ * @notice Owner-only function to change the `strategyWhitelister` address.
+ * @param newStrategyWhitelister new address for the `strategyWhitelister`.
+ */
function setStrategyWhitelister(address newStrategyWhitelister) external onlyOwner
```
@@ -407,11 +536,14 @@ Allows the `owner` to update the Strategy Whitelister address. Currently, the St
#### `addStrategiesToDepositWhitelist`
```solidity
+/**
+ * @notice Owner-only function that adds the provided Strategies to the 'whitelist' of strategies that stakers can deposit into
+ * @param strategiesToWhitelist Strategies that will be added to the `strategyIsWhitelistedForDeposit` mapping (if they aren't in it already)
+ */
function addStrategiesToDepositWhitelist(
- IStrategy[] calldata strategiesToWhitelist,
- bool[] calldata thirdPartyTransfersForbiddenValues
-)
- external
+ IStrategy[] calldata strategiesToWhitelist
+)
+ external
onlyStrategyWhitelister
```
@@ -419,7 +551,6 @@ Allows the Strategy Whitelister to add any number of strategies to the `Strategy
*Effects*:
* Adds entries to `StrategyManager.strategyIsWhitelistedForDeposit`
-* Sets `thirdPartyTransfersForbidden` for each added strategy
*Requirements*:
* Caller MUST be the `strategyWhitelister`
@@ -427,38 +558,21 @@ Allows the Strategy Whitelister to add any number of strategies to the `Strategy
#### `removeStrategiesFromDepositWhitelist`
```solidity
+/**
+ * @notice Owner-only function that removes the provided Strategies from the 'whitelist' of strategies that stakers can deposit into
+ * @param strategiesToRemoveFromWhitelist Strategies that will be removed to the `strategyIsWhitelistedForDeposit` mapping (if they are in it)
+ */
function removeStrategiesFromDepositWhitelist(
IStrategy[] calldata strategiesToRemoveFromWhitelist
-)
- external
+)
+ external
onlyStrategyWhitelister
```
-Allows the Strategy Whitelister to remove any number of strategies from the `StrategyManager` whitelist. The removed strategies will no longer be eligible for deposit via `depositIntoStrategy`. However, withdrawals for previously-whitelisted strategies may still be initiated and completed, as long as the Staker has shares to withdraw.
+Allows the Strategy Whitelister to remove any number of strategies from the `StrategyManager` whitelist. The removed strategies will no longer be eligible for deposit via `depositIntoStrategy`. However, withdrawals for previously-whitelisted strategies may still be initiated and completed, as long as the staker has shares to withdraw.
*Effects*:
* Removes entries from `StrategyManager.strategyIsWhitelistedForDeposit`
*Requirements*:
* Caller MUST be the `strategyWhitelister`
-
-#### `setThirdPartyTransfersForbidden`
-
-```solidity
-function setThirdPartyTransfersForbidden(
- IStrategy strategy,
- bool value
-)
- external
- onlyStrategyWhitelister
-```
-
-Allows the Strategy Whitelister to enable or disable third-party transfers for any `strategy`. If third-party transfers are disabled:
-* Deposits via [`depositIntoStrategyWithSiganture`](#depositintostrategywithsignature) are disabled.
-* Withdrawals to a different address via [`DelegationManager.queueWithdrawals`](./DelegationManager.md#queuewithdrawals) are disabled.
-
-*Effects*:
-* Sets `thirdPartyTransfersForbidden[strategy]`, even if that strategy is not currently whitelisted
-
-*Requirements*:
-* Caller MUST be the `strategyWhitelister`
diff --git a/docs/core/accounting/SharesAccounting.md b/docs/core/accounting/SharesAccounting.md
new file mode 100644
index 0000000000..940dfab0a1
--- /dev/null
+++ b/docs/core/accounting/SharesAccounting.md
@@ -0,0 +1,477 @@
+
+[elip-002]: https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md
+
+# Shares Accounting
+
+This document outlines the changes to the staker and operator Shares accounting resulting from the Slashing Upgrade. There are several introduced variables such as the _deposit scaling factor_ ($k_n$), _max magnitude_ ($m_n$), and _beacon chain slashing factor_ ($l_n$). How these interact with the operator and staker events like deposits, slashing, withdrawals will all be described below.
+
+## Prior Reading
+
+* [ELIP-002: Slashing via Unique Stake and Operator Sets](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md)
+
+## Pre-Slashing Upgrade
+
+We'll look at the "shares" model as historically defined prior to the Slashing upgrade. Pre-slashing, stakers could receive shares for deposited assets, delegate those shares to operators, and withdraw those shares from the protocol. We can write this a bit more formally:
+
+#### Staker Level
+
+$s_n$ - The amount of shares in the storage of the `StrategyManager`/`EigenPodManager` at time n.
+
+#### Operator Level
+
+$op_n$ - The operator shares in the storage of the `DelegationManager` at time n which can also be rewritten as \
+$op_n = \sum_{i=1}^{k} s_{n,i}$ where the operator has $k$ number of stakers delegated to them.
+
+
+#### Staker Deposits
+
+Upon each staker deposit of amount $d_n$ at time $n$, the staker's shares and delegated operator's shares are updated as follows:
+
+$$
+ s_{n+1} = s_{n} + d_{n}
+$$
+
+$$
+ op_{n+1} = op_{n} + d_{n}
+$$
+
+#### Staker Withdrawals
+
+Similarly for staker withdrawals, given an amount $w_n$ to withdraw at time $n$, the staker and operator's shares are decremented at the point of the withdrawal being queued:
+
+$$
+ s_{n+1} = s_{n} - w_{n}
+$$
+
+$$
+ op_{n+1} = op_{n} - w_{n}
+$$
+
+Later after the withdrawal delay has passed, the staker can complete their withdrawal to withdraw the full amount $w_n$ of shares.
+
+---
+
+## Slashing Upgrade Changes
+
+The remaining portions of this document will assume understanding of Allocations/Deallocations, Max Magnitudes, and Operator Sets as described in [ELIP-002][elip-002].
+
+### Terminology
+
+The word "shares" in EigenLayer has historically referred to the amount of shares a staker receives upon depositing assets through the `StrategyManager` or `EigenPodManager`. Outside of some conversion ratios in the `StrategyManager` to account for rebasing tokens, shares roughly correspond 1:1 with deposit amounts (i.e. 1e18 shares in the `beaconChainETHStrategy` corresponds to 1 ETH of assets). When delegating to an operator or queueing a withdrawal, the `DelegationManager` reads deposit shares from the `StrategyManager` or `EigenPodManager` to determine how many shares to delegate (or undelegate).
+
+With the slashing release, there is a need to differentiate "classes" of shares.
+
+**Deposit shares**:
+
+Formerly known as "shares," these are the same shares used before the slashing release. They continue to be managed by the `StrategyManager` and `EigenPodManager`, and roughly correspond 1:1 with deposited assets.
+
+**Withdrawable shares**:
+
+When an operator is slashed, the slash is applied to their stakers _asynchronously_ (otherwise, slashing would require iterating over each of an operator's stakers; this is prohibitively expensive).
+
+The `DelegationManager` must find a common representation for the deposit shares of many stakers, each of which may have experienced different amounts of slashing depending on which operator they are delegated to, and when they delegated. This common representation is achieved in part through a value called the `depositScalingFactor`: a per-staker, per-strategy value that scales a staker's deposit shares as they deposit assets over time.
+
+When a staker does just about anything (changing their delegated operator, queueing/completing a withdrawal, depositing new assets), the `DelegationManager` converts their _deposit shares_ to _withdrawable shares_ by applying the staker's `depositScalingFactor` and the current _slashing factor_ (a per-strategy scalar primarily derived from the amount of slashing an operator has received in the `AllocationManager`).
+
+These _withdrawable shares_ are used to determine how many of a staker's deposit shares are actually able to be withdrawn from the protocol, as well as how many shares can be delegated to an operator. An individual staker's withdrawable shares are not reflected anywhere in storage; they are calculated on-demand.
+
+**Operator shares**:
+
+_Operator shares_ are derivative of _withdrawable shares_. When a staker delegates to an operator, they are delegating their _withdrawable shares_. Thus, an operator's _operator shares_ represent the sum of all of their stakers' _withdrawable shares_. Note that when a staker first delegates to an operator, this is a special case where _deposit shares_ == _withdrawable shares_. If the staker deposits additional assets later, this case will not hold if slashing was experienced in the interim.
+
+---
+
+Each of these definitions can also be applied to the pre-slashing share model, but with the caveat that for all stakers, _withdrawable shares equal deposit shares_. After the slashing upgrade this is not necessarily the case - a staker may not be able to withdraw the amount they deposited if their operator got slashed.
+
+Now let's look at these updated definitions in detail and how the accounting math works with deposits, withdrawals, and slashing.
+
+### Stored Variables
+
+Note that these variables are all defined within the context of a single Strategy. Also note that the concept of "1" used within these equations is represented in the code by the constant `1 WAD`, or `1e18`.
+
+#### Staker Level
+
+$s_n$ - The amount of deposit shares in the storage of the `StrategyManager`/`EigenPodManager` at time $n$. In storage: `StrategyManager.stakerDepositShares` and `EigenPodManager.podOwnerDepositShares`
+
+$k_n$ - The staker's “deposit scaling factor” at time $n$. This is initialized to 1. In storage: `DelegationManager.depositScalingFactor`
+
+$l_n$ - The staker's "beacon chain slashing factor" at time $n$. This is initialized to 1. For any equations concerning non-native ETH strategies, this can be assumed to be 1. In storage: `EigenPodManager.beaconChainSlashingFactor`
+
+#### Operator Level
+
+$m_n$ - The operator magnitude at time n. This is initialized to 1.
+
+$op_n$ - The operator shares in the storage of the `DelegationManager` at time n. In storage: `DelegationManager.operatorShares`
+
+### Conceptual Variables
+
+$a_n = s_n k_n l_n m_n$ - The withdrawable shares that the staker owns at time $n$. Read from view function `DelegationManager.getWithdrawableShares`
+
+Note that $op_n = \sum_{i=1}^{k} a_{n,i}$.
+
+---
+
+### Deposits
+
+For an amount of newly deposited shares $d_n$,
+
+#### Staker Level
+
+Conceptually, the staker's deposit shares and withdrawable shares both increase by the deposited amount $d_n$. Let's work out how this math impacts the deposit scaling factor $k_n$.
+
+$$
+a_{n+1} = a_n + d_n
+$$
+
+$$
+s_{n+1} = s_n +d_n
+$$
+
+$$
+l_{n+1} = l_n
+$$
+
+$$
+m_{n+1} = m_n
+$$
+
+Expanding the $a_{n+1}$ calculation
+
+$$
+s_{n+1} k_{n+1} l_{n+1} m_{n+1} = s_n k_n l_n m_n + d_n
+$$
+
+Simplifying yields:
+
+$$
+k_{n+1} = \frac{s_n k_n l_n m_n + d_n}{s_{n+1} l_{n+1} m_{n+1}}=\frac{s_n k_n l_n m_n + d_n}{(s_n+d_n)l_nm_n}
+$$
+
+Updating the slashing factor is implemented in `SlashingLib.update`.
+
+#### Operator Level
+
+For the operator (if the staker is delegated), the delegated operator shares should increase by the exact amount
+the staker just deposited. Therefore $op_n$ is updated as follows:
+
+$$
+op_{n+1} = op_n+d_n
+$$
+
+See implementation in:
+* [`StrategyManager.depositIntoStrategy`](../../../src/contracts/core/StrategyManager.sol)
+* [`EigenPodManager.recordBeaconChainETHBalanceUpdate`](../../../src/contracts/pods/EigenPodManager.sol)
+
+---
+
+### Slashing
+
+Given a proportion to slash $p_n = \frac {m_{n+1}}{m_n}$ ,
+
+#### Operator Level
+
+From a conceptual level, operator shares should be decreased by the proportion according to the following:
+
+$$
+ op_{n+1} = op_n p_n
+$$
+
+$$
+ => op_{n+1} = op_n \frac {m_{n+1}} {m_n}
+$$
+
+Calculating the amount of $sharesToDecrement$:
+
+$$
+ sharesToDecrement = op_n - op_{n+1}
+$$
+
+$$
+ = op_n - op_n \frac {m_{n+1}} {m_n}
+$$
+
+This calculation is performed in `SlashingLib.calcSlashedAmount`.
+
+#### Staker Level
+
+From the conceptual level, a staker's withdrawable shares should also be proportionally slashed so the following must be true:
+
+$$
+a_{n+1} = a_n p_n
+$$
+
+We don't want to update storage at the staker level during slashing as this would be computationally too expensive given an operator has a 1-many relationship with its delegated stakers. Therefore we want to prove $a_{n+1} = a_n p_n$ since withdrawable shares are slashed by $p_n$.
+
+Given the following:
+
+$l_{n+1} = l_n$ \
+$k_{n+1} = k_n$ \
+$s_{n+1} = s_n$
+
+Expanding the $a_{n+1}$ equation:
+
+$$
+a_{n+1} = s_{n+1} k_{n+1} l_{n+1} m_{n+1}
+$$
+
+$$
+=> s_{n} k_{n} l_{n} m_{n+1}
+$$
+
+We know that $p_n = \frac {m_{n+1}}{m_n}$ => $m_{n+1} = m_n p_n$
+
+$$
+=> s_n k_n l_n m_n p_n
+$$
+
+$$
+=> a_n p_n
+$$
+
+This means that a staker's withdrawable shares are immediately affected upon their operator's maxMagnitude being decreased via slashing.
+
+---
+
+### Queue Withdrawal
+
+Withdrawals are queued by inputting a `depositShares` amount $x_n <= s_n$. The actual withdrawable amount $w_n$ corresponding to $x_n$ is given by the following:
+
+$$
+ w_n = x_n k_n l_n m_n
+$$
+
+This conceptually makes sense as the amount being withdrawn $w_n$ is some amount <= $a_n$ which is the total withdrawable shares amount for the staker.
+
+
+#### Operator Level
+
+When a staker queues a withdrawal, their operator's shares are reduced accordingly:
+
+$$
+ op_{n+1} = op_n - w_n
+$$
+
+
+#### Staker Level
+
+$$
+ a_{n+1} = a_n - w_n
+$$
+
+$$
+ s_{n+1} = s_n - x_n
+$$
+
+This means that when queuing a withdrawal, the staker inputs a `depositShares` amount $x_n$. The `DelegationManager` calls the the `EigenPodManager`/`StrategyManager` to decrement their `depositShares` by this amount. Additionally, the `depositShares` are converted to a withdrawable amount $w_n$, which are decremented from the operator's shares.
+
+We want to show that the total withdrawable shares for the staker are decreased accordingly such that $a_{n+1} = a_n - w_n$.
+
+Given the following:
+
+$l_{n+1} = l_n$ \
+$k_{n+1} = k_n$ \
+$s_{n+1} = s_n$
+
+Expanding the $a_{n+1}$ equation:
+
+$$
+ a_{n+1} = s_{n+1} k_{n+1} l_{n+1} m_{n+1}
+$$
+
+
+$$
+ => (s_{n} - x_n) k_{n+1} l_{n+1} m_{n+1}
+$$
+
+$$
+ = (s_{n} - x_n) k_n l_n m_n
+$$
+
+$$
+ = s_n k_n l_n m_n - x_n k_n l_n m_n
+$$
+
+$$
+ = a_n - w_n
+$$
+
+Note that when a withdrawal is queued, a `Withdrawal` struct is created with _scaled shares_ defined as $q_t = x_t k_t$ where $t$ is the time of the queuing. The reason we define and store scaled shares like this will be clearer in [Complete Withdrawal](#complete-withdrawal) below.
+
+See implementation in:
+* `DelegationManager.queueWithdrawals`
+* `SlashingLib.scaleForQueueWithdrawal`
+
+
+
+---
+
+### Complete Withdrawal
+
+Now the staker completes a withdrawal $(q_t, t)$ which was queued at time $t$.
+
+#### Operator Level
+
+If the staker completes the withdrawal _as tokens_, any operator shares remain unchanged. The original operator's shares were decremented when the withdrawal was queued, and a new operator does not receive shares if the staker is withdrawing assets ("as tokens").
+
+However, if the staker completes the withdrawal _as shares_, the shares are added to the staker's current operator according to the formulae in [Deposits](#deposits).
+
+#### Staker Level
+
+
+
+Recall from [Queue Withdrawal](#queue-withdrawal) that, when a withdrawal is queued, the `Withdrawal` struct stores _scaled shares_, defined as $q_t = x_t k_t$ where $x_t$ is the deposit share amount requested for withdrawal and $t$ is the time of the queuing.
+
+And, given the formula for calculating withdrawable shares, the withdrawable shares given to the staker are $w_t$:
+
+$$
+w_t = q_t m_t l_t = x_t k_t l_t m_t
+$$
+
+However, the staker's shares in their withdrawal may have been slashed while the withdrawal was in the queue. Their operator may have been slashed by an AVS, or, if the strategy is the `beaconChainETHStrategy`, the staker's validators may have been slashed/penalized.
+
+The amount of shares they actually receive is proportionally the following:
+
+$$
+ \frac{m_{t+delay} l_{now} }{m_t l_t}
+$$
+
+So the actual amount of shares withdrawn on completion is calculated to be:
+
+$$
+sharesWithdrawn = w_t (\frac{m_{t+delay} l_{now}}{m_t l_t} )
+$$
+
+$$
+= x_t k_t l_t m_t (\frac{m_{t+delay} l_{now}}{m_t l_t} )
+$$
+
+$$
+= x_t k_t m_{t+delay} l_{now}
+$$
+
+Now we know that $q_t = x_t k_t$ so we can substitute this value in here.
+
+$$
+= q_t m_{t+delay} l_{now}
+$$
+
+From the above equations the known values we have during the time of queue withdrawal is $x_t k_t$ and we only know $m_{t+delay} l_{now}$ when the queued withdrawal is completable. This is why we store scaled shares as $q_t = x_t k_t$. The other term ($m_{t+delay} l_{now}$) is read during the completing transaction of the withdrawal.
+
+Note: Reading $m_{t+delay}$ is performed by a historical Snapshot lookup of the max magnitude in the `AllocationManager` while $l_{now}$, the current beacon chain slashing factor, is done through the `EigenPodManager`. Recall that if the strategy in question is not the `beaconChainETHStrategy`, $l_{now}$ will default to "1".
+
+The definition of scaled shares is used solely for handling withdrawals and accounting for slashing that may have occurred (both on EigenLayer and on the beacon chain) during the queue period.
+
+See implementation in:
+* `DelegationManager.completeQueuedWithdrawal`
+* `SlashingLib.scaleForCompleteWithdrawal`
+
+---
+
+### Handling Beacon Chain Balance Decreases in EigenPods
+
+Beacon chain balance decreases are handled differently after the slashing upgrade with the introduction of $l_n$ the beacon chain slashing factor.
+
+Prior to the upgrade, any decreases in an `EigenPod` balance for a staker as a result of completing a checkpoint immediately decrements from the staker's shares in the `EigenPodManager`. As an edge case, this meant that a staker's shares could go negative if, for example, they queued a withdrawal for all their shares and then completed a checkpoint on their `EigenPod` showing a balance decrease.
+
+With the introduction of the beacon chain slashing factor, beacon chain balance decreases no longer result in a decrease in deposit shares. Instead, the staker's beacon chain slashing factor is decreased, allowing the system to realize that slash in any existing shares, as well as in any existing queued withdrawals. Effectively, this means that beacon chain slashing is accounted for similarly to EigenLayer-native slashing; _deposit shares remain the same, while withdrawable shares are reduced:_
+
+![.](../../images/slashing-model.png)
+
+Now let's consider how beacon chain balance decreases are handled when they represent a negative share delta for a staker's EigenPod.
+
+#### Added Definitions
+
+$welw$ is `withdrawableExecutionLayerGwei`. This is purely native ETH in the `EigenPod`, attributed via checkpoint and considered withdrawable by the pod (but without factoring in any EigenLayer-native slashing). `DelegationManager.getWithdrawableShares` can be called to account for both EigenLayer and beacon chain slashing.
+
+$before\text{ }start$ is time just before a checkpoint is started
+
+
+
+$after\text{ }complete$ is the time just after a checkpoint is completed
+
+As a checkpoint is completed, the total assets represented by the pod's native ETH and beacon chain balances _before_ and _after_ are given by:
+
+$g_n = welw_{before\text{ }start}+\sum_i validator_i.balance_{before\text{ }start}$ \
+$h_n = welw_{after\text{ }complete}+\sum_i validator_i.balance_{after\text{ }complete}$
+
+#### Staker Level
+
+Conceptually, the above logic specifies that we decrease the staker's withdrawable shares proportionally to the balance decrease:
+
+$$
+a_{n+1} = \frac{h_n}{g_n}a_n
+$$
+
+We implement this by setting
+
+$$
+l_{n+1}=\frac{h_n}{g_n}l_n
+$$
+
+Given:
+
+$m_{n+1}=m_n$ (staker beacon chain slashing does not affect its operator's magnitude)
+$s_{n+1} = s_n$ (no subtraction of deposit shares)
+$k_{n+1}=k_n$
+
+Then, plugging into the formula for withdrawable shares:
+
+$$
+a_{n+1} = s_{n+1}k_{n+1}l_{n+1}m_{n+1}
+$$
+
+$$
+=s_nk_n\frac{h_n}{g_n}l_nm_n
+$$
+
+$$
+= \frac{h_n}{g_n}a_n
+$$
+
+#### Operator Level
+
+Now we want to update the operator's shares accordingly. At a conceptual level $op_{n+1}$ should be the following:
+
+$$
+ op_{n+1} = op_n - a_n + a_{n+1}
+$$
+
+We can simplify this further
+
+
+$$
+ =op_{n}-s_nk_nl_nm_n + s_nk_nl_{n+1}m_n
+$$
+
+
+$$
+ = op_{n}+s_nk_nm_n(l_{n+1}-l_n)
+$$
+
+See implementation in:
+* `EigenPodManager.recordBeaconChainETHBalanceUpdate`
+* `DelegationManager.decreaseDelegatedShares`
+
+---
+
+## Implementation Details
+
+In practice, we can’t actually have floating values so we will substitute all $k_n, l_n, m_n$ terms with $m_n$/1e18 $\frac{k_n}{1e18},\frac{l_n}{1e18} ,\frac{m_n}{1e18}$ respectively where $k_n, l_n, m_n$ are the values in storage, all initialized to 1e18. This allows us to conceptually have values in the range $[0,1]$.
+
+We make use of OpenZeppelin's Math library and `mulDiv` for calculating $floor(\frac{x \cdot y}{denominator})$ with full precision. Sometimes for specific rounding edge cases, $ceiling(\frac{x \cdot y}{denominator})$ is explicitly used.
+
+#### Multiplication and Division Operations
+For all the equations in the above document, we substitute any product operations of $k_n, l_n, m_n$ with the `mulWad` pure function.
+```solidity
+function mulWad(uint256 x, uint256 y) internal pure returns (uint256) {
+ return x.mulDiv(y, WAD);
+}
+```
+
+Conversely, for any divisions of $k_n, l_n, m_n$ we use the `divWad` pure function.
+
+```solidity
+function divWad(uint256 x, uint256 y) internal pure returns (uint256) {
+ return x.mulDiv(WAD, y);
+}
+```
diff --git a/docs/core/accounting/SharesAccountingEdgeCases.md b/docs/core/accounting/SharesAccountingEdgeCases.md
new file mode 100644
index 0000000000..918196157f
--- /dev/null
+++ b/docs/core/accounting/SharesAccountingEdgeCases.md
@@ -0,0 +1,339 @@
+[elip-002]: https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md
+
+# Shares Accounting Edge Cases
+
+This document is meant to explore and analyze the different mathematical operations we are performing in the slashing release. Primarily we want to ensure safety on rounding and overflow situations. Prior reading of the [Shares Accounting](./SharesAccounting.md) is required to make sense of this document.
+
+## Prior Reading
+
+* [ELIP-002: Slashing via Unique Stake and Operator Sets](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-002.md)
+* [Shares Accounting](./SharesAccounting.md)
+
+
+## Fully Slashed for a Strategy
+
+Within the context of a single Strategy, recall that updates to the deposit scaling factor $k_n$ are defined as the following:
+
+$$
+k_{n+1} = \frac{s_n k_n m_n + d_n}{s_{n+1} l_{n+1} m_{n+1}}=\frac{s_n k_n l_n m_n + d_n}{(s_n+d_n)l_nm_n}
+$$
+
+We can see here that calculating $k_{n+1}$ can give us a divide by 0 error if any of $(s_n + d_n)$, $l_n$, or $m_n$ are equal to 0. The $(s_n + d_n) = 0$ case should not arise because the `EigenPodManager` and `StrategyManager` will not report share increases in this case. However, the other two terms may reach 0:
+* When an operator is 100% slashed for a given strategy and their max magnitude $m_n = 0$
+* When a staker's `EigenPod` native ETH balance is 0 _and_ their validators have all been slashed such that $l_n = 0$
+
+In these cases, updates to a staker's deposit scaling factor will encounter a division by 0 error. In either case, we know that since either the operator was fully slashed or the staker was fully slashed for the `beaconChainETHStrategy` then their withdrawable shares $a_n = 0$.
+
+In practice, if $m_n = 0$ for a given operator, then:
+1. Any staker who is already delegated to this operator _will be unable to deposit additional assets into the corresponding strategy_
+2. Any staker that currently holds deposit shares in this strategy and is NOT delegated to the operator _will be unable to delegate to the operator_
+
+Note that in the first case, it _is_ possible for the staker to undelegate, queue, and complete withdrawals - though as $a_n = 0$, they will not receive any withdrawable shares as a result.
+
+Additionally, if $l_n = 0$ for a given staker in the beacon chain ETH strategy, then **any further deposits of ETH or restaking of validators will not yield shares in EigenLayer.** This should only occur in extraordinary circumstances, as a beacon chain slashing factor of 0 means that a staker both has ~0 assets in their `EigenPod`, and ALL of their validators have been ~100% slashed on the beacon chain - something that happens only when coordinated groups of validators are slashed. If this case occurs, an `EigenPod` is essentially bricked - the pod owner should NOT send ETH to the pod, and should NOT point additional validators at the pod.
+
+These are all expected edge cases and their occurances and side effects are within acceptable tolerances.
+
+## Upper Bound on Deposit Scaling Factor $k_n$
+
+Let's examine potential overflow situations with respect to calculating a staker's withdrawable shares.
+Below is the function in `SlashingLib.sol` which calculates $a_n = s_nk_nl_nm_n$. \
+Note: `slashingFactor` = $l_nm_n$
+
+```solidity
+function calcWithdrawable(
+ DepositScalingFactor memory dsf,
+ uint256 depositShares,
+ uint256 slashingFactor
+) internal pure returns (uint256) {
+ /// forgefmt: disable-next-item
+ return depositShares
+ .mulWad(dsf.scalingFactor())
+ .mulWad(slashingFactor);
+}
+```
+
+`depositShares` are the staker’s shares $s_n$ in storage. We know this can at max be 1e38 - 1 as this is the max total shares we allow in a strategy. $l_n ≤ 1e18$ and $m_n ≤ 1e18$ as they are montonically decreasing values. So a `mulWad` of the `slashingFactor` operation should never result in a overflow, it will always result in a smaller or equal number.
+
+The question now comes to `depositShares.mulWad(dsf.scalingFactor())` and whether this term will overflow a `uint256`. Let's examine the math behind this. The function `SlashingLib.update` performs the following calculation:
+
+$$
+k_{n+1} =\frac{s_n k_n l_n m_n + d_n}{(s_n+d_n)l_nm_n}
+$$
+
+Assuming:
+- $k_0 = 1$
+- 0 < $l_0$ ≤ 1 and is monotonically decreasing but doesn’t reach 0
+- 0 < $m_0$ ≤ 1 and is monotonically decreasing but doesn’t reach 0
+- 0 ≤ $s_n, {s_{n+1}}$ ≤ 1e38 - 1 (`MAX_TOTAL_SHARES = 1e38 - 1` in StrategyBase.sol)
+- 0 < $d_n$ ≤ 1e38 - 1
+- ${s_{n+1}}={s_n} + {d_n}$
+
+Rewriting above we can get the following by factoring out the k and cancelling out some terms.
+
+$$
+k_{n+1} = k_n\frac{s_n}{s_n + d_n} + \frac{d_n}{(s_n+d_n)l_nm_n}
+$$
+
+The first term $\frac{s_n}{{{s_n} + {d_n}}}$ < 1 so when multiplied with $k_n$ will not contribute to the growth of ${k_{n+1}}$ if only considering this term.
+
+The second term $\frac{d_n}{({{s_n} + {d_n}}){l_n}{m_n}}$ however can make $k_n$ grow over time depending on how small ${l_n}{m_n}$ becomes and also how large $d_n$ is proportionally compared to $s_n$. We only care about the worst case scenario here so let’s assume the upper bound on the existing shares and new deposit amount by rounding the value up to 1.
+
+Now in practice, the smallest values ${l_n}$ and ${m_n}$ could equal to is 1/1e18. Substituting this in the above second term gives the following:
+
+$$
+\frac{d_n}{(s_n+d_n)l_nm_n} = \frac{d_n}{s_n+d_n}*1e18^2
+$$
+
+So lets round up the first term $\frac{s_n}{{{s_n} + {d_n}}}$ to 1 and also $\frac{d_n}{{{s_n} + {d_n}}}$ in the second term to 1. We can simplify the recursive definition of k in this worst case scenario as the following.
+
+$$
+k_{n+1} = k_n\frac{s_n}{s_n + d_n} + \frac{d_n}{(s_n+d_n)l_nm_n}
+$$
+
+$$
+=> k_{n+1} = k_n+ \frac{d_n}{(s_n+d_n)l_nm_n}
+$$
+
+$$
+=> k_{n+1} = k_n + 1e36
+$$
+
+Because of the max shares in storage for a strategy is 1e38 - 1 and deposits must be non-zero we can actually come up with an upper bound on ${k_n}$ by having 1e38-1 deposits of amount 1, updating ${k_n}$ each time.
+
+$$
+k_{1e38-1} \approx (1e38-1)\cdot 1e36 < 1e74
+$$
+
+After 1e38-1 iterations/deposits, the upper bound on k we calculate is 1e74 in the _worst_ case scenario. This is technically possible if as a staker, you are delegated to an operator for the beaconChainStrategy where your operator has been slashed 99.9999999…% for native ETH but also as a staker you have had proportional EigenPod balance decreases up to 99.9999999…..%.
+
+The max shares of 1e38-1 also accommodates the entire supply of ETH as well (only needs 27 bits). For normal StrategyManager strategies, ${l_n} = 1$ and ${k_n}$ would not grow nearly to the same extent.
+
+Clearly this value of 1e74 for ${k_n}$ fits within a uint256 storage slot.
+
+Bringing this all back to the `calcWithdrawable` method used to calculate your actual withdrawable shares for a staker as well as the actual next ${k_{n+1}}$ value. We can see here that the shares is not expected to overflow given the constraints on all our variables and the use of the depositScalingFactor is safe.
+
+
+The staker depositScalingFactor is unbounded on how it can increase over time but because of the lower bounds we have ${l_n}$ and ${m_n}$ as well as the upper bound on number of shares a strategy has (or amount of ETH in existence w.r.t beaconChainStrategy) we can see that it is infeasble for the deposit scaling factor $k_n$ to overflow in our contracts.
+
+
+
+## Rounding Behavior Considerations
+
+The `SlashingLib.sol` introduces some small rounding precision errors due to the usage of `mulWad`/`divWad` operations in the contracts where we are doing a `x * y / denominator` operation. In Solidity, we round down to the nearest integer introducing an absolute error of up to 1 wei. Taking this into consideration, in certain portions of code, we will explicitly use either take the floor or ceiling value of `x * y / denominator`.
+
+### Rounding up on Slashing
+
+When an operator is slashed by an operatorSet in the `AllocationManager`, we actually want to round up on slashing. Rather than calculating `floor(x * y / denominator)` from mulDiv, we want `ceiling(x * y / denominator)`. This is because we don’t want any kind of DOS scenario where an operatorSet attempting to slash an operator is rounded to 0; potentially possible if an operator registered for their own fake AVS and slashed themselves repeatedly to bring their maxMagnitude to a small enough value. This will ensure an operator is always slashed for some amount from their maxMagnitude which eventually, if they are slashed enough, can reach 0.
+
+`AllocationManager.slashOperator`
+```solidity
+// 3. Calculate the amount of magnitude being slashed, and subtract from
+// the operator's currently-allocated magnitude, as well as the strategy's
+// max and encumbered magnitudes
+uint64 slashedMagnitude = uint64(uint256(allocation.currentMagnitude).mulWadRoundUp(params.wadsToSlash[i]));
+```
+
+### Deposits actually _reducing_ withdrawableShares
+
+There are some very particular edge cases where, due to rounding error, deposits can actually decrease withdrawble shares for a staker which is conceptually wrong.
+The unit test `DelegationUnit.t.sol:test_increaseDelegatedShares_depositRepeatedly` exemplifies this where there is an increasing difference over the course of multiple deposits between a staker's withdrawable shares and the staker's delegated operator shares.
+Essentially, what’s happening in this test case is that after the very first deposit of a large amount of shares, subsequent deposits of amount 1000 are causing the getWithdrawable shares to actually decrease for the staker.
+
+Since the operatorShares are simply incrementing by the exact depositShares, the operatorShares mapping is increasing as expected. This ends up creating a very big discrepancy/drift between the two values after performing 1000 deposits. The difference between the operatorShares and the staker’s withdrawableShares ends up being `4.418e13`.
+
+Granted the initial deposit amount was `4.418e28` which is magnitudes larger than the discrepancy here but this its important to note the side effects of the redesigned accounting model.
+Instead of purely incremented/decremented amounts, we have introduced magnitudes and scaling factor variables which now result in small amounts of rounding error from division in several places. We deem this rounding behavior to be tolerable given the costs associated for the number of transactions to emulate this and the proportional error is very small.
+
+## Upper bound on Residual Operator Shares
+
+Related to the above rounding error on deposits, we want to calculate what is the worst case rounding error for a staker depositing shares into EigenLayer.
+That is, what is the largest difference between the depositShares deposited and the resulting withdrawableShares? For a staker who initially deposits without getting slashed, these two values should conceptually be equal. Let's examine below.
+
+Below is a code snippet of `SlashingLib.sol`
+```solidity
+function update(
+ DepositScalingFactor storage dsf,
+ uint256 prevDepositShares,
+ uint256 addedShares,
+ uint256 slashingFactor
+) internal {
+ // If this is the staker's first deposit, set the scaling factor to
+ // the inverse of slashingFactor
+ if (prevDepositShares == 0) {
+ dsf._scalingFactor = uint256(WAD).divWad(slashingFactor);
+ return;
+ }
+
+...
+
+function calcWithdrawable(
+ DepositScalingFactor memory dsf,
+ uint256 depositShares,
+ uint256 slashingFactor
+) internal pure returns (uint256) {
+ /// forgefmt: disable-next-item
+ return depositShares
+ .mulWad(dsf.scalingFactor())
+ .mulWad(slashingFactor);
+}
+```
+
+Mathematically, withdrawable shares can be represented as below
+
+$$
+withdrawableShares = d\space\cdot\space \frac{k}{WAD} \space\cdot\space \frac{slashingFactor}{WAD}
+$$
+
+Substituting $k$ with `WAD.divWad(slashingFactor)` (see update function above) if the staker only has done one single deposit of amount $d$. Also expanding out slashingFactor which is `maxMagnitude.mulWad(beaconChainScalingFactor)`
+
+$$
+= d\space\cdot\space \frac{\frac{WAD\space\cdot \space WAD}{m_{deposit} \cdot l_{deposit}}}{WAD} \space\cdot\space \frac{\frac{m \space\cdot\space l}{WAD}}{WAD}
+$$
+
+Above is the real true value of the amount of withdrawable shares a staker has but in practice, there are rounding implications at each division operation. It becomes the following
+
+$$
+withdrawableShares (rounded) =
+\lfloor
+\lfloor
+d \space\cdot\space
+\frac{\lfloor\frac{WAD\space\cdot \space WAD
+}{m_{deposit} \space\cdot\space l_{deposit}}
+\rfloor }{WAD}
+\rfloor
+\space\cdot\space \frac{\lfloor \frac{m \space\cdot\space l}{WAD}\rfloor}{WAD}
+\rfloor
+$$
+
+Each floor operation can introduce a rounding error of at most 1 wei. Because there are nested divisions however, this error can result in a total error thats larger than just off by 1 wei.
+We can rewrite parts of above with epsilon $e$ which is in the range of [0,1].
+
+1. First inner rounded term
+
+$$
+\frac{WAD \cdot WAD}{m_{deposit} \cdot l_{deposit}} = \lfloor \frac{WAD \cdot WAD}{m_{deposit} \cdot l_{deposit}} \rfloor + \epsilon_1
+$$
+
+$$
+\frac{\lfloor \frac{WAD \cdot WAD}{m_{deposit} \cdot l_{deposit}} \rfloor}{WAD} = \frac{\frac{WAD \cdot WAD}{m_{deposit} \cdot l_{deposit}} - \epsilon_1}{WAD}
+$$
+
+2. Second rounded term
+
+$$
+\lfloor d \cdot \frac{\lfloor \frac{WAD \cdot WAD}{m_{deposit} \cdot l_{deposit}} \rfloor}{WAD} \rfloor
+$$
+
+$$
+= \lfloor d \cdot \frac{WAD \cdot WAD}{m_{deposit} \cdot l_{deposit} \cdot WAD} - d \cdot \frac{\epsilon_1}{WAD} \rfloor
+$$
+
+$$
+= d \cdot \frac{WAD \cdot WAD}{m_{deposit} \cdot l_{deposit} \cdot WAD} - d \cdot \frac{\epsilon_1}{WAD} - \epsilon_2
+$$
+
+3. Third rounded term
+
+$$
+\lfloor \frac{m \cdot l}{WAD} \rfloor = \frac{m \cdot l}{WAD} - \epsilon_3
+$$
+
+$$
+=>
+\frac{\lfloor \frac{m \cdot l}{WAD} \rfloor}{WAD} = \frac{\frac{m \cdot l}{WAD} - \epsilon_3}{WAD}
+$$
+
+$$
+=>
+\frac{\lfloor \frac{m \cdot l}{WAD} \rfloor}{WAD} = \frac{m \cdot l}{WAD^2} - \frac{\epsilon_3}{WAD}
+$$
+
+4. Now bringing it all back to the original equation
+
+$$
+withdrawableShares (rounded) =
+\lfloor
+\lfloor
+d \space\cdot\space
+\frac{\lfloor\frac{WAD\space\cdot \space WAD
+}{m_{deposit} \space\cdot\space l_{deposit}}
+\rfloor }{WAD}
+\rfloor
+\space\cdot\space \frac{\lfloor \frac{m \space\cdot\space l}{WAD}\rfloor}{WAD}
+\rfloor
+$$
+
+$$
+= \lfloor\left(d \cdot \frac{WAD \cdot WAD}{m_{deposit} \cdot l_{deposit} \cdot WAD} - d \cdot \frac{\epsilon_1}{WAD} - \epsilon_2\right)\cdot\left(\frac{m \cdot l}{WAD^2} - \frac{\epsilon_3}{WAD}\right)\rfloor
+$$
+
+$$
+= \left(
+d \cdot \frac{WAD \cdot WAD}{m_{deposit} \cdot l_{deposit} \cdot WAD} - d \cdot \frac{\epsilon_1}{WAD} - \epsilon_2
+\right)
+\cdot
+\left(
+\frac{m \cdot l}{WAD^2} - \frac{\epsilon_3}{WAD}
+\right) - \epsilon_4
+$$
+
+After expansion and some simplification
+
+$$
+withdrawableShares (rounded) =
+d \cdot \frac{m\cdot l}{m_{deposit} \cdot l_{deposit}\cdot WAD} - d \cdot \frac{\epsilon_1 \cdot m \cdot l}{WAD^3} - \frac{\epsilon_2 \cdot m \cdot l}{WAD^2} - d \cdot \frac{\epsilon_3}{m_{deposit} \cdot l_{deposit} } + \text{(higher-order terms)}
+$$
+
+Note that (higher-order terms) are the terms with multiple epsilon terms where the amounts become negligible, because each term $e$ is < 1.
+
+The true value term is the following:
+
+$$
+withdrawableShares = d\space\cdot\space \frac{\frac{WAD \space\cdot\space WAD}{m_{deposit} \cdot l_{deposit}}}{WAD} \space\cdot\space \frac{\frac{m \space\cdot\space l}{WAD}}{WAD}
+$$
+
+$$
+= d\space\cdot\space \frac{WAD }{m_{deposit} \cdot l_{deposit}}\space\cdot\space \frac{m \space\cdot\space l}{WAD^2}
+$$
+
+$$
+d \cdot \frac{m\cdot l}{m_{deposit } \cdot l_{deposit}\cdot WAD}
+$$
+
+But we can see this term show in the withdrawableShares(rounded) above in the first term! Then we can see that we can represent the equations as the following.
+
+$$
+withdrawableShares (rounded) =
+withdrawableShares - d \cdot \frac{\epsilon_1 \cdot m \cdot l}{WAD^3} - \frac{\epsilon_2 \cdot m \cdot l}{WAD^2} - d \cdot \frac{\epsilon_3 }{m_{deposit} \cdot l_{deposit} } + \text{(higher-order terms)}
+$$
+
+This intuitively makes sense as all the rounding error comes from the epsilon terms and how they propagate out from being nested. Therefore the introduced error from rounding are all the rounding terms added up ignoring the higher-order terms.
+
+$$
+roundedError =d \cdot \frac{\epsilon_1 \cdot m \cdot l}{WAD^3} + \frac{\epsilon_2 \cdot m \cdot l}{WAD^2} + d \cdot \frac{\epsilon_3 }{m_{\text{deposit}} \cdot l_{deposit} }
+$$
+
+Now lets assume the worst case scenario of maximizing this sum above, if each epsilon $e$ is replaced with the value of 1 due to a full wei being rounded off we can get the following.
+
+$$
+d \cdot \frac{m \cdot l}{WAD^3} + \frac{ m \cdot l}{WAD^2} + \frac{ d}{m_{\text{deposit}} \cdot l_{deposit}}
+$$
+
+Assuming close to max values that results in rounding behaviour, we can maximize this total sum by having $d = 1e38$ , $m, m_{deposit}, l, l_{deposit}$ equal to WAD(1e18) then we get the following:
+
+$$
+\frac{1e38\cdot WAD^2}{WAD^3} + \frac{ WAD^2}{WAD^2} + \frac{1e38}{1e36}
+$$
+
+$$
+=> \frac{1e38}{1e18} + 1 + 100
+$$
+
+$$
+\approx 1e20
+$$
+
+Framed in another way, the amount of loss a staker can have is $\frac{1}{1e18}$ th of the deposit amount. This makes sense as a result of having nested flooring operations that are then multiplied against outer terms.
+Over time, as stakers deposit and withdraw, they may not receive as many shares as their “real” withdrawable amount as this is rounded down and there could be residual/dust shares amount in the delegated operatorShares mapping AND in the original Strategy contract.
+This is known and we specifically round down to avoid underflow of operatorShares if all their delegated stakers were to withdraw.
\ No newline at end of file
diff --git a/docs/core/proofs/BeaconChainProofs.md b/docs/core/proofs/BeaconChainProofs.md
deleted file mode 100644
index c174ef942b..0000000000
--- a/docs/core/proofs/BeaconChainProofs.md
+++ /dev/null
@@ -1,66 +0,0 @@
-### Important Details About Proofs
-#### How Indices Are Calculated
-To prove a leaf in a merkle tree, you need several things - A proof, the leaf, the index of that leaf in a list of leaves and the root you are proving against. The beacon state can be represented as several merkle trees stacked on top of each other, i.e., each leaf in the topmost tree is a root of another tree and so on. This means that theoretically, proving most things about the beacon state involves making multiple proofs about each of the merkle trees that are stacked on top of each other.
-
-However there is a way we can combine these proofs into a single proof. This is by concatenating each of the individual proofs into one large proof and proving that against the topmost root. However, how do we calculate the "index" for this mega-proof?
-
-The idea is simple, in a Merkle tree, every node has two children: left (or 0) and right (or 1). Starting from the root and moving down to a specific leaf, you can interpret each bit in the binary representation of the leaf's index as an instruction to traverse left (for 0) or right (for 1). The length of a binary representation of an index is just `log(num_leaves) = height_of_the tree`.
-
-Taking an example, let's say I had one merkle tree A whose Nth leaf was the root of merkle tree B. So to calculate the index for the Mth leaf in B against the root of A, the index would be:
-`index_B_against_A = N << height_of_merkle_tree_B | M`. In the image below, the blue nodes indicate the path we are trying to prove, the pink nodes are nodes in merkle tree B, which is a subtree of merkle tree A.
-
-![Sample Merkle Tree](../../images/samplemerkle.png)
-
-Below are the explanations of each individual proof function that we use to prove various attributes about the state of the beacon chain and validators who are restaking via the EigenPods subprotocol.
-#### `BeaconChainProofs.verifyValidatorFields`
-
-```solidity
-function verifyValidatorFields(
- bytes32 beaconStateRoot,
- bytes32[] calldata validatorFields,
- bytes calldata validatorFieldsProof,
- uint40 validatorIndex
-)
- internal
-```
-Verifies the proof of a provided [validator container](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md#validator) against the beacon state root. This proof can be used to verify any field in the validator container. In the EigenPods system, this proof is used to prove a validator's withdrawal credentials as well as their effective balance. Below is a diagram that illustrates exactly how the proof is structured relative to the [beacon state object](https://github.com/ethereum/consensus-specs/blob/dev/specs/capella/beacon-chain.md#beaconstate).
-
-![Verify Validator Fields Proof Structure](../../images/Withdrawal_Credential_Proof.png)
-
-
-#### `BeaconChainProofs.verifyStateRootAgainstLatestBlockRoot`
-
-```solidity
-function verifyStateRootAgainstLatestBlockRoot(
- bytes32 latestBlockRoot,
- bytes32 beaconStateRoot,
- bytes calldata stateRootProof
-)
- internal
-```
-Verifies the proof of a beacon state root against the oracle provided block root. Every [beacon block](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md#beaconblock) in the beacon state contains the state root corresponding with that block. Thus to prove anything against a state root, we must first prove the state root against the corresponding oracle block root.
-
-![Verify State Root Proof Structure](../../images/staterootproof.png)
-
-
-#### `BeaconChainProofs.verifyWithdrawal`
-
-```solidity
-function verifyWithdrawal(
- bytes32 beaconStateRoot,
- bytes32[] calldata withdrawalFields,
- WithdrawalProof calldata withdrawalProof,
- uint64 denebForkTimestamp
-)
- internal
-```
-Verifies a withdrawal, either [full or partial](https://eth2book.info/capella/part2/deposits-withdrawals/withdrawal-processing/#partial-and-full-withdrawals), of a validator. There are a maximum of 16 withdrawals per block in the consensus layer. This proof proves the inclusion of a given [withdrawal](https://github.com/ethereum/consensus-specs/blob/dev/specs/capella/beacon-chain.md#withdrawal) in the block for a given slot.
-
-One important note is that we use [`historical_summaries`](https://github.com/ethereum/consensus-specs/blob/dev/specs/capella/beacon-chain.md#historical-summaries-updates) to prove the blocks that contain withdrawals. Each new [historical summary](https://github.com/ethereum/consensus-specs/blob/dev/specs/capella/beacon-chain.md#historicalsummary) is added every 8192 slots, i.e., if `slot % 8192 = 0`, then `slot.state_roots` and `slot.block_roots` are merkleized and are used to create the latest `historical_summaries` entry.
-
-This method also uses `denebForkTimestamp` to determine the height of the execution payload header field tree.
-
-![Verify Withdrawal Proof Structure](../../images/Withdrawal_Proof.png)
-
-
-
diff --git a/docs/images/Staker Flow Diagrams/Complete Withdrawal as Shares.png b/docs/images/Staker Flow Diagrams/Complete Withdrawal as Shares.png
index 02cc8d23e8..c9f67dd9ce 100644
Binary files a/docs/images/Staker Flow Diagrams/Complete Withdrawal as Shares.png and b/docs/images/Staker Flow Diagrams/Complete Withdrawal as Shares.png differ
diff --git a/docs/images/Staker Flow Diagrams/Complete Withdrawal as Tokens.png b/docs/images/Staker Flow Diagrams/Complete Withdrawal as Tokens.png
index 78a0b98e84..d0b45ccf9e 100644
Binary files a/docs/images/Staker Flow Diagrams/Complete Withdrawal as Tokens.png and b/docs/images/Staker Flow Diagrams/Complete Withdrawal as Tokens.png differ
diff --git a/docs/images/Staker Flow Diagrams/Delegating.png b/docs/images/Staker Flow Diagrams/Delegating.png
index 12934e7eb3..13fc900c75 100644
Binary files a/docs/images/Staker Flow Diagrams/Delegating.png and b/docs/images/Staker Flow Diagrams/Delegating.png differ
diff --git a/docs/images/Staker Flow Diagrams/Depositing.png b/docs/images/Staker Flow Diagrams/Depositing.png
index 0c5e51549d..9c29cc2b51 100644
Binary files a/docs/images/Staker Flow Diagrams/Depositing.png and b/docs/images/Staker Flow Diagrams/Depositing.png differ
diff --git a/docs/images/Staker Flow Diagrams/Queue Withdrawal.png b/docs/images/Staker Flow Diagrams/Queue Withdrawal.png
index 2ee83562c6..64269b55cb 100644
Binary files a/docs/images/Staker Flow Diagrams/Queue Withdrawal.png and b/docs/images/Staker Flow Diagrams/Queue Withdrawal.png differ
diff --git a/docs/images/Staker Flow Diagrams/diagrams.excalidraw b/docs/images/Staker Flow Diagrams/diagrams.excalidraw
new file mode 100644
index 0000000000..35a088b0a7
--- /dev/null
+++ b/docs/images/Staker Flow Diagrams/diagrams.excalidraw
@@ -0,0 +1,9543 @@
+{
+ "type": "excalidraw",
+ "version": 2,
+ "source": "https://excalidraw.com",
+ "elements": [
+ {
+ "type": "rectangle",
+ "version": 1801,
+ "versionNonce": 1412022419,
+ "index": "b1y0G",
+ "isDeleted": false,
+ "id": "d7pRFde2mvhA75ZinOGRD",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1007.4642857142851,
+ "y": 227.21428571428572,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffec99",
+ "width": 455.8571428571431,
+ "height": 114.99999999999997,
+ "seed": 1964018507,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "pr1eJhZG8MQGJxWd2tB0Y"
+ },
+ {
+ "id": "LDZjamuIcsv5-Wrln_O_d",
+ "type": "arrow"
+ },
+ {
+ "id": "lS4fRSLZHIKN77q4fwuWo",
+ "type": "arrow"
+ },
+ {
+ "id": "pQuPzVRh8WjIFdRY2eKF5",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734360900715,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1535,
+ "versionNonce": 1316959251,
+ "index": "b1y0V",
+ "isDeleted": false,
+ "id": "pr1eJhZG8MQGJxWd2tB0Y",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1155.6345258440285,
+ "y": 275.1142857142857,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 159.51666259765625,
+ "height": 19.2,
+ "seed": 1520221355,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734113298835,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "DelegationManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "d7pRFde2mvhA75ZinOGRD",
+ "originalText": "DelegationManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "rectangle",
+ "version": 1595,
+ "versionNonce": 1462533565,
+ "index": "b1y1",
+ "isDeleted": false,
+ "id": "BjZJSI_MJK0uSe18cWEsM",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 512.3474413621626,
+ "y": 599.8323612009546,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 223.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 663150021,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "SAKX-tjznJ9nB3OnPBiJo"
+ },
+ {
+ "id": "LDZjamuIcsv5-Wrln_O_d",
+ "type": "arrow"
+ },
+ {
+ "id": "IVDpX9ZNHIWc1DEu-_MSJ",
+ "type": "arrow"
+ },
+ {
+ "id": "LzGvT9mueNtOL43AADrvA",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734360277639,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1296,
+ "versionNonce": 531611165,
+ "index": "b1y1V",
+ "isDeleted": false,
+ "id": "SAKX-tjznJ9nB3OnPBiJo",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 553.4724413621626,
+ "y": 647.7323612009545,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 140.75,
+ "height": 19.2,
+ "seed": 215014693,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734360277639,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "EigenPodManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "BjZJSI_MJK0uSe18cWEsM",
+ "originalText": "EigenPodManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "rectangle",
+ "version": 671,
+ "versionNonce": 108445629,
+ "index": "b1y2",
+ "isDeleted": false,
+ "id": "hu48jItWXAGznv2MYPlfa",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 739.7857142857142,
+ "y": -686.6751012333061,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 223.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1017310757,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "k29t3JUZtaF8eQ7ad9dvG"
+ }
+ ],
+ "updated": 1734360836083,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 408,
+ "versionNonce": 811712541,
+ "index": "b1y2G",
+ "isDeleted": false,
+ "id": "k29t3JUZtaF8eQ7ad9dvG",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 780.9107142857142,
+ "y": -638.7751012333061,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 140.75,
+ "height": 19.2,
+ "seed": 1489756549,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734360836083,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "StrategyManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "hu48jItWXAGznv2MYPlfa",
+ "originalText": "StrategyManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "rectangle",
+ "version": 2120,
+ "versionNonce": 2064992157,
+ "index": "b1y2V",
+ "isDeleted": false,
+ "id": "-WvgRiaL0QVDivEZ7r6Xc",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 638.4580244801324,
+ "y": 1117.635055046703,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 847130949,
+ "groupIds": [
+ "txawL17FR69jm-jT8VmVM"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734360277639,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 2050,
+ "versionNonce": 1134840829,
+ "index": "b1y3",
+ "isDeleted": false,
+ "id": "tleLAbz09IPjqR2KmnNm8",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 638.4580244801324,
+ "y": 1082.635055046703,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1955709093,
+ "groupIds": [
+ "txawL17FR69jm-jT8VmVM"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734360277639,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1999,
+ "versionNonce": 1083425885,
+ "index": "b1y3V",
+ "isDeleted": false,
+ "id": "aobl_RC8TILQJlluTfRQL",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 638.4580244801324,
+ "y": 1047.135055046703,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 3957765,
+ "groupIds": [
+ "txawL17FR69jm-jT8VmVM"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734360277639,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1925,
+ "versionNonce": 1974808765,
+ "index": "b1y4",
+ "isDeleted": false,
+ "id": "rIBNqVkwT_U14Ee5tTTXy",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 638.4580244801324,
+ "y": 1012.135055046703,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 964402021,
+ "groupIds": [
+ "txawL17FR69jm-jT8VmVM"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734360277639,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1990,
+ "versionNonce": 1890193693,
+ "index": "b1y4G",
+ "isDeleted": false,
+ "id": "vCqGpKBTk41RnVpK56dHk",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 638.4580244801324,
+ "y": 981.385055046703,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 866810155,
+ "groupIds": [
+ "txawL17FR69jm-jT8VmVM"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "id": "vNXvHpaNh61uq1U8du8yF",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734360277639,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1920,
+ "versionNonce": 61091293,
+ "index": "b1y4V",
+ "isDeleted": false,
+ "id": "IQBALGzyvaO99XKwSkIRH",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 638.4580244801324,
+ "y": 946.385055046703,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 2113412043,
+ "groupIds": [
+ "txawL17FR69jm-jT8VmVM"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734360277639,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1865,
+ "versionNonce": 503081533,
+ "index": "b1y5",
+ "isDeleted": false,
+ "id": "ApHGGX2G2KlFQna4mgGyW",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 638.4580244801324,
+ "y": 910.885055046703,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 906093349,
+ "groupIds": [
+ "txawL17FR69jm-jT8VmVM"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "id": "Erd3ee2INdOqhV26KPfNR",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734360277639,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1798,
+ "versionNonce": 1322130077,
+ "index": "b1y5V",
+ "isDeleted": false,
+ "id": "pO-cMQXuP3FqEK-VO2nH-",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 638.4580244801324,
+ "y": 875.885055046703,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 620990117,
+ "groupIds": [
+ "txawL17FR69jm-jT8VmVM"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "id": "Erd3ee2INdOqhV26KPfNR",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734360277639,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1717,
+ "versionNonce": 1858780925,
+ "index": "b1y6",
+ "isDeleted": false,
+ "id": "3B57LAKyPYCAagMZIplZn",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 638.8330244801324,
+ "y": 836.4544994911473,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1867190251,
+ "groupIds": [
+ "txawL17FR69jm-jT8VmVM"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "t-Fb9iJCrieEmdEJ8_Rze"
+ },
+ {
+ "id": "Erd3ee2INdOqhV26KPfNR",
+ "type": "arrow"
+ },
+ {
+ "id": "vNXvHpaNh61uq1U8du8yF",
+ "type": "arrow"
+ },
+ {
+ "id": "LzGvT9mueNtOL43AADrvA",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734360277639,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1455,
+ "versionNonce": 1148442461,
+ "index": "b1y6V",
+ "isDeleted": false,
+ "id": "t-Fb9iJCrieEmdEJ8_Rze",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 650.0330252430718,
+ "y": 874.7544994911473,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 112.5999984741211,
+ "height": 38.4,
+ "seed": 249027211,
+ "groupIds": [
+ "txawL17FR69jm-jT8VmVM"
+ ],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734360277639,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "EigenPods\n(1 per user)",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "3B57LAKyPYCAagMZIplZn",
+ "originalText": "EigenPods\n(1 per user)",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "rectangle",
+ "version": 1675,
+ "versionNonce": 1349154813,
+ "index": "b1y7",
+ "isDeleted": false,
+ "id": "iN5d7A4GZ0ti1VZf0ejqo",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1009.5251238798216,
+ "y": 892.1062215430579,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 266.00000000000017,
+ "height": 114.99999999999997,
+ "seed": 1219437925,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "A2WEASUqMm8xFmepnTzDB"
+ }
+ ],
+ "updated": 1734360280457,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1576,
+ "versionNonce": 733245533,
+ "index": "b1y7V",
+ "isDeleted": false,
+ "id": "A2WEASUqMm8xFmepnTzDB",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1072.1501238798216,
+ "y": 940.0062215430579,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 140.75,
+ "height": 19.2,
+ "seed": 1601149643,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734360280457,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "EIP-4788 Oracle",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "iN5d7A4GZ0ti1VZf0ejqo",
+ "originalText": "EIP-4788 Oracle",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "rectangle",
+ "version": 1013,
+ "versionNonce": 2043524221,
+ "index": "b1y8",
+ "isDeleted": false,
+ "id": "uiNRUWY9ZI4zldFqQX2ve",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1112.5873015873017,
+ "y": -618.2822440904488,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 249.00000000000009,
+ "height": 114.99999999999997,
+ "seed": 1320455557,
+ "groupIds": [
+ "L8wotQa46OELUi4G_L_sv"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734360836083,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 963,
+ "versionNonce": 779885789,
+ "index": "b1y8G",
+ "isDeleted": false,
+ "id": "VYDyjsUXdkxIKjcQeYM0U",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1111.5873015873017,
+ "y": -652.2822440904488,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 249.00000000000009,
+ "height": 114.99999999999997,
+ "seed": 707957989,
+ "groupIds": [
+ "L8wotQa46OELUi4G_L_sv"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734360836083,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 959,
+ "versionNonce": 637434173,
+ "index": "b1y8V",
+ "isDeleted": false,
+ "id": "GbnSO6e5w-zEyXp65Rnum",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1110.0873015873017,
+ "y": -685.2822440904488,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 249.00000000000009,
+ "height": 114.99999999999997,
+ "seed": 1042837419,
+ "groupIds": [
+ "L8wotQa46OELUi4G_L_sv"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734360836083,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 909,
+ "versionNonce": 1236683165,
+ "index": "b1y9",
+ "isDeleted": false,
+ "id": "kV7S0-ol5pVjW8kyCPtrs",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1109.0873015873017,
+ "y": -719.2822440904488,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 249.00000000000009,
+ "height": 114.99999999999997,
+ "seed": 179466635,
+ "groupIds": [
+ "L8wotQa46OELUi4G_L_sv"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734360836083,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 748,
+ "versionNonce": 1523912189,
+ "index": "b1y9V",
+ "isDeleted": false,
+ "id": "cbvowATXbHy47R6SwBFKv",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1109.0873015873017,
+ "y": -754.2822440904488,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 249.00000000000009,
+ "height": 114.99999999999997,
+ "seed": 1541881157,
+ "groupIds": [
+ "L8wotQa46OELUi4G_L_sv"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "k4w0cZ79L66VZfHSBBqgn"
+ }
+ ],
+ "updated": 1734360836083,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 576,
+ "versionNonce": 2019313245,
+ "index": "b1yA",
+ "isDeleted": false,
+ "id": "k4w0cZ79L66VZfHSBBqgn",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1116.2956374637665,
+ "y": -715.9822440904488,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 234.5833282470703,
+ "height": 38.4,
+ "seed": 620317861,
+ "groupIds": [
+ "L8wotQa46OELUi4G_L_sv"
+ ],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734360836083,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "StrategyBaseWithTVLLimits\n(1 per LST)",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "cbvowATXbHy47R6SwBFKv",
+ "originalText": "StrategyBaseWithTVLLimits\n(1 per LST)",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "rectangle",
+ "version": 583,
+ "versionNonce": 2113318749,
+ "index": "b1yAG",
+ "isDeleted": false,
+ "id": "76JG-p1ALcSUWf9ES9oHk",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 198.71351960124616,
+ "y": -655.8585003996734,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffec99",
+ "width": 223.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1785752133,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "yWIuKnaZ9EYu8nW_E24gu"
+ }
+ ],
+ "updated": 1734360838904,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 307,
+ "versionNonce": 2105719741,
+ "index": "b1yAV",
+ "isDeleted": false,
+ "id": "yWIuKnaZ9EYu8nW_E24gu",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 253.91352036418562,
+ "y": -607.9585003996734,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 112.5999984741211,
+ "height": 19.2,
+ "seed": 1138022821,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734360838904,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "AVSDirectory",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "76JG-p1ALcSUWf9ES9oHk",
+ "originalText": "AVSDirectory",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "arrow",
+ "version": 1384,
+ "versionNonce": 294900467,
+ "index": "b1yB",
+ "isDeleted": false,
+ "id": "Erd3ee2INdOqhV26KPfNR",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 781.4119809434505,
+ "y": 951.712889169279,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffec99",
+ "width": 208.02818639382463,
+ "height": 0.6787821649787702,
+ "seed": 257411774,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [],
+ "updated": 1734360277648,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "3B57LAKyPYCAagMZIplZn",
+ "focus": 0.9964165782256912,
+ "gap": 7.578956463317979,
+ "fixedPoint": null
+ },
+ "endBinding": null,
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 208.02818639382463,
+ 0.6787821649787702
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 472,
+ "versionNonce": 157466845,
+ "index": "b1yBV",
+ "isDeleted": false,
+ "id": "FQ0Osc5fg3FuRYzXUG7wf",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 788.0115959087037,
+ "y": 857.3314836181316,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffec99",
+ "width": 215.9166717529297,
+ "height": 75,
+ "seed": 126625186,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [
+ {
+ "id": "Erd3ee2INdOqhV26KPfNR",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734360277639,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "3. Proof validated vs\nrecent beacon block\nheader",
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "3. Proof validated vs\nrecent beacon block\nheader",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "arrow",
+ "version": 2434,
+ "versionNonce": 1411187837,
+ "index": "b1yC",
+ "isDeleted": false,
+ "id": "LzGvT9mueNtOL43AADrvA",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 705.4173021012218,
+ "y": 827.5462212097732,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffec99",
+ "width": 87.80438961267384,
+ "height": 106.31901873897732,
+ "seed": 1825768382,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "9LXoq9DwZzpa_Fyv9Teu0"
+ }
+ ],
+ "updated": 1734360312556,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "3B57LAKyPYCAagMZIplZn",
+ "focus": 0.4689934907333594,
+ "gap": 8.908278281374123,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "BjZJSI_MJK0uSe18cWEsM",
+ "focus": 0.3711161723740525,
+ "gap": 6.394841269841322,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ -87.80438961267384,
+ -106.31901873897732
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 189,
+ "versionNonce": 1700401085,
+ "index": "b1yCG",
+ "isDeleted": false,
+ "id": "9LXoq9DwZzpa_Fyv9Teu0",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 568.7551738232053,
+ "y": 749.3867118402845,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 185.51986694335938,
+ "height": 50,
+ "seed": 518652962,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734360311034,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "4. Staker awarded\ndeposit shares",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "LzGvT9mueNtOL43AADrvA",
+ "originalText": "4. Staker awarded deposit shares",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "ellipse",
+ "version": 861,
+ "versionNonce": 239332765,
+ "index": "b1yCV",
+ "isDeleted": false,
+ "id": "aNLyHhgEK3ibcdWPwAb6V",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 147.4758816229895,
+ "y": 1025.724340760989,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 108.75,
+ "height": 105,
+ "seed": 1412352510,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "id": "vNXvHpaNh61uq1U8du8yF",
+ "type": "arrow"
+ },
+ {
+ "type": "text",
+ "id": "pvdmt5DJrZ55bLVP2537b"
+ },
+ {
+ "id": "IVDpX9ZNHIWc1DEu-_MSJ",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734360277639,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 618,
+ "versionNonce": 101593597,
+ "index": "b1yD",
+ "isDeleted": false,
+ "id": "pvdmt5DJrZ55bLVP2537b",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 173.2686171897942,
+ "y": 1066.601234748695,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 57.266666412353516,
+ "height": 23,
+ "seed": 298627006,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734360277639,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 2,
+ "text": "Staker",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "aNLyHhgEK3ibcdWPwAb6V",
+ "originalText": "Staker",
+ "autoResize": true,
+ "lineHeight": 1.15
+ },
+ {
+ "type": "arrow",
+ "version": 1890,
+ "versionNonce": 1710398227,
+ "index": "b1yDV",
+ "isDeleted": false,
+ "id": "vNXvHpaNh61uq1U8du8yF",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 269.3765893531465,
+ "y": 1102.7423950802493,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 367.24347365786707,
+ "height": 0.05830618139498256,
+ "seed": 1119593122,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [],
+ "updated": 1734360277648,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "aNLyHhgEK3ibcdWPwAb6V",
+ "focus": 0.4672147590179739,
+ "gap": 17.6893676636725,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "vCqGpKBTk41RnVpK56dHk",
+ "focus": -1.1091502390745562,
+ "gap": 6.299033852151297,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 367.24347365786707,
+ -0.05830618139498256
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 1038,
+ "versionNonce": 1378536317,
+ "index": "b1yE",
+ "isDeleted": false,
+ "id": "jcaRATQnUsA8qMWkGunCX",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0.0026774312006994094,
+ "x": 287.9730286654003,
+ "y": 985.9959243795562,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 311.5333251953125,
+ "height": 100,
+ "seed": 1748858018,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [
+ {
+ "id": "vNXvHpaNh61uq1U8du8yF",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734360277639,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "2. Supply proof of beacon chain\nvalidator with withdrawal\ncredentials pointed at Staker's\nEigenPod",
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "2. Supply proof of beacon chain\nvalidator with withdrawal\ncredentials pointed at Staker's\nEigenPod",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "text",
+ "version": 275,
+ "versionNonce": 1226724317,
+ "index": "b1yEV",
+ "isDeleted": false,
+ "id": "uQmR5duxL2YFGZTLLdDKu",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 277.6544530515599,
+ "y": 1121.1707693324174,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 316.3500061035156,
+ "height": 24,
+ "seed": 623129890,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734360277639,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 3,
+ "text": "verifyWithdrawalCredentials",
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "verifyWithdrawalCredentials",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "arrow",
+ "version": 911,
+ "versionNonce": 1699748733,
+ "index": "b1yF",
+ "isDeleted": false,
+ "id": "LDZjamuIcsv5-Wrln_O_d",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 670.8071239588882,
+ "y": 593.3081513249739,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 338.2683875544691,
+ "height": 248.48315485174834,
+ "seed": 846354786,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "xcaW5b597i8KFqrKbe9_q"
+ }
+ ],
+ "updated": 1734361148717,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "BjZJSI_MJK0uSe18cWEsM",
+ "focus": -0.2118205902239549,
+ "gap": 6.5242098759806595,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "d7pRFde2mvhA75ZinOGRD",
+ "focus": 0.4718620660053835,
+ "gap": 2.6107107589399163,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 338.2683875544691,
+ -248.48315485174834
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 320,
+ "versionNonce": 1237168019,
+ "index": "b1yFV",
+ "isDeleted": false,
+ "id": "xcaW5b597i8KFqrKbe9_q",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 734.981417833779,
+ "y": 394.0665738990997,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 209.9197998046875,
+ "height": 150,
+ "seed": 1848652862,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361147616,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "5. If Staker is\ndelegated, update\nOperator's delegated\nshares based on\nstaker's increased\ndeposit shares",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "LDZjamuIcsv5-Wrln_O_d",
+ "originalText": "5. If Staker is delegated, update Operator's delegated shares based on staker's increased deposit shares",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "text",
+ "version": 594,
+ "versionNonce": 1027723325,
+ "index": "b1yG",
+ "isDeleted": false,
+ "id": "pgNm6zGufuhDI1ptkmCnq",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 245.77111158020585,
+ "y": 442.6588645705128,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 281.1000061035156,
+ "height": 64.39999999999999,
+ "seed": 1380464190,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734360277639,
+ "link": null,
+ "locked": false,
+ "fontSize": 28,
+ "fontFamily": 2,
+ "text": "Staker Flow:\nDepositing Native ETH",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "Staker Flow:\nDepositing Native ETH",
+ "autoResize": true,
+ "lineHeight": 1.15
+ },
+ {
+ "type": "arrow",
+ "version": 1278,
+ "versionNonce": 1635725907,
+ "index": "b1yGG",
+ "isDeleted": false,
+ "id": "IVDpX9ZNHIWc1DEu-_MSJ",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 170.51159590870293,
+ "y": 1022.5993428059394,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 327.30210637174764,
+ "height": 324.01338450211006,
+ "seed": 503264766,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "7X5j5XWcrfqZunL5LVn8P"
+ }
+ ],
+ "updated": 1734360277648,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "aNLyHhgEK3ibcdWPwAb6V",
+ "focus": -0.973783988334446,
+ "gap": 10.907898277340259,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "BjZJSI_MJK0uSe18cWEsM",
+ "focus": -0.11991131074358848,
+ "gap": 14.533739081712099,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 135.43746691313794,
+ -276.72474110745
+ ],
+ [
+ 327.30210637174764,
+ -324.01338450211006
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 271,
+ "versionNonce": 1433013523,
+ "index": "b1yGV",
+ "isDeleted": false,
+ "id": "7X5j5XWcrfqZunL5LVn8P",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 221.2623046390588,
+ "y": 634.6785714285717,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 220.91983032226562,
+ "height": 150,
+ "seed": 1517705406,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734359522384,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "1. Deploy EigenPod and\nstart up one or more\nbeacon chain\nvalidators with\nwithdrawal credentials\npointed at pod.",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "IVDpX9ZNHIWc1DEu-_MSJ",
+ "originalText": "1. Deploy EigenPod and start up one or more beacon chain validators with withdrawal credentials pointed at pod.",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "rectangle",
+ "version": 2123,
+ "versionNonce": 1818185405,
+ "index": "b1yH",
+ "isDeleted": false,
+ "id": "OoHImjROrg7WnQ4xzkpcv",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 651.7118827829199,
+ "y": 1717.428037405244,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffec99",
+ "width": 455.8571428571431,
+ "height": 114.99999999999997,
+ "seed": 1897941602,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "27hGMnQNsPM5Ow8ganeGX"
+ },
+ {
+ "id": "UShknM2c1yF75IS4pc0Bs",
+ "type": "arrow"
+ },
+ {
+ "id": "5nPp_KJjwxHRLaooYuN1o",
+ "type": "arrow"
+ },
+ {
+ "id": "3paqcsWlpb_FIiY6I8Lko",
+ "type": "arrow"
+ },
+ {
+ "id": "uZdrle8wzDudz1Ky8EmR2",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734361800476,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1852,
+ "versionNonce": 33812339,
+ "index": "b1yHV",
+ "isDeleted": false,
+ "id": "27hGMnQNsPM5Ow8ganeGX",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 799.8821229126634,
+ "y": 1765.328037405244,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 159.51666259765625,
+ "height": 19.2,
+ "seed": 1697426978,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361205390,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "DelegationManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "OoHImjROrg7WnQ4xzkpcv",
+ "originalText": "DelegationManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "rectangle",
+ "version": 1652,
+ "versionNonce": 1205018099,
+ "index": "b1yI",
+ "isDeleted": false,
+ "id": "y-bDpBMyaFEbqM1dAyygO",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 564.219819290857,
+ "y": 2031.3248628020692,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 223.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 695638498,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "OYjXOfgD4G99D0UzjCUa4"
+ },
+ {
+ "id": "5nPp_KJjwxHRLaooYuN1o",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734361205390,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1350,
+ "versionNonce": 1312876435,
+ "index": "b1yIG",
+ "isDeleted": false,
+ "id": "OYjXOfgD4G99D0UzjCUa4",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 605.344819290857,
+ "y": 2079.224862802069,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 140.75,
+ "height": 19.2,
+ "seed": 1829572002,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361205390,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "EigenPodManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "y-bDpBMyaFEbqM1dAyygO",
+ "originalText": "EigenPodManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "ellipse",
+ "version": 1288,
+ "versionNonce": 132376797,
+ "index": "b1yIV",
+ "isDeleted": false,
+ "id": "_lflU-chf5oKUcaJ6h4iP",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 83.42227628906892,
+ "y": 1758.9697040719104,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 108.75,
+ "height": 105,
+ "seed": 877827298,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "dKgP0x4gTtpzyQ0k3fx7X"
+ },
+ {
+ "id": "UShknM2c1yF75IS4pc0Bs",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734361240894,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1042,
+ "versionNonce": 411878717,
+ "index": "b1yJ",
+ "isDeleted": false,
+ "id": "dKgP0x4gTtpzyQ0k3fx7X",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 109.21501185587363,
+ "y": 1799.8465980596168,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 57.266666412353516,
+ "height": 23,
+ "seed": 1353820322,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361240894,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 2,
+ "text": "Staker",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "_lflU-chf5oKUcaJ6h4iP",
+ "originalText": "Staker",
+ "autoResize": true,
+ "lineHeight": 1.15
+ },
+ {
+ "type": "text",
+ "version": 967,
+ "versionNonce": 1354681267,
+ "index": "b1yJV",
+ "isDeleted": false,
+ "id": "ldqJxq6Ymhs0S0M3Oeo2T",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 188.83013064765873,
+ "y": 1946.3208945481013,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 290.1166687011719,
+ "height": 64.39999999999999,
+ "seed": 1058490146,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361205390,
+ "link": null,
+ "locked": false,
+ "fontSize": 28,
+ "fontFamily": 2,
+ "text": "Staker Flow:\nQueueing a Withdrawal",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "Staker Flow:\nQueueing a Withdrawal",
+ "autoResize": true,
+ "lineHeight": 1.15
+ },
+ {
+ "type": "arrow",
+ "version": 533,
+ "versionNonce": 1822102941,
+ "index": "b1yK",
+ "isDeleted": false,
+ "id": "UShknM2c1yF75IS4pc0Bs",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 203.76971928374613,
+ "y": 1823.2340121234956,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 444.4312508007623,
+ "height": 2.283485978642375,
+ "seed": 1955708926,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [],
+ "updated": 1734361240895,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "_lflU-chf5oKUcaJ6h4iP",
+ "focus": 0.21762247876367694,
+ "gap": 12.698369542443928,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "OoHImjROrg7WnQ4xzkpcv",
+ "focus": -0.8826906454351978,
+ "gap": 3.51091269841163,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 444.4312508007623,
+ 2.283485978642375
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 224,
+ "versionNonce": 1882176243,
+ "index": "b1yKG",
+ "isDeleted": false,
+ "id": "-p_5qWmgqYtbWtGR7iAeW",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 285.9276139074964,
+ "y": 1837.487561214768,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 281.25,
+ "height": 48,
+ "seed": 1827303778,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361205390,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 3,
+ "text": "undelegate, redelegate, \nor queueWithdrawals",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "undelegate, redelegate, \nor queueWithdrawals",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "text",
+ "version": 233,
+ "versionNonce": 1721284221,
+ "index": "b1yKV",
+ "isDeleted": false,
+ "id": "KzAAaAeuALvdgojxNjbs7",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 218.01781375312828,
+ "y": 1754.6780181142065,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 393.69964599609375,
+ "height": 50,
+ "seed": 1121468350,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361237884,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "1. Initiate withdrawal of deposit shares\nfor LSTs, Native ETH, or both",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "1. Initiate withdrawal of deposit shares\nfor LSTs, Native ETH, or both",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "arrow",
+ "version": 312,
+ "versionNonce": 1014126707,
+ "index": "b1yL",
+ "isDeleted": false,
+ "id": "5nPp_KJjwxHRLaooYuN1o",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 742.5341158452547,
+ "y": 1840.820894548101,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 110.84284788508944,
+ "height": 183.33333333333303,
+ "seed": 2071062882,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "oX28umVZ3JPHOhJbR9hcB"
+ }
+ ],
+ "updated": 1734362077371,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "OoHImjROrg7WnQ4xzkpcv",
+ "focus": 0.37027146266844296,
+ "gap": 8.39285714285711,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "y-bDpBMyaFEbqM1dAyygO",
+ "focus": -0.5683425061782671,
+ "gap": 7.170634920635166,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ -110.84284788508944,
+ 183.33333333333303
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 117,
+ "versionNonce": 915396477,
+ "index": "b1yLV",
+ "isDeleted": false,
+ "id": "oX28umVZ3JPHOhJbR9hcB",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 578.5127730752955,
+ "y": 1882.4875612147675,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 217.19983765482903,
+ "height": 100,
+ "seed": 30379646,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734362076301,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "4. Remove\ncorresponding deposit\nshares while\nwithdrawal is in queue",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "5nPp_KJjwxHRLaooYuN1o",
+ "originalText": "4. Remove corresponding deposit shares while withdrawal is in queue",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "rectangle",
+ "version": 762,
+ "versionNonce": 1735007187,
+ "index": "b1yM",
+ "isDeleted": false,
+ "id": "fgr-vhlkAfB4aNKWl1vBo",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 977.3001764337146,
+ "y": 2034.5947040719113,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 223.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1155351458,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "h0lFC_qYXovD547xr7zCV"
+ },
+ {
+ "id": "3paqcsWlpb_FIiY6I8Lko",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734361205390,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 498,
+ "versionNonce": 1107110259,
+ "index": "b1yMV",
+ "isDeleted": false,
+ "id": "h0lFC_qYXovD547xr7zCV",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1018.4251764337146,
+ "y": 2082.4947040719117,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 140.75,
+ "height": 19.2,
+ "seed": 1098415970,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361205390,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "StrategyManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "fgr-vhlkAfB4aNKWl1vBo",
+ "originalText": "StrategyManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "arrow",
+ "version": 379,
+ "versionNonce": 600938013,
+ "index": "b1yN",
+ "isDeleted": false,
+ "id": "3paqcsWlpb_FIiY6I8Lko",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 992.9125326314522,
+ "y": 1839.453635696875,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 152.49048544824382,
+ "height": 186.66666666666606,
+ "seed": 512599010,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "zeElqxBoaWoookvFWk7QE"
+ }
+ ],
+ "updated": 1734362080654,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "OoHImjROrg7WnQ4xzkpcv",
+ "focus": -0.22029835777170426,
+ "gap": 7.025598291631013,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "fgr-vhlkAfB4aNKWl1vBo",
+ "focus": 0.6972704914860178,
+ "gap": 8.474401708370237,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 152.49048544824382,
+ 186.66666666666606
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 124,
+ "versionNonce": 1464141555,
+ "index": "b1yNV",
+ "isDeleted": false,
+ "id": "zeElqxBoaWoookvFWk7QE",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 960.5578565281596,
+ "y": 1882.786969030208,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 217.19983765482903,
+ "height": 100,
+ "seed": 2125649826,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734362079457,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "4. Remove\ncorresponding deposit\nshares while\nwithdrawal is in queue",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "3paqcsWlpb_FIiY6I8Lko",
+ "originalText": "4. Remove corresponding deposit shares while withdrawal is in queue",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "rectangle",
+ "version": 2236,
+ "versionNonce": 219456563,
+ "index": "b1yO",
+ "isDeleted": false,
+ "id": "HMOTYhgmt2kUR8Zl1vEhQ",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 597.8047585425198,
+ "y": 2620.875138540512,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffec99",
+ "width": 455.8571428571431,
+ "height": 114.99999999999997,
+ "seed": 1749542178,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "9Vck9P2kgcYLnAHDKMCOz"
+ },
+ {
+ "id": "eDi3aeq3shWTkAvqzeyHF",
+ "type": "arrow"
+ },
+ {
+ "id": "TTmKNlPiKnQPMyN-Awpoc",
+ "type": "arrow"
+ },
+ {
+ "id": "8oDhid4AzUldXlmXntLbl",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734361190878,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1966,
+ "versionNonce": 1979164115,
+ "index": "b1yOG",
+ "isDeleted": false,
+ "id": "9Vck9P2kgcYLnAHDKMCOz",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 745.9749986722633,
+ "y": 2668.7751385405127,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 159.51666259765625,
+ "height": 19.2,
+ "seed": 840102114,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361190878,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "DelegationManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "HMOTYhgmt2kUR8Zl1vEhQ",
+ "originalText": "DelegationManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "rectangle",
+ "version": 1766,
+ "versionNonce": 1216914515,
+ "index": "b1yOV",
+ "isDeleted": false,
+ "id": "miN4w27CQFNxPcL7apF3C",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 510.3126950504569,
+ "y": 2934.771963937337,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 223.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1845920930,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "LH_Dxlusq3BFFI0jYoPF_"
+ },
+ {
+ "id": "TTmKNlPiKnQPMyN-Awpoc",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734361190878,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1464,
+ "versionNonce": 2134286835,
+ "index": "b1yP",
+ "isDeleted": false,
+ "id": "LH_Dxlusq3BFFI0jYoPF_",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 551.4376950504569,
+ "y": 2982.6719639373378,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 140.75,
+ "height": 19.2,
+ "seed": 1439801442,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361190878,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "EigenPodManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "miN4w27CQFNxPcL7apF3C",
+ "originalText": "EigenPodManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "ellipse",
+ "version": 1364,
+ "versionNonce": 316080435,
+ "index": "b1yPV",
+ "isDeleted": false,
+ "id": "lciwwPyWIpXIstSEYo0zY",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 59.88610774887013,
+ "y": 2662.416805207179,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 108.75,
+ "height": 105,
+ "seed": 356729890,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "oRexr89IPDmIIbDsjlB_S"
+ },
+ {
+ "id": "eDi3aeq3shWTkAvqzeyHF",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734361190878,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1118,
+ "versionNonce": 761684691,
+ "index": "b1yQ",
+ "isDeleted": false,
+ "id": "oRexr89IPDmIIbDsjlB_S",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 85.67884331567484,
+ "y": 2703.2936991948854,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 57.266666412353516,
+ "height": 23,
+ "seed": 105541602,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361190878,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 2,
+ "text": "Staker",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "lciwwPyWIpXIstSEYo0zY",
+ "originalText": "Staker",
+ "autoResize": true,
+ "lineHeight": 1.15
+ },
+ {
+ "type": "text",
+ "version": 1165,
+ "versionNonce": 1223952915,
+ "index": "b1yQG",
+ "isDeleted": false,
+ "id": "JoojGAxv1vLPsyFreqRYg",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 60.16467510843063,
+ "y": 2854.76799568337,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 419.6333312988281,
+ "height": 64.39999999999999,
+ "seed": 1828070306,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361190878,
+ "link": null,
+ "locked": false,
+ "fontSize": 28,
+ "fontFamily": 2,
+ "text": "Staker Flow:\nCompleting Withdrawal as Shares",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "Staker Flow:\nCompleting Withdrawal as Shares",
+ "autoResize": true,
+ "lineHeight": 1.15
+ },
+ {
+ "type": "arrow",
+ "version": 849,
+ "versionNonce": 275206333,
+ "index": "b1yQV",
+ "isDeleted": false,
+ "id": "eDi3aeq3shWTkAvqzeyHF",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 180.22970805664283,
+ "y": 2726.7025563613306,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 414.0641377874654,
+ "height": 2.2620428760758386,
+ "seed": 863330146,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [],
+ "updated": 1734361190885,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "lciwwPyWIpXIstSEYo0zY",
+ "focus": 0.21762247876367327,
+ "gap": 12.698369542443949,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "HMOTYhgmt2kUR8Zl1vEhQ",
+ "focus": -0.8826906454351975,
+ "gap": 3.5109126984114596,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 414.0641377874654,
+ 2.2620428760758386
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 314,
+ "versionNonce": 942727507,
+ "index": "b1yR",
+ "isDeleted": false,
+ "id": "KPgJz2-1NWphbqelE6-3Z",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 226.16885093037138,
+ "y": 2740.934662350036,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 292.9166564941406,
+ "height": 24,
+ "seed": 639050530,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361190878,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 3,
+ "text": "completeQueuedWithdrawals",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "completeQueuedWithdrawals",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "text",
+ "version": 411,
+ "versionNonce": 684670707,
+ "index": "b1yRV",
+ "isDeleted": false,
+ "id": "cEyESCGLOGOYOFv2oE-WX",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 190.66051963154325,
+ "y": 2657.601329016703,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 343.9333190917969,
+ "height": 50,
+ "seed": 793407202,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361190878,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "1. After withdrawal delay, complete\nwithdrawal \"as shares\"",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "1. After withdrawal delay, complete\nwithdrawal \"as shares\"",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "arrow",
+ "version": 664,
+ "versionNonce": 513224691,
+ "index": "b1yS",
+ "isDeleted": false,
+ "id": "TTmKNlPiKnQPMyN-Awpoc",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 689.0054083910524,
+ "y": 2744.267995683369,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 110.84284788508944,
+ "height": 183.33333333333303,
+ "seed": 329138850,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "hJNGWB18ZIUSw7JVTgc2K"
+ }
+ ],
+ "updated": 1734363719393,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "HMOTYhgmt2kUR8Zl1vEhQ",
+ "focus": 0.36883093359979874,
+ "gap": 8.392857142856883,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "miN4w27CQFNxPcL7apF3C",
+ "focus": -0.5657552947899162,
+ "gap": 7.170634920635166,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ -110.84284788508944,
+ 183.33333333333303
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 180,
+ "versionNonce": 2100058109,
+ "index": "b1ySG",
+ "isDeleted": false,
+ "id": "hJNGWB18ZIUSw7JVTgc2K",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 534.7340656210931,
+ "y": 2785.9346623500355,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 197.69983765482903,
+ "height": 100,
+ "seed": 767663714,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363718346,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "4. Re-add deposit\nshares (by\nwithdrawable shares\namount)",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "TTmKNlPiKnQPMyN-Awpoc",
+ "originalText": "4. Re-add deposit shares (by withdrawable shares amount)",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "rectangle",
+ "version": 876,
+ "versionNonce": 447503923,
+ "index": "b1ySV",
+ "isDeleted": false,
+ "id": "FkjP9vIB5dinD6UIBMgml",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 923.3930521933146,
+ "y": 2938.04180520718,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 223.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 713261602,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "5FKrWFg1DqsWunCD6mjB9"
+ },
+ {
+ "id": "8oDhid4AzUldXlmXntLbl",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734361190878,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 612,
+ "versionNonce": 747118547,
+ "index": "b1yT",
+ "isDeleted": false,
+ "id": "5FKrWFg1DqsWunCD6mjB9",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 964.5180521933146,
+ "y": 2985.9418052071796,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 140.75,
+ "height": 19.2,
+ "seed": 1154674146,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361190878,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "StrategyManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "FkjP9vIB5dinD6UIBMgml",
+ "originalText": "StrategyManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "arrow",
+ "version": 738,
+ "versionNonce": 385988243,
+ "index": "b1yTV",
+ "isDeleted": false,
+ "id": "8oDhid4AzUldXlmXntLbl",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 939.8126988370193,
+ "y": 2742.9007368321436,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 152.49048544824382,
+ "height": 186.66666666666606,
+ "seed": 29286818,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "D41UobT9h1xxCvSzfzvM6"
+ }
+ ],
+ "updated": 1734363721965,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "HMOTYhgmt2kUR8Zl1vEhQ",
+ "focus": -0.2232350156608123,
+ "gap": 7.025598291631468,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "FkjP9vIB5dinD6UIBMgml",
+ "focus": 0.702364689952395,
+ "gap": 8.474401708370351,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 152.49048544824382,
+ 186.66666666666606
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 138,
+ "versionNonce": 1892574045,
+ "index": "b1yU",
+ "isDeleted": false,
+ "id": "D41UobT9h1xxCvSzfzvM6",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 917.2080227337267,
+ "y": 2786.2340701654766,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 197.69983765482903,
+ "height": 100,
+ "seed": 1819696482,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363721257,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "4. Re-add deposit\nshares (by\nwithdrawable shares\namount)",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "8oDhid4AzUldXlmXntLbl",
+ "originalText": "4. Re-add deposit shares (by withdrawable shares amount)",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "rectangle",
+ "version": 2427,
+ "versionNonce": 393682109,
+ "index": "b1yUG",
+ "isDeleted": false,
+ "id": "PQ83u0WAkad1B1o1C1iNi",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 977.3043324551686,
+ "y": 4051.854354948895,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffec99",
+ "width": 455.8571428571431,
+ "height": 114.99999999999997,
+ "seed": 715186850,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "WxM9bgcZ3WGnjASzoklsN"
+ },
+ {
+ "id": "AxtNwGQnRh8fqQAYXPcB8",
+ "type": "arrow"
+ },
+ {
+ "id": "-2NlzuMn6PNtlfulLdjA7",
+ "type": "arrow"
+ },
+ {
+ "id": "BEr_TOZmKQdO6AcwFrKWb",
+ "type": "arrow"
+ },
+ {
+ "id": "1YDohtzXZZQMtHn9rNLZR",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 2148,
+ "versionNonce": 1531870493,
+ "index": "b1yUV",
+ "isDeleted": false,
+ "id": "WxM9bgcZ3WGnjASzoklsN",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1125.474572584912,
+ "y": 4099.754354948895,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 159.51666259765625,
+ "height": 19.2,
+ "seed": 191905378,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "DelegationManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "PQ83u0WAkad1B1o1C1iNi",
+ "originalText": "DelegationManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "ellipse",
+ "version": 1466,
+ "versionNonce": 153856765,
+ "index": "b1yUl",
+ "isDeleted": false,
+ "id": "NQxdmwNFdM60dm5-JugHD",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 266.05234832818553,
+ "y": 4100.062688282228,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 108.75,
+ "height": 105,
+ "seed": 846299554,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "cor2pTfIUrALyeGhEkHT3"
+ },
+ {
+ "id": "AxtNwGQnRh8fqQAYXPcB8",
+ "type": "arrow"
+ },
+ {
+ "id": "6wphfCZUznb3CeuzUuOTg",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1218,
+ "versionNonce": 1003963229,
+ "index": "b1yV",
+ "isDeleted": false,
+ "id": "cor2pTfIUrALyeGhEkHT3",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 291.84508389499024,
+ "y": 4140.939582269934,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 57.266666412353516,
+ "height": 23,
+ "seed": 768933218,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 2,
+ "text": "Staker",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "NQxdmwNFdM60dm5-JugHD",
+ "originalText": "Staker",
+ "autoResize": true,
+ "lineHeight": 1.15
+ },
+ {
+ "type": "text",
+ "version": 2048,
+ "versionNonce": 306431101,
+ "index": "b1yVG",
+ "isDeleted": false,
+ "id": "LsXGoQ1gtpREiel6zNv0A",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 367.58091823087784,
+ "y": 4294.080545425084,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 250.46665954589844,
+ "height": 128.79999999999998,
+ "seed": 785580322,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 28,
+ "fontFamily": 2,
+ "text": "Staker Flow:\nCompleting a Native\nETH Withdrawal\nAs Tokens",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "Staker Flow:\nCompleting a Native\nETH Withdrawal\nAs Tokens",
+ "autoResize": true,
+ "lineHeight": 1.15
+ },
+ {
+ "type": "arrow",
+ "version": 1381,
+ "versionNonce": 287695827,
+ "index": "b1yVV",
+ "isDeleted": false,
+ "id": "AxtNwGQnRh8fqQAYXPcB8",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 386.5051575541728,
+ "y": 4163.754307029607,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 587.2882622025842,
+ "height": 2.0989984505267785,
+ "seed": 819629282,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [],
+ "updated": 1734363560521,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "NQxdmwNFdM60dm5-JugHD",
+ "focus": 0.21767058936200775,
+ "gap": 12.698184619725637,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "PQ83u0WAkad1B1o1C1iNi",
+ "focus": -0.882690645435168,
+ "gap": 3.51091269841163,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 587.2882622025842,
+ -2.0989984505267785
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 410,
+ "versionNonce": 70289725,
+ "index": "b1yW",
+ "isDeleted": false,
+ "id": "i-HUeFuIj_CNiK4aocZiK",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 452.3350915096869,
+ "y": 4180.247212091752,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 292.9166564941406,
+ "height": 24,
+ "seed": 1769644194,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 3,
+ "text": "completeQueuedWithdrawals",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "completeQueuedWithdrawals",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "text",
+ "version": 531,
+ "versionNonce": 925260189,
+ "index": "b1yWV",
+ "isDeleted": false,
+ "id": "J8KNcgeeIIyPrjuezAJWw",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 433.4934268775253,
+ "y": 4101.91387875842,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 343.9333190917969,
+ "height": 50,
+ "seed": 73546850,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "1. After withdrawal delay, complete\nwithdrawal \"as tokens\"",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "1. After withdrawal delay, complete\nwithdrawal \"as tokens\"",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "rectangle",
+ "version": 1514,
+ "versionNonce": 1069751805,
+ "index": "b1yX",
+ "isDeleted": false,
+ "id": "kQ1fgu7rlXnxTswNeY2sY",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 666.9913364234233,
+ "y": 4356.830183280432,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 223.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 800379198,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "Q4WYiLsmSd2ANtW4Fzf5C"
+ },
+ {
+ "id": "-2NlzuMn6PNtlfulLdjA7",
+ "type": "arrow"
+ },
+ {
+ "id": "sEaeau6v0HW9Bw5m2-QLc",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1210,
+ "versionNonce": 889738845,
+ "index": "b1yXG",
+ "isDeleted": false,
+ "id": "Q4WYiLsmSd2ANtW4Fzf5C",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 708.1163364234233,
+ "y": 4404.730183280432,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 140.75,
+ "height": 19.2,
+ "seed": 96729470,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "EigenPodManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "kQ1fgu7rlXnxTswNeY2sY",
+ "originalText": "EigenPodManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "rectangle",
+ "version": 2229,
+ "versionNonce": 67745661,
+ "index": "b1yXV",
+ "isDeleted": false,
+ "id": "-ByAz-Fdfvva8JaCOwxPA",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 667.5468919789791,
+ "y": 4896.3857388359875,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1480858046,
+ "groupIds": [
+ "5pa49v7yiW1ejxPXqXnpp"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 2159,
+ "versionNonce": 943701981,
+ "index": "b1yY",
+ "isDeleted": false,
+ "id": "eMRf6JiZPdxP9G7OwFmLL",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 667.5468919789791,
+ "y": 4861.3857388359875,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1582707198,
+ "groupIds": [
+ "5pa49v7yiW1ejxPXqXnpp"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 2108,
+ "versionNonce": 492158013,
+ "index": "b1yYV",
+ "isDeleted": false,
+ "id": "-3YXnHeLhfBTkpAIrjWHi",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 667.5468919789791,
+ "y": 4825.8857388359875,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1123762750,
+ "groupIds": [
+ "5pa49v7yiW1ejxPXqXnpp"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 2035,
+ "versionNonce": 2066558109,
+ "index": "b1yZ",
+ "isDeleted": false,
+ "id": "OMQvAoE8on6TXfPaYPM7k",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 667.5468919789791,
+ "y": 4790.8857388359875,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 689195646,
+ "groupIds": [
+ "5pa49v7yiW1ejxPXqXnpp"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 2100,
+ "versionNonce": 561484029,
+ "index": "b1yZG",
+ "isDeleted": false,
+ "id": "lWvf1FuH4IJqchS8LLjgi",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 667.5468919789791,
+ "y": 4760.1357388359875,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 794970814,
+ "groupIds": [
+ "5pa49v7yiW1ejxPXqXnpp"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 2029,
+ "versionNonce": 1840671069,
+ "index": "b1yZV",
+ "isDeleted": false,
+ "id": "T3ieDPp5QgyBQ8v2i4_Hc",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 667.5468919789791,
+ "y": 4725.1357388359875,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1954956030,
+ "groupIds": [
+ "5pa49v7yiW1ejxPXqXnpp"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1974,
+ "versionNonce": 289093053,
+ "index": "b1ya",
+ "isDeleted": false,
+ "id": "oFgAfaubZA5gBAcdWlWX2",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 667.5468919789791,
+ "y": 4689.635738835988,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 453063486,
+ "groupIds": [
+ "5pa49v7yiW1ejxPXqXnpp"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1909,
+ "versionNonce": 388462109,
+ "index": "b1yaV",
+ "isDeleted": false,
+ "id": "sJgKoBo4od3axAJJzTbFl",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 667.5468919789791,
+ "y": 4654.635738835988,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1295260542,
+ "groupIds": [
+ "5pa49v7yiW1ejxPXqXnpp"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "id": "6wphfCZUznb3CeuzUuOTg",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1832,
+ "versionNonce": 466375389,
+ "index": "b1yb",
+ "isDeleted": false,
+ "id": "UicKTv5RzQFz_sRAvYCSx",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 667.9218919789791,
+ "y": 4615.205183280432,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1096809406,
+ "groupIds": [
+ "5pa49v7yiW1ejxPXqXnpp"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "FS4_skLwKgXHbZaPDZncL"
+ },
+ {
+ "id": "sEaeau6v0HW9Bw5m2-QLc",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1565,
+ "versionNonce": 668462909,
+ "index": "b1ybV",
+ "isDeleted": false,
+ "id": "FS4_skLwKgXHbZaPDZncL",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 679.1218927419186,
+ "y": 4653.505183280433,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 112.5999984741211,
+ "height": 38.4,
+ "seed": 1034277886,
+ "groupIds": [
+ "5pa49v7yiW1ejxPXqXnpp"
+ ],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "EigenPods\n(1 per user)",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "UicKTv5RzQFz_sRAvYCSx",
+ "originalText": "EigenPods\n(1 per user)",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "arrow",
+ "version": 748,
+ "versionNonce": 685733469,
+ "index": "b1yd",
+ "isDeleted": false,
+ "id": "-2NlzuMn6PNtlfulLdjA7",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 991.1236247335738,
+ "y": 4171.271021615562,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 223.9610718898632,
+ "height": 176.66666666666652,
+ "seed": 1035097662,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "oRz68yZNH2lbKSZF1y-hq"
+ }
+ ],
+ "updated": 1734363735302,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "PQ83u0WAkad1B1o1C1iNi",
+ "focus": 0.4508229435372423,
+ "gap": 4.41666666666697,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "kQ1fgu7rlXnxTswNeY2sY",
+ "focus": -0.5178875121387579,
+ "gap": 8.892494998202892,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ -223.9610718898632,
+ 176.66666666666652
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 112,
+ "versionNonce": 1545484979,
+ "index": "b1ydG",
+ "isDeleted": false,
+ "id": "oRz68yZNH2lbKSZF1y-hq",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 784.3631586738961,
+ "y": 4234.604354948895,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 189.5598602294922,
+ "height": 50,
+ "seed": 969993890,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363734241,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "3. Withdraw shares\nas native eth",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "-2NlzuMn6PNtlfulLdjA7",
+ "originalText": "3. Withdraw shares as native eth",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "arrow",
+ "version": 487,
+ "versionNonce": 1107673693,
+ "index": "b1ydV",
+ "isDeleted": false,
+ "id": "sEaeau6v0HW9Bw5m2-QLc",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 714.3058205504078,
+ "y": 4474.604354948895,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 30,
+ "height": 131.66666666666652,
+ "seed": 857568610,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "PGqyWD0wYyKYxhwnFlq99"
+ }
+ ],
+ "updated": 1734363753816,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "kQ1fgu7rlXnxTswNeY2sY",
+ "focus": 0.40490889053038814,
+ "gap": 2.7741716684631683,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "UicKTv5RzQFz_sRAvYCSx",
+ "focus": -0.8219842250215641,
+ "gap": 8.934161664870771,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ -30,
+ 131.66666666666652
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 150,
+ "versionNonce": 1797238451,
+ "index": "b1ye",
+ "isDeleted": false,
+ "id": "PGqyWD0wYyKYxhwnFlq99",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 590.8558998961109,
+ "y": 4502.937688282228,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 216.89984130859375,
+ "height": 75,
+ "seed": 376107390,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363752712,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "4. Withdraw ETH from\nproven \"withdrawable\"\nETH",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "sEaeau6v0HW9Bw5m2-QLc",
+ "originalText": "4. Withdraw ETH from proven \"withdrawable\" ETH",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "rectangle",
+ "version": 2283,
+ "versionNonce": 1483513213,
+ "index": "b1yeV",
+ "isDeleted": false,
+ "id": "ov74QuZuHeQk5snpuex4j",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 508.3638562646935,
+ "y": 5672.694632726673,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1321608034,
+ "groupIds": [
+ "-a95jHDTnDXw5D9TZzWPv"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 2214,
+ "versionNonce": 190178781,
+ "index": "b1yf",
+ "isDeleted": false,
+ "id": "1K3KAKEZc7hub6QqnfFkO",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 508.3638562646935,
+ "y": 5637.694632726673,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 581920546,
+ "groupIds": [
+ "-a95jHDTnDXw5D9TZzWPv"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "id": "mGMTzes2F3Dpy73P0aXca",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 2164,
+ "versionNonce": 917971517,
+ "index": "b1yfG",
+ "isDeleted": false,
+ "id": "KbInyH-gvwVMsVBnNRlsP",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 508.3638562646935,
+ "y": 5602.194632726673,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 2017080034,
+ "groupIds": [
+ "-a95jHDTnDXw5D9TZzWPv"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 2091,
+ "versionNonce": 1869730461,
+ "index": "b1yfV",
+ "isDeleted": false,
+ "id": "ic5dIZ-8ueKkFPMVrRg3q",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 508.3638562646935,
+ "y": 5567.194632726673,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 838174370,
+ "groupIds": [
+ "-a95jHDTnDXw5D9TZzWPv"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "id": "vj4BSnZm75z5L1-Bd7wmA",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 2154,
+ "versionNonce": 842495741,
+ "index": "b1yg",
+ "isDeleted": false,
+ "id": "w8AHt8u9f13X41cx2ch_o",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 508.3638562646935,
+ "y": 5536.444632726673,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 143680098,
+ "groupIds": [
+ "-a95jHDTnDXw5D9TZzWPv"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 2089,
+ "versionNonce": 1770622813,
+ "index": "b1ygV",
+ "isDeleted": false,
+ "id": "GEAj2lmmidRmUlCzXn9xj",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 508.3638562646935,
+ "y": 5501.444632726673,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1188677154,
+ "groupIds": [
+ "-a95jHDTnDXw5D9TZzWPv"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 2028,
+ "versionNonce": 867802045,
+ "index": "b1yh",
+ "isDeleted": false,
+ "id": "k40q4mWXkGfhuTKm0wtdK",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 508.3638562646935,
+ "y": 5465.944632726673,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 96514530,
+ "groupIds": [
+ "-a95jHDTnDXw5D9TZzWPv"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "id": "wl2N1yzHJY0w9n2-O6uBK",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1961,
+ "versionNonce": 1760107549,
+ "index": "b1yhG",
+ "isDeleted": false,
+ "id": "mCl_YXyLYkCML2D84GHb_",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 508.3638562646935,
+ "y": 5430.944632726673,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1750345122,
+ "groupIds": [
+ "-a95jHDTnDXw5D9TZzWPv"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "id": "wl2N1yzHJY0w9n2-O6uBK",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1883,
+ "versionNonce": 1628016765,
+ "index": "b1yhV",
+ "isDeleted": false,
+ "id": "EIr7yDWcf5XOCl3LVxa0f",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 508.7388562646935,
+ "y": 5391.5140771711185,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1472405858,
+ "groupIds": [
+ "-a95jHDTnDXw5D9TZzWPv"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "G35L9DJWDWkC_VH8bd05f"
+ },
+ {
+ "id": "wl2N1yzHJY0w9n2-O6uBK",
+ "type": "arrow"
+ },
+ {
+ "id": "vj4BSnZm75z5L1-Bd7wmA",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1619,
+ "versionNonce": 2044491997,
+ "index": "b1yi",
+ "isDeleted": false,
+ "id": "G35L9DJWDWkC_VH8bd05f",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 519.9388570276329,
+ "y": 5429.814077171118,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 112.5999984741211,
+ "height": 38.4,
+ "seed": 1063036194,
+ "groupIds": [
+ "-a95jHDTnDXw5D9TZzWPv"
+ ],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "EigenPods\n(1 per user)",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "EIr7yDWcf5XOCl3LVxa0f",
+ "originalText": "EigenPods\n(1 per user)",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "rectangle",
+ "version": 1866,
+ "versionNonce": 121825789,
+ "index": "b1yiV",
+ "isDeleted": false,
+ "id": "6dE977xJsK71ptktUgxTH",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 916.8638562646933,
+ "y": 5437.527966060007,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 266.00000000000017,
+ "height": 114.99999999999997,
+ "seed": 69099618,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "LpzmdEWZoAuxFhQksffXs"
+ },
+ {
+ "id": "wl2N1yzHJY0w9n2-O6uBK",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1765,
+ "versionNonce": 313434717,
+ "index": "b1yj",
+ "isDeleted": false,
+ "id": "LpzmdEWZoAuxFhQksffXs",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 979.4888562646934,
+ "y": 5485.427966060007,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 140.75,
+ "height": 19.2,
+ "seed": 1542980642,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "EIP-4788 Oracle",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "6dE977xJsK71ptktUgxTH",
+ "originalText": "EIP-4788 Oracle",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "arrow",
+ "version": 2118,
+ "versionNonce": 1971038611,
+ "index": "b1yjV",
+ "isDeleted": false,
+ "id": "wl2N1yzHJY0w9n2-O6uBK",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 651.2829108238828,
+ "y": 5506.268772499644,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffec99",
+ "width": 258.0630882979534,
+ "height": 0.06671593128066888,
+ "seed": 409415650,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [],
+ "updated": 1734363560521,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "EIr7yDWcf5XOCl3LVxa0f",
+ "focus": 0.9957690346543716,
+ "gap": 7.544054559189192,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "6dE977xJsK71ptktUgxTH",
+ "focus": -0.19358446686072192,
+ "gap": 7.5178571428570535,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 258.0630882979534,
+ -0.06671593128066888
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 767,
+ "versionNonce": 390300541,
+ "index": "b1yk",
+ "isDeleted": false,
+ "id": "suYlO5trpiXH7DPcsPva-",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 659.5840943599316,
+ "y": 5439.057727964769,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffec99",
+ "width": 241.89999389648438,
+ "height": 50,
+ "seed": 494592930,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [
+ {
+ "id": "wl2N1yzHJY0w9n2-O6uBK",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "1.5 Parent beacon block\nroot queried from oracle",
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "1.5 Parent beacon block\nroot queried from oracle",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "ellipse",
+ "version": 1588,
+ "versionNonce": 1516243933,
+ "index": "b1ykV",
+ "isDeleted": false,
+ "id": "fu5u9qb7f5q6a-Xge9KFW",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 39.081118169455294,
+ "y": 5470.079915506246,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 108.75,
+ "height": 105,
+ "seed": 1969364834,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "zoX-NdDWsLZeKla7uZsJa"
+ },
+ {
+ "id": "vj4BSnZm75z5L1-Bd7wmA",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1336,
+ "versionNonce": 764184637,
+ "index": "b1yl",
+ "isDeleted": false,
+ "id": "zoX-NdDWsLZeKla7uZsJa",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 64.87385373626,
+ "y": 5510.956809493952,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 57.266666412353516,
+ "height": 23,
+ "seed": 208397090,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 2,
+ "text": "Staker",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "fu5u9qb7f5q6a-Xge9KFW",
+ "originalText": "Staker",
+ "autoResize": true,
+ "lineHeight": 1.15
+ },
+ {
+ "type": "arrow",
+ "version": 908,
+ "versionNonce": 670474451,
+ "index": "b1ylG",
+ "isDeleted": false,
+ "id": "vj4BSnZm75z5L1-Bd7wmA",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 149.63115028729248,
+ "y": 5490.368685685094,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 356.86961092156184,
+ "height": 1.7933079596450625,
+ "seed": 1829187298,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [],
+ "updated": 1734363560521,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "fu5u9qb7f5q6a-Xge9KFW",
+ "focus": -0.6081621304143124,
+ "gap": 10.858235443211711,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "EIr7yDWcf5XOCl3LVxa0f",
+ "focus": -0.677928857055987,
+ "gap": 2.23809505583921,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 356.86961092156184,
+ -1.7933079596450625
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 366,
+ "versionNonce": 1196471645,
+ "index": "b1ylV",
+ "isDeleted": false,
+ "id": "8BahsLtuF7IbIbOLx2-Mx",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 227.2477848361218,
+ "y": 5494.246582172914,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 175.75,
+ "height": 24,
+ "seed": 2076377762,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [
+ {
+ "id": "vj4BSnZm75z5L1-Bd7wmA",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 3,
+ "text": "startCheckpoint",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "startCheckpoint",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "text",
+ "version": 569,
+ "versionNonce": 1504444861,
+ "index": "b1ym",
+ "isDeleted": false,
+ "id": "_4N_XcbOGQl5IcAcywLwz",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 220.72278331024324,
+ "y": 5392.579915506248,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 168.8000030517578,
+ "height": 25,
+ "seed": 860773986,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "0. Exit validator",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "0. Exit validator",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "text",
+ "version": 2120,
+ "versionNonce": 798933533,
+ "index": "b1ymV",
+ "isDeleted": false,
+ "id": "d72WGNKRuYgAsUjbtzORG",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 71.25582258491318,
+ "y": 5302.404354948895,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 322.76666259765625,
+ "height": 64.39999999999999,
+ "seed": 1006649378,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 28,
+ "fontFamily": 2,
+ "text": "Staker Flow:\nProcessing Validator Exits",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "Staker Flow:\nProcessing Validator Exits",
+ "autoResize": true,
+ "lineHeight": 1.15
+ },
+ {
+ "type": "arrow",
+ "version": 579,
+ "versionNonce": 1807838109,
+ "index": "b1yn",
+ "isDeleted": false,
+ "id": "6wphfCZUznb3CeuzUuOTg",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 661.8188413837411,
+ "y": 4783.347844532228,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 339.50691489593646,
+ "height": 566.5762032002181,
+ "seed": 827744894,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "g7WtYgMLCoPIyK2GZ6v0S"
+ }
+ ],
+ "updated": 1734363759259,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "sJgKoBo4od3axAJJzTbFl",
+ "focus": -1.171032254566488,
+ "gap": 13.712105696239632,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "NQxdmwNFdM60dm5-JugHD",
+ "focus": 0.030507353609042952,
+ "gap": 11.73505335639934,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ -320,
+ -213.33333333333348
+ ],
+ [
+ -339.50691489593646,
+ -566.5762032002181
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 57,
+ "versionNonce": 1123936627,
+ "index": "b1ynG",
+ "isDeleted": false,
+ "id": "g7WtYgMLCoPIyK2GZ6v0S",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 223.50893168239372,
+ "y": 4545.014511198895,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 236.6198194026947,
+ "height": 50,
+ "seed": 958894142,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363758637,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "5. Send ETH directly to\nStaker",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "6wphfCZUznb3CeuzUuOTg",
+ "originalText": "5. Send ETH directly to Staker",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "arrow",
+ "version": 939,
+ "versionNonce": 285232563,
+ "index": "b1ynV",
+ "isDeleted": false,
+ "id": "mGMTzes2F3Dpy73P0aXca",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 667.4588196812585,
+ "y": 5737.719971933378,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 174.472005955412,
+ "height": 1.7402432100288934,
+ "seed": 2136924002,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [],
+ "updated": 1734363560522,
+ "link": null,
+ "locked": false,
+ "startBinding": null,
+ "endBinding": {
+ "elementId": "i9Mz6DQh6ztmSH01qUZ0E",
+ "focus": -0.1511269098788724,
+ "gap": 12.049992879231922,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 174.472005955412,
+ -1.7402432100288934
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 479,
+ "versionNonce": 998423357,
+ "index": "b1yo",
+ "isDeleted": false,
+ "id": "i9Mz6DQh6ztmSH01qUZ0E",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 853.9808185159025,
+ "y": 5676.271021615562,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 353.98333740234375,
+ "height": 100,
+ "seed": 8192610,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [
+ {
+ "id": "mGMTzes2F3Dpy73P0aXca",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "3. Any native ETH in pod is\nawarded shares and is made\n\"withdrawable\" via DelegationManger\nwithdrawal queue",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "3. Any native ETH in pod is\nawarded shares and is made\n\"withdrawable\" via DelegationManger\nwithdrawal queue",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "ellipse",
+ "version": 1225,
+ "versionNonce": 577240733,
+ "index": "b1yoV",
+ "isDeleted": false,
+ "id": "xZf-MkC7-tDuT1_y0E2RJ",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2251.5302860009665,
+ "y": 622.5598244224238,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 108.75,
+ "height": 105,
+ "seed": 616463010,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "E5Mvud8IjUlm4Xgjw3ocp"
+ },
+ {
+ "id": "B_6S76kMy7S19TN-Xpgxi",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734360257984,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 980,
+ "versionNonce": 2106073853,
+ "index": "b1yp",
+ "isDeleted": false,
+ "id": "E5Mvud8IjUlm4Xgjw3ocp",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2277.3230215677713,
+ "y": 663.4367184101302,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 57.266666412353516,
+ "height": 23,
+ "seed": 505075298,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734360257984,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 2,
+ "text": "Staker",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "xZf-MkC7-tDuT1_y0E2RJ",
+ "originalText": "Staker",
+ "autoResize": true,
+ "lineHeight": 1.15
+ },
+ {
+ "type": "text",
+ "version": 559,
+ "versionNonce": 368012669,
+ "index": "b1ypG",
+ "isDeleted": false,
+ "id": "K4Gd0EEsZCk0uKQWEsgtd",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1865.175987485854,
+ "y": 336.226190476191,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 201.31666564941406,
+ "height": 64.39999999999999,
+ "seed": 1488135394,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734113298835,
+ "link": null,
+ "locked": false,
+ "fontSize": 28,
+ "fontFamily": 2,
+ "text": "Staker Flow:\nDepositing LSTs",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "Staker Flow:\nDepositing LSTs",
+ "autoResize": true,
+ "lineHeight": 1.15
+ },
+ {
+ "type": "rectangle",
+ "version": 1248,
+ "versionNonce": 880640061,
+ "index": "b1ypV",
+ "isDeleted": false,
+ "id": "wVMAbbDeEbMp5p52aabU-",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1652.7864327916523,
+ "y": 615.4846062981054,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 223.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1175012030,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "ZlMmZXV0dGL0ZOKWCdMOu"
+ },
+ {
+ "id": "B_6S76kMy7S19TN-Xpgxi",
+ "type": "arrow"
+ },
+ {
+ "id": "Bj6zp7ALVlRBocmVnGWMH",
+ "type": "arrow"
+ },
+ {
+ "id": "Who6V4OKBA7YOdSKks5WU",
+ "type": "arrow"
+ },
+ {
+ "id": "lS4fRSLZHIKN77q4fwuWo",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734360230418,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 980,
+ "versionNonce": 1622962333,
+ "index": "b1yq",
+ "isDeleted": false,
+ "id": "ZlMmZXV0dGL0ZOKWCdMOu",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1693.9114327916523,
+ "y": 663.3846062981054,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 140.75,
+ "height": 19.2,
+ "seed": 193870590,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734360230418,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "StrategyManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "wVMAbbDeEbMp5p52aabU-",
+ "originalText": "StrategyManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "rectangle",
+ "version": 1612,
+ "versionNonce": 291578333,
+ "index": "b1yqV",
+ "isDeleted": false,
+ "id": "PzimP3lWTrcDzRjSEXUDX",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1596.2627015786109,
+ "y": 1046.5568984271035,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 249.00000000000009,
+ "height": 114.99999999999997,
+ "seed": 2118789950,
+ "groupIds": [
+ "KsktPBVCh0m-8eJ1ax8wi"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734360231907,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1562,
+ "versionNonce": 1341840957,
+ "index": "b1yr",
+ "isDeleted": false,
+ "id": "VYih8IVbgosYSpf1fsC7r",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1595.2627015786109,
+ "y": 1012.5568984271036,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 249.00000000000009,
+ "height": 114.99999999999997,
+ "seed": 1285428094,
+ "groupIds": [
+ "KsktPBVCh0m-8eJ1ax8wi"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734360231907,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1558,
+ "versionNonce": 551423645,
+ "index": "b1yrV",
+ "isDeleted": false,
+ "id": "66oUWESs2szy5Tu2IR57k",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1593.7627015786109,
+ "y": 979.5568984271036,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 249.00000000000009,
+ "height": 114.99999999999997,
+ "seed": 818607038,
+ "groupIds": [
+ "KsktPBVCh0m-8eJ1ax8wi"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734360231907,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1508,
+ "versionNonce": 1656500989,
+ "index": "b1ys",
+ "isDeleted": false,
+ "id": "0stGgUmnEj0FJWSOQa2_X",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1592.7627015786109,
+ "y": 945.5568984271036,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 249.00000000000009,
+ "height": 114.99999999999997,
+ "seed": 1962003454,
+ "groupIds": [
+ "KsktPBVCh0m-8eJ1ax8wi"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734360231907,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1351,
+ "versionNonce": 571919197,
+ "index": "b1ysV",
+ "isDeleted": false,
+ "id": "oUz79H06A1yzhMam5WMvD",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1592.7627015786109,
+ "y": 910.5568984271036,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 249.00000000000009,
+ "height": 114.99999999999997,
+ "seed": 1997773886,
+ "groupIds": [
+ "KsktPBVCh0m-8eJ1ax8wi"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "gDqcJw586XS90Eux8eqy7"
+ },
+ {
+ "id": "Bj6zp7ALVlRBocmVnGWMH",
+ "type": "arrow"
+ },
+ {
+ "id": "Who6V4OKBA7YOdSKks5WU",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734360231907,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1175,
+ "versionNonce": 1597986749,
+ "index": "b1yt",
+ "isDeleted": false,
+ "id": "gDqcJw586XS90Eux8eqy7",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1599.9710374550757,
+ "y": 948.8568984271036,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 234.5833282470703,
+ "height": 38.4,
+ "seed": 756114558,
+ "groupIds": [
+ "KsktPBVCh0m-8eJ1ax8wi"
+ ],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734360231907,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "StrategyBaseWithTVLLimits\n(1 per LST)",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "oUz79H06A1yzhMam5WMvD",
+ "originalText": "StrategyBaseWithTVLLimits\n(1 per LST)",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "text",
+ "version": 454,
+ "versionNonce": 1654092627,
+ "index": "b1ytG",
+ "isDeleted": false,
+ "id": "c1SY7VGafpSUMHtyH25Xr",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1817.580154661147,
+ "y": 426.1428571428572,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 313.4666748046875,
+ "height": 50,
+ "seed": 1218017826,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734113298835,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "0. Approve StrategyManager to\ntransfer deposit amounts",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "0. Approve StrategyManager to\ntransfer deposit amounts",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "arrow",
+ "version": 1191,
+ "versionNonce": 1575271261,
+ "index": "b1ytV",
+ "isDeleted": false,
+ "id": "B_6S76kMy7S19TN-Xpgxi",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2244.2656001597725,
+ "y": 671.1629088833433,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 360.5783737173265,
+ "height": 3.2202684628167617,
+ "seed": 1077347490,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [],
+ "updated": 1734360257984,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "xZf-MkC7-tDuT1_y0E2RJ",
+ "focus": 0.08470894448090276,
+ "gap": 7.39556321554889
+ },
+ "endBinding": {
+ "elementId": "wVMAbbDeEbMp5p52aabU-",
+ "focus": 0.16494087647740363,
+ "gap": 7.90079365079373
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ -360.5783737173265,
+ 3.2202684628167617
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 240,
+ "versionNonce": 1219520061,
+ "index": "b1yu",
+ "isDeleted": false,
+ "id": "OR7_5x1L3ZEbhEVKLMUwR",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1961.8665323648602,
+ "y": 694.4699893236942,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 222.61666870117188,
+ "height": 24,
+ "seed": 953797474,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734360260040,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 3,
+ "text": "depositIntoStrategy",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "depositIntoStrategy",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "text",
+ "version": 265,
+ "versionNonce": 272327741,
+ "index": "b1yuV",
+ "isDeleted": false,
+ "id": "dPD4J6PBBhuD02bxds9p7",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1989.9982692537926,
+ "y": 635.0022298479423,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 156.03334045410156,
+ "height": 25,
+ "seed": 1544827362,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734360262644,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "1. Deposit LSTs",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "1. Deposit LSTs",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "arrow",
+ "version": 1334,
+ "versionNonce": 341268509,
+ "index": "b1yv",
+ "isDeleted": false,
+ "id": "Bj6zp7ALVlRBocmVnGWMH",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1731.593808711268,
+ "y": 737.9171459806447,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 117.08400107865964,
+ "height": 163.37387943058638,
+ "seed": 801795390,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "eP99TQkpI2x9f7BJ2cKb-"
+ }
+ ],
+ "updated": 1734360231907,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "wVMAbbDeEbMp5p52aabU-",
+ "focus": -0.16112741540408798,
+ "gap": 7.4325396825393
+ },
+ "endBinding": {
+ "elementId": "oUz79H06A1yzhMam5WMvD",
+ "focus": -0.908836098861225,
+ "gap": 9.265873015872558
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ -117.08400107865964,
+ 163.37387943058638
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 51,
+ "versionNonce": 1519847901,
+ "index": "b1yvG",
+ "isDeleted": false,
+ "id": "eP99TQkpI2x9f7BJ2cKb-",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1746.2220671702282,
+ "y": 743.9464285714288,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 191.61984622478485,
+ "height": 50,
+ "seed": 72803874,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734360226997,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "2. Transfer tokens\nto strategy",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "Bj6zp7ALVlRBocmVnGWMH",
+ "originalText": "2. Transfer tokens to strategy",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "arrow",
+ "version": 671,
+ "versionNonce": 1692118035,
+ "index": "b1yvV",
+ "isDeleted": false,
+ "id": "Who6V4OKBA7YOdSKks5WU",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1850.9902149301315,
+ "y": 921.4976590025567,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 116.88516834619963,
+ "height": 200.6323634923193,
+ "seed": 1310791522,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "TSrje3lowDMZwQ1PERCdD"
+ }
+ ],
+ "updated": 1734360323660,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "oUz79H06A1yzhMam5WMvD",
+ "focus": 0.34684392252796814,
+ "gap": 9.227513351520656,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "wVMAbbDeEbMp5p52aabU-",
+ "focus": -0.39267292129709724,
+ "gap": 1,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 116.88516834619963,
+ -85.84845852014746
+ ],
+ [
+ 17.863239999640427,
+ -200.6323634923193
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 152,
+ "versionNonce": 1615275485,
+ "index": "b1yw",
+ "isDeleted": false,
+ "id": "TSrje3lowDMZwQ1PERCdD",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1874.705446142542,
+ "y": 810.6492004824092,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 186.33987426757812,
+ "height": 50,
+ "seed": 559498850,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734360322544,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "3. Staker awarded\ndeposit shares",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "Who6V4OKBA7YOdSKks5WU",
+ "originalText": "3. Staker awarded deposit shares",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "arrow",
+ "version": 317,
+ "versionNonce": 1888925363,
+ "index": "b1ywV",
+ "isDeleted": false,
+ "id": "lS4fRSLZHIKN77q4fwuWo",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1703.2798349482075,
+ "y": 606.7107967742961,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 244.89245252218734,
+ "height": 258.48460629810546,
+ "seed": 1253663550,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "6PJ_9NCrM6WpCh8MNp_fj"
+ }
+ ],
+ "updated": 1734361144598,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "wVMAbbDeEbMp5p52aabU-",
+ "focus": 0.010738090831398414,
+ "gap": 8.773809523809291,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "d7pRFde2mvhA75ZinOGRD",
+ "focus": -0.5765561345526261,
+ "gap": 6.011904761905015,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ -244.89245252218734,
+ -258.48460629810546
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 139,
+ "versionNonce": 215084349,
+ "index": "b1yx",
+ "isDeleted": false,
+ "id": "6PJ_9NCrM6WpCh8MNp_fj",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1475.87370878477,
+ "y": 402.46849362524335,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 209.9197998046875,
+ "height": 150,
+ "seed": 1985941538,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361142777,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "4. If Staker is\ndelegated, update\nOperator's delegated\nshares based on\nstaker's increased\ndeposit shares",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "lS4fRSLZHIKN77q4fwuWo",
+ "originalText": "4. If Staker is delegated, update Operator's delegated shares based on staker's increased deposit shares",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "rectangle",
+ "version": 2191,
+ "versionNonce": 450935581,
+ "index": "b1yxG",
+ "isDeleted": false,
+ "id": "Njo4VT6aJS-BOBxW_rIMR",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2502.4901691502105,
+ "y": 2039.71548848204,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffec99",
+ "width": 455.8571428571431,
+ "height": 114.99999999999997,
+ "seed": 684382434,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "S7nHBIf33C-pylj1fs2dG"
+ },
+ {
+ "id": "hNnYwYsWakliX5fkmwJVb",
+ "type": "arrow"
+ },
+ {
+ "id": "b0llJrpSAPPddIptJHKYn",
+ "type": "arrow"
+ },
+ {
+ "id": "cGXQvdtzHLMM12Ot3tcts",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734361197598,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1922,
+ "versionNonce": 1354059645,
+ "index": "b1yxV",
+ "isDeleted": false,
+ "id": "S7nHBIf33C-pylj1fs2dG",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2650.660409279954,
+ "y": 2087.61548848204,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 159.51666259765625,
+ "height": 19.2,
+ "seed": 360803490,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361197598,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "DelegationManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "Njo4VT6aJS-BOBxW_rIMR",
+ "originalText": "DelegationManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "rectangle",
+ "version": 1721,
+ "versionNonce": 1335306493,
+ "index": "b1yy",
+ "isDeleted": false,
+ "id": "fMrtOCuZyykx1UE2GS84u",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2414.998105658148,
+ "y": 2353.6123138788653,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 223.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 498042978,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "LNX2NfmyO99AzTqRwXqZk"
+ },
+ {
+ "id": "b0llJrpSAPPddIptJHKYn",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734361197598,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1420,
+ "versionNonce": 1680015709,
+ "index": "b1yyV",
+ "isDeleted": false,
+ "id": "LNX2NfmyO99AzTqRwXqZk",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2456.123105658148,
+ "y": 2401.512313878865,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 140.75,
+ "height": 19.2,
+ "seed": 2032413730,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361197598,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "EigenPodManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "fMrtOCuZyykx1UE2GS84u",
+ "originalText": "EigenPodManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "ellipse",
+ "version": 1334,
+ "versionNonce": 491654685,
+ "index": "b1yz",
+ "isDeleted": false,
+ "id": "pYX7-scbCCY5JSKmZ1I-q",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1994.5715183565608,
+ "y": 2081.2571551487063,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 108.75,
+ "height": 105,
+ "seed": 231626722,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "7ExJPMtL5cEUiKWn321Sh"
+ },
+ {
+ "id": "hNnYwYsWakliX5fkmwJVb",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734361197598,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1088,
+ "versionNonce": 1610629757,
+ "index": "b1yzG",
+ "isDeleted": false,
+ "id": "7ExJPMtL5cEUiKWn321Sh",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2020.3642539233656,
+ "y": 2122.1340491364126,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 57.266666412353516,
+ "height": 23,
+ "seed": 733809570,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361197598,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 2,
+ "text": "Staker",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "pYX7-scbCCY5JSKmZ1I-q",
+ "originalText": "Staker",
+ "autoResize": true,
+ "lineHeight": 1.15
+ },
+ {
+ "type": "text",
+ "version": 1068,
+ "versionNonce": 258311997,
+ "index": "b1yzV",
+ "isDeleted": false,
+ "id": "ctarScP_mj0QeE5OZNAlr",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2021.2500897851316,
+ "y": 2268.608345624897,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 320.1666564941406,
+ "height": 64.39999999999999,
+ "seed": 1226786658,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361197598,
+ "link": null,
+ "locked": false,
+ "fontSize": 28,
+ "fontFamily": 2,
+ "text": "Staker Flow:\nDelegating to an Operator",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "Staker Flow:\nDelegating to an Operator",
+ "autoResize": true,
+ "lineHeight": 1.15
+ },
+ {
+ "type": "arrow",
+ "version": 763,
+ "versionNonce": 1016613107,
+ "index": "b1yzl",
+ "isDeleted": false,
+ "id": "hNnYwYsWakliX5fkmwJVb",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2114.9106506143335,
+ "y": 2145.5654144347063,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 379.0686058374654,
+ "height": 2.7707857282800887,
+ "seed": 1044646690,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [],
+ "updated": 1734361197728,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "pYX7-scbCCY5JSKmZ1I-q",
+ "focus": 0.23409655429971704,
+ "gap": 12.698164422728148,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "Njo4VT6aJS-BOBxW_rIMR",
+ "focus": -0.7411498268808536,
+ "gap": 8.51091269841163,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 379.0686058374654,
+ -2.7707857282800887
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 253,
+ "versionNonce": 1683004413,
+ "index": "b1z",
+ "isDeleted": false,
+ "id": "pjE8l-z9Co8dDH2mNSC-0",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2218.7292577233648,
+ "y": 2159.775012291564,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 117.16666412353516,
+ "height": 24,
+ "seed": 26892002,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361197598,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 3,
+ "text": "delegateTo",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "delegateTo",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "text",
+ "version": 319,
+ "versionNonce": 657855581,
+ "index": "b20",
+ "isDeleted": false,
+ "id": "3yhssR2VfkcGJ9mtnM6dJ",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2129.2042574690518,
+ "y": 2076.441678958231,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 272.8833312988281,
+ "height": 50,
+ "seed": 1672555170,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361197598,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "1. Delegate to a registered\nOperator",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "1. Delegate to a registered\nOperator",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "arrow",
+ "version": 522,
+ "versionNonce": 1664804915,
+ "index": "b21",
+ "isDeleted": false,
+ "id": "b0llJrpSAPPddIptJHKYn",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2594.0753392814922,
+ "y": 2163.108345624897,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 110.84284788508944,
+ "height": 183.33333333333303,
+ "seed": 1261930082,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "dIrPhtpgOibEaRGdpQA3n"
+ }
+ ],
+ "updated": 1734361197728,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "Njo4VT6aJS-BOBxW_rIMR",
+ "focus": 0.36736717019133747,
+ "gap": 8.392857142857451,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "fMrtOCuZyykx1UE2GS84u",
+ "focus": -0.5631263541856226,
+ "gap": 7.170634920635166,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ -110.84284788508944,
+ 183.33333333333303
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 161,
+ "versionNonce": 1197778419,
+ "index": "b22",
+ "isDeleted": false,
+ "id": "dIrPhtpgOibEaRGdpQA3n",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1947.605846592538,
+ "y": 1558.0357142857135,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 191.73980712890625,
+ "height": 75,
+ "seed": 1895590434,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734360637084,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "2. Query number of\ndeposit shares held\nby Staker",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "b0llJrpSAPPddIptJHKYn",
+ "originalText": "2. Query number of deposit shares held by Staker",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "rectangle",
+ "version": 830,
+ "versionNonce": 788029725,
+ "index": "b23",
+ "isDeleted": false,
+ "id": "iF4Go9CXS_-O1rd3mGeIe",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2828.078462801005,
+ "y": 2356.882155148707,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 223.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 468637154,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "dOm_3_POehmCJNweKFBRR"
+ },
+ {
+ "id": "cGXQvdtzHLMM12Ot3tcts",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734361197598,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 567,
+ "versionNonce": 250099069,
+ "index": "b24",
+ "isDeleted": false,
+ "id": "dOm_3_POehmCJNweKFBRR",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2869.203462801005,
+ "y": 2404.782155148707,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 140.75,
+ "height": 19.2,
+ "seed": 1562233250,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361197598,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "StrategyManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "iF4Go9CXS_-O1rd3mGeIe",
+ "originalText": "StrategyManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "arrow",
+ "version": 590,
+ "versionNonce": 1722726259,
+ "index": "b25",
+ "isDeleted": false,
+ "id": "cGXQvdtzHLMM12Ot3tcts",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2844.0631322883887,
+ "y": 2161.7410867736708,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 152.49048544824382,
+ "height": 186.66666666666606,
+ "seed": 1270367586,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "FnnLkQFKdQqwVYvgZ3Chu"
+ }
+ ],
+ "updated": 1734361197728,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "Njo4VT6aJS-BOBxW_rIMR",
+ "focus": -0.22165271141817774,
+ "gap": 7.025598291631127,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "iF4Go9CXS_-O1rd3mGeIe",
+ "focus": 0.6996198786224589,
+ "gap": 8.474401708370351,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 152.49048544824382,
+ 186.66666666666606
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 157,
+ "versionNonce": 1058245821,
+ "index": "b26",
+ "isDeleted": false,
+ "id": "FnnLkQFKdQqwVYvgZ3Chu",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2329.260306266101,
+ "y": 1558.3351221011537,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 191.73980712890625,
+ "height": 75,
+ "seed": 1091389730,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734360640718,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "2. Query number of\ndeposit shares held\nby Staker",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "cGXQvdtzHLMM12Ot3tcts",
+ "originalText": "2. Query number of deposit shares held by Staker",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "text",
+ "version": 612,
+ "versionNonce": 1407208029,
+ "index": "b27",
+ "isDeleted": false,
+ "id": "VT_j7-YBBoCet0xKP8qhO",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2988.406633433543,
+ "y": 2059.002177039263,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 411.15966796875,
+ "height": 100,
+ "seed": 1915095486,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734364477445,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "4. If staker is delegated, add delegated\nshares to Operator\n(increased by deposit shares amount)\n",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "4. If staker is delegated, add delegated\nshares to Operator\n(increased by deposit shares amount)\n",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "ellipse",
+ "version": 1439,
+ "versionNonce": 1773195261,
+ "index": "b28",
+ "isDeleted": false,
+ "id": "ww6cJfMczV8T_u_QeDNDu",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1930.4582723589,
+ "y": 4085.798557781826,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 108.75,
+ "height": 105,
+ "seed": 793558526,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "f3pJyffpDIooPa2lvpCDJ"
+ },
+ {
+ "id": "BEr_TOZmKQdO6AcwFrKWb",
+ "type": "arrow"
+ },
+ {
+ "id": "VxgaSm93O4OlqrZMY57Iu",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1192,
+ "versionNonce": 2054146141,
+ "index": "b29",
+ "isDeleted": false,
+ "id": "f3pJyffpDIooPa2lvpCDJ",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1956.251007925705,
+ "y": 4126.675451769532,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 57.266666412353516,
+ "height": 23,
+ "seed": 1296059966,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 2,
+ "text": "Staker",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "ww6cJfMczV8T_u_QeDNDu",
+ "originalText": "Staker",
+ "autoResize": true,
+ "lineHeight": 1.15
+ },
+ {
+ "type": "text",
+ "version": 926,
+ "versionNonce": 1485728125,
+ "index": "b2A",
+ "isDeleted": false,
+ "id": "n5kMVYG-Ovvk81SmcoVgI",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1645.111834632196,
+ "y": 4283.149748258017,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 274.2166748046875,
+ "height": 96.6,
+ "seed": 1054332542,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 28,
+ "fontFamily": 2,
+ "text": "Staker Flow:\nCompleting an LST\nWithdrawal As Tokens",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "Staker Flow:\nCompleting an LST\nWithdrawal As Tokens",
+ "autoResize": true,
+ "lineHeight": 1.15
+ },
+ {
+ "type": "rectangle",
+ "version": 1439,
+ "versionNonce": 1029583325,
+ "index": "b2B",
+ "isDeleted": false,
+ "id": "YEevKYXKSnAcEpK4SoXAN",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1375.6318834700096,
+ "y": 4369.756891115159,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 223.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1557419710,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "2_63cFNXHKARWqWOScRsc"
+ },
+ {
+ "id": "1YDohtzXZZQMtHn9rNLZR",
+ "type": "arrow"
+ },
+ {
+ "id": "LKXfIwH6k9YoTbRX_b9gI",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1166,
+ "versionNonce": 433450557,
+ "index": "b2C",
+ "isDeleted": false,
+ "id": "2_63cFNXHKARWqWOScRsc",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1416.7568834700096,
+ "y": 4417.656891115159,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 140.75,
+ "height": 19.2,
+ "seed": 1071042302,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "StrategyManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "YEevKYXKSnAcEpK4SoXAN",
+ "originalText": "StrategyManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "rectangle",
+ "version": 1885,
+ "versionNonce": 520870749,
+ "index": "b2D",
+ "isDeleted": false,
+ "id": "znJmTtSHOG4nKL_lIS9OI",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1620.1001374382645,
+ "y": 4791.48308159135,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 249.00000000000009,
+ "height": 114.99999999999997,
+ "seed": 1147158334,
+ "groupIds": [
+ "TqASbmNKtAb95Cc8uANEn"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1835,
+ "versionNonce": 454191037,
+ "index": "b2E",
+ "isDeleted": false,
+ "id": "TnoxboQXJOxVczGEBb3hq",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1619.1001374382645,
+ "y": 4757.48308159135,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 249.00000000000009,
+ "height": 114.99999999999997,
+ "seed": 248620926,
+ "groupIds": [
+ "TqASbmNKtAb95Cc8uANEn"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1831,
+ "versionNonce": 55076893,
+ "index": "b2F",
+ "isDeleted": false,
+ "id": "rk_4mrycfQe0nkdZf3KYv",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1617.6001374382645,
+ "y": 4724.48308159135,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 249.00000000000009,
+ "height": 114.99999999999997,
+ "seed": 258738110,
+ "groupIds": [
+ "TqASbmNKtAb95Cc8uANEn"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1781,
+ "versionNonce": 161438845,
+ "index": "b2G",
+ "isDeleted": false,
+ "id": "TAs2gzucG2h_8VB50-1i1",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1616.6001374382645,
+ "y": 4690.48308159135,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 249.00000000000009,
+ "height": 114.99999999999997,
+ "seed": 105930750,
+ "groupIds": [
+ "TqASbmNKtAb95Cc8uANEn"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1628,
+ "versionNonce": 634963165,
+ "index": "b2H",
+ "isDeleted": false,
+ "id": "GofJhEttiaSCMMbeZPpHJ",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1616.6001374382645,
+ "y": 4655.48308159135,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#a5d8ff",
+ "width": 249.00000000000009,
+ "height": 114.99999999999997,
+ "seed": 125808702,
+ "groupIds": [
+ "TqASbmNKtAb95Cc8uANEn"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "yWGNhTGz9Jvd0dUba1m5W"
+ },
+ {
+ "id": "LKXfIwH6k9YoTbRX_b9gI",
+ "type": "arrow"
+ },
+ {
+ "id": "VxgaSm93O4OlqrZMY57Iu",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1448,
+ "versionNonce": 1535516989,
+ "index": "b2I",
+ "isDeleted": false,
+ "id": "yWGNhTGz9Jvd0dUba1m5W",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1623.8084733147293,
+ "y": 4693.78308159135,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 234.5833282470703,
+ "height": 38.4,
+ "seed": 2128279678,
+ "groupIds": [
+ "TqASbmNKtAb95Cc8uANEn"
+ ],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "StrategyBaseWithTVLLimits\n(1 per LST)",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "GofJhEttiaSCMMbeZPpHJ",
+ "originalText": "StrategyBaseWithTVLLimits\n(1 per LST)",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "arrow",
+ "version": 810,
+ "versionNonce": 192462067,
+ "index": "b2J",
+ "isDeleted": false,
+ "id": "BEr_TOZmKQdO6AcwFrKWb",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1921.2082144161936,
+ "y": 4154.944773749827,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 483.5690605324512,
+ "height": 0.030639649032764282,
+ "seed": 1794559294,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [],
+ "updated": 1734363560522,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "ww6cJfMczV8T_u_QeDNDu",
+ "focus": -0.31714756780341136,
+ "gap": 11.516308661733518,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "PQ83u0WAkad1B1o1C1iNi",
+ "focus": 0.7918889943459513,
+ "gap": 4.477678571430715,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ -483.5690605324512,
+ -0.030639649032764282
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 250,
+ "versionNonce": 1704008381,
+ "index": "b2K",
+ "isDeleted": false,
+ "id": "kJlCKO6JhXQwzcWVF_58Z",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1530.672494337844,
+ "y": 4091.2710216155624,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 343.9333190917969,
+ "height": 50,
+ "seed": 1863111650,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "1. After withdrawal delay, complete\nwithdrawal \"as tokens\"",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "1. After withdrawal delay, complete\nwithdrawal \"as tokens\"",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "text",
+ "version": 234,
+ "versionNonce": 293124893,
+ "index": "b2L",
+ "isDeleted": false,
+ "id": "ElfgCTQ44t8xdLsJ7WzOF",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1551.1808256366717,
+ "y": 4172.937688282229,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 292.9166564941406,
+ "height": 24,
+ "seed": 412788578,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 3,
+ "text": "completeQueuedWithdrawals",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "completeQueuedWithdrawals",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "arrow",
+ "version": 707,
+ "versionNonce": 724323485,
+ "index": "b2M",
+ "isDeleted": false,
+ "id": "1YDohtzXZZQMtHn9rNLZR",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1376.7635585898329,
+ "y": 4174.604354948896,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 99.6956610325094,
+ "height": 188.33333333333303,
+ "seed": 1957123774,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "BBzLnTxvEeFogjjEpl2V8"
+ }
+ ],
+ "updated": 1734363737996,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "PQ83u0WAkad1B1o1C1iNi",
+ "focus": -0.5302158402110009,
+ "gap": 7.7500000000009095,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "YEevKYXKSnAcEpK4SoXAN",
+ "focus": 0.16468584082485693,
+ "gap": 6.819202832930387,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 99.6956610325094,
+ 188.33333333333303
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 41,
+ "versionNonce": 1354586227,
+ "index": "b2N",
+ "isDeleted": false,
+ "id": "BBzLnTxvEeFogjjEpl2V8",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1331.8314589913416,
+ "y": 4243.771021615563,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 189.5598602294922,
+ "height": 50,
+ "seed": 1202388322,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363737061,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "3. Withdraw shares\nas LST tokens",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "1YDohtzXZZQMtHn9rNLZR",
+ "originalText": "3. Withdraw shares as LST tokens",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "arrow",
+ "version": 701,
+ "versionNonce": 712547421,
+ "index": "b2O",
+ "isDeleted": false,
+ "id": "LKXfIwH6k9YoTbRX_b9gI",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1489.0907593444526,
+ "y": 4492.937688282229,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 119.11315367029124,
+ "height": 159.7789287411406,
+ "seed": 1486747326,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "N0XoOQw-ax-DpKJhTrhTS"
+ }
+ ],
+ "updated": 1734363743439,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "YEevKYXKSnAcEpK4SoXAN",
+ "focus": 0.3045066137617944,
+ "gap": 8.180797167069613,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "GofJhEttiaSCMMbeZPpHJ",
+ "focus": -0.5256061429217742,
+ "gap": 8.396224423520607,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 119.11315367029124,
+ 159.7789287411406
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 103,
+ "versionNonce": 410580147,
+ "index": "b2P",
+ "isDeleted": false,
+ "id": "N0XoOQw-ax-DpKJhTrhTS",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1439.2874048447452,
+ "y": 4535.327152652799,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 218.71986266970634,
+ "height": 75,
+ "seed": 1358753598,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363742254,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "4. For each LST being\nwithdrawn, withdraw\nLST tokens",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "LKXfIwH6k9YoTbRX_b9gI",
+ "originalText": "4. For each LST being withdrawn, withdraw LST tokens",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "arrow",
+ "version": 536,
+ "versionNonce": 1018931859,
+ "index": "b2Q",
+ "isDeleted": false,
+ "id": "VxgaSm93O4OlqrZMY57Iu",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1839.7029559670757,
+ "y": 4642.937688282229,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 143.33333333333348,
+ "height": 435,
+ "seed": 2030782014,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "9xUkxgnYx5-Dk5fyPHOh8"
+ }
+ ],
+ "updated": 1734363747910,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "GofJhEttiaSCMMbeZPpHJ",
+ "focus": 0.2691884539496283,
+ "gap": 12.54539330912121,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "ww6cJfMczV8T_u_QeDNDu",
+ "focus": 0.03304796429408594,
+ "gap": 17.16110751978089,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 143.33333333333348,
+ -188.33333333333348
+ ],
+ [
+ 143.33333333333348,
+ -435
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 51,
+ "versionNonce": 1509994333,
+ "index": "b2R",
+ "isDeleted": false,
+ "id": "9xUkxgnYx5-Dk5fyPHOh8",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1892.8263631515326,
+ "y": 4429.604354948895,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 180.4198522977531,
+ "height": 50,
+ "seed": 83823010,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363747174,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "5. Transfer LSTs\ndirectly to Staker",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "VxgaSm93O4OlqrZMY57Iu",
+ "originalText": "5. Transfer LSTs directly to Staker",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "text",
+ "version": 518,
+ "versionNonce": 715656371,
+ "index": "b2S",
+ "isDeleted": false,
+ "id": "YHs0Gqhmn3yfxnBDiszoT",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1062.3339933390657,
+ "y": 2644.963326508974,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 466.41960448026657,
+ "height": 75,
+ "seed": 608723646,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363349119,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "3. If Staker is delegated, add\ndelegated shares to Operator\n(increased by calculated withdrwawable shares)",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "3. If Staker is delegated, add\ndelegated shares to Operator\n(increased by calculated withdrwawable shares)",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "text",
+ "version": 392,
+ "versionNonce": 571875891,
+ "index": "b2T",
+ "isDeleted": false,
+ "id": "TGtwXKQ5hDALWDo7cShaP",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1117.9934149732499,
+ "y": 1742.4736186430125,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 429.6596252322197,
+ "height": 75,
+ "seed": 640231614,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734362188035,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "3. If Staker is delegated, remove\ndelegated Shares from Operator\n(decreased by withdrawable shares amount)",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "3. If Staker is delegated, remove\ndelegated Shares from Operator\n(decreased by withdrawable shares amount)",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "text",
+ "version": 659,
+ "versionNonce": 100123805,
+ "index": "b2U",
+ "isDeleted": false,
+ "id": "0zAO6U6LbidesdIKI4H-Q",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 176.06574627159222,
+ "y": 5424.65197399651,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 265.4166564941406,
+ "height": 50,
+ "seed": 480087746,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "1. Once validator is exited,\nstart a checkpoint",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "1. Once validator is exited,\nstart a checkpoint",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "arrow",
+ "version": 660,
+ "versionNonce": 657402109,
+ "index": "b2W",
+ "isDeleted": false,
+ "id": "wndJ7JHlbbZx0Z_hDBLF-",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 140.08458328748145,
+ "y": 5660.5854539636575,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 356.67490285130594,
+ "height": 2.266134773139129,
+ "seed": 1708621442,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "startBinding": null,
+ "endBinding": null,
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 356.67490285130594,
+ 2.266134773139129
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 854,
+ "versionNonce": 146473309,
+ "index": "b2X",
+ "isDeleted": false,
+ "id": "9sXM5xj6xYZRin-ElRo03",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 151.87408062217824,
+ "y": 5555.4853073298445,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 323.79998779296875,
+ "height": 100,
+ "seed": 2147457822,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "2. Submit one balance proof\nper validator pointed at pod.\nProofs validated against beacon\nblock root.",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "2. Submit one balance proof\nper validator pointed at pod.\nProofs validated against beacon\nblock root.",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "text",
+ "version": 430,
+ "versionNonce": 267177405,
+ "index": "b2Y",
+ "isDeleted": false,
+ "id": "wp_KB7xRBNL1sK5m_Ddox",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 184.89074321983446,
+ "y": 5678.485307329843,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 257.76666259765625,
+ "height": 24,
+ "seed": 346173890,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 3,
+ "text": "verifyCheckpointProofs",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "verifyCheckpointProofs",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "rectangle",
+ "version": 2349,
+ "versionNonce": 2078674461,
+ "index": "b2Z",
+ "isDeleted": false,
+ "id": "cQmwh38jtJYD4EgAa2dzN",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1832.8321102329483,
+ "y": 5676.463779552066,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 128488834,
+ "groupIds": [
+ "beGEQyYEtc22TsXoZTryG"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 2280,
+ "versionNonce": 731398781,
+ "index": "b2a",
+ "isDeleted": false,
+ "id": "VHQnnDAIGDndzyKOQ5TFC",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1832.8321102329483,
+ "y": 5641.463779552066,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 381588802,
+ "groupIds": [
+ "beGEQyYEtc22TsXoZTryG"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "id": "CzL7G-cd1IeUb87tAORbe",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 2231,
+ "versionNonce": 600107741,
+ "index": "b2b",
+ "isDeleted": false,
+ "id": "0kiRb8vKovbzXx8BfMr3w",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1832.8321102329483,
+ "y": 5605.963779552066,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 444505346,
+ "groupIds": [
+ "beGEQyYEtc22TsXoZTryG"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "id": "CzL7G-cd1IeUb87tAORbe",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 2157,
+ "versionNonce": 564369309,
+ "index": "b2c",
+ "isDeleted": false,
+ "id": "8Wai9QCuDoTCvrcKRXP0_",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1832.8321102329483,
+ "y": 5570.963779552066,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 6794434,
+ "groupIds": [
+ "beGEQyYEtc22TsXoZTryG"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "id": "SpltLNf3GnK7lnsNrn-k3",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 2220,
+ "versionNonce": 602446845,
+ "index": "b2d",
+ "isDeleted": false,
+ "id": "JEw4y43UVJO53IimI8gMq",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1832.8321102329483,
+ "y": 5540.213779552066,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 773375106,
+ "groupIds": [
+ "beGEQyYEtc22TsXoZTryG"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 2155,
+ "versionNonce": 869143645,
+ "index": "b2e",
+ "isDeleted": false,
+ "id": "oOSfSCvtN3AqNQyEKTVGL",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1832.8321102329483,
+ "y": 5505.213779552066,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 2102453314,
+ "groupIds": [
+ "beGEQyYEtc22TsXoZTryG"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 2094,
+ "versionNonce": 757432509,
+ "index": "b2f",
+ "isDeleted": false,
+ "id": "tLaVL1NOFzKG4pX5tsQyx",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1832.8321102329483,
+ "y": 5469.713779552066,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 938413058,
+ "groupIds": [
+ "beGEQyYEtc22TsXoZTryG"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "id": "7JkoDbLx2twPP37CoCYe2",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 2027,
+ "versionNonce": 1972396317,
+ "index": "b2g",
+ "isDeleted": false,
+ "id": "UEC4OLrCnh8Ml32lVj6Mo",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1832.8321102329483,
+ "y": 5434.713779552066,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 334642114,
+ "groupIds": [
+ "beGEQyYEtc22TsXoZTryG"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "id": "7JkoDbLx2twPP37CoCYe2",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "rectangle",
+ "version": 1949,
+ "versionNonce": 1115698557,
+ "index": "b2h",
+ "isDeleted": false,
+ "id": "nqbSVKCt0DHaSFjh5axoc",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1833.2071102329483,
+ "y": 5395.283223996511,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 135.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 796488578,
+ "groupIds": [
+ "beGEQyYEtc22TsXoZTryG"
+ ],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "c8vLK_s-l9sT6HdL0kOUm"
+ },
+ {
+ "id": "7JkoDbLx2twPP37CoCYe2",
+ "type": "arrow"
+ },
+ {
+ "id": "SpltLNf3GnK7lnsNrn-k3",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1685,
+ "versionNonce": 523664861,
+ "index": "b2i",
+ "isDeleted": false,
+ "id": "c8vLK_s-l9sT6HdL0kOUm",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1844.4071109958877,
+ "y": 5433.58322399651,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 112.5999984741211,
+ "height": 38.4,
+ "seed": 214152002,
+ "groupIds": [
+ "beGEQyYEtc22TsXoZTryG"
+ ],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "EigenPods\n(1 per user)",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "nqbSVKCt0DHaSFjh5axoc",
+ "originalText": "EigenPods\n(1 per user)",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "rectangle",
+ "version": 1926,
+ "versionNonce": 163516157,
+ "index": "b2j",
+ "isDeleted": false,
+ "id": "3fXcLTF50p0EN1JpZNp4z",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2241.332110232948,
+ "y": 5441.2971128854,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 266.00000000000017,
+ "height": 114.99999999999997,
+ "seed": 238025474,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "oqCfZlQ2XDeWsc466d8Q_"
+ },
+ {
+ "id": "7JkoDbLx2twPP37CoCYe2",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1826,
+ "versionNonce": 475932509,
+ "index": "b2k",
+ "isDeleted": false,
+ "id": "oqCfZlQ2XDeWsc466d8Q_",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2303.957110232948,
+ "y": 5489.197112885399,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 140.75,
+ "height": 19.2,
+ "seed": 1916619458,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560512,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "EIP-4788 Oracle",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "3fXcLTF50p0EN1JpZNp4z",
+ "originalText": "EIP-4788 Oracle",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "arrow",
+ "version": 2321,
+ "versionNonce": 218520051,
+ "index": "b2l",
+ "isDeleted": false,
+ "id": "7JkoDbLx2twPP37CoCYe2",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1975.7511647921374,
+ "y": 5510.0379193250365,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffec99",
+ "width": 258.0630882979535,
+ "height": 0.06671593127975939,
+ "seed": 1334485634,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [],
+ "updated": 1734363560522,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "nqbSVKCt0DHaSFjh5axoc",
+ "focus": 0.995769034654371,
+ "gap": 7.544054559189135,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "3fXcLTF50p0EN1JpZNp4z",
+ "focus": -0.19358446686074796,
+ "gap": 7.517857142856883,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 258.0630882979535,
+ -0.06671593127975939
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 827,
+ "versionNonce": 1275406461,
+ "index": "b2m",
+ "isDeleted": false,
+ "id": "3Ef8Ob6E-5IDU6m-8ALi8",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1984.0523483281863,
+ "y": 5442.826874790161,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffec99",
+ "width": 241.89999389648438,
+ "height": 50,
+ "seed": 282526274,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [
+ {
+ "id": "7JkoDbLx2twPP37CoCYe2",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560513,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "1.5 Parent beacon block\nroot queried from oracle",
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "1.5 Parent beacon block\nroot queried from oracle",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "ellipse",
+ "version": 1648,
+ "versionNonce": 832901341,
+ "index": "b2n",
+ "isDeleted": false,
+ "id": "3xnU6mBXla8WhiFUdP3Jk",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1363.54937213771,
+ "y": 5473.849062331638,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 108.75,
+ "height": 105,
+ "seed": 1895918082,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "H1IqgL54dRz4weNzer4uF"
+ },
+ {
+ "id": "SpltLNf3GnK7lnsNrn-k3",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560513,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1396,
+ "versionNonce": 1072229693,
+ "index": "b2o",
+ "isDeleted": false,
+ "id": "H1IqgL54dRz4weNzer4uF",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1389.3421077045145,
+ "y": 5514.725956319345,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 57.266666412353516,
+ "height": 23,
+ "seed": 1997068738,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560513,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 2,
+ "text": "Staker",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "3xnU6mBXla8WhiFUdP3Jk",
+ "originalText": "Staker",
+ "autoResize": true,
+ "lineHeight": 1.15
+ },
+ {
+ "type": "arrow",
+ "version": 1111,
+ "versionNonce": 1243134259,
+ "index": "b2p",
+ "isDeleted": false,
+ "id": "SpltLNf3GnK7lnsNrn-k3",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1474.0981463283924,
+ "y": 5494.137838831703,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 356.87086884871655,
+ "height": 1.793314280863342,
+ "seed": 1913409922,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [],
+ "updated": 1734363560522,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "3xnU6mBXla8WhiFUdP3Jk",
+ "focus": -0.6081621304143341,
+ "gap": 10.8571572156769,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "nqbSVKCt0DHaSFjh5axoc",
+ "focus": -0.6779288570559726,
+ "gap": 2.238095055839267,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 356.87086884871655,
+ -1.793314280863342
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 426,
+ "versionNonce": 896219741,
+ "index": "b2q",
+ "isDeleted": false,
+ "id": "uqfWBDwr7iAProLhv7jCi",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1551.7160388043765,
+ "y": 5498.015728998306,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 175.75,
+ "height": 24,
+ "seed": 1967837506,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [
+ {
+ "id": "SpltLNf3GnK7lnsNrn-k3",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560513,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 3,
+ "text": "startCheckpoint",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "startCheckpoint",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "text",
+ "version": 738,
+ "versionNonce": 204334781,
+ "index": "b2r",
+ "isDeleted": false,
+ "id": "BSMrX7GVsCBtAowF2fzk-",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1456.6243792584785,
+ "y": 5393.015728998306,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 365.9333190917969,
+ "height": 50,
+ "seed": 1411602690,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560513,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "0. Consensus or execution layer yield\nenters pod",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "0. Consensus or execution layer yield\nenters pod",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "text",
+ "version": 2229,
+ "versionNonce": 1654392605,
+ "index": "b2s",
+ "isDeleted": false,
+ "id": "AGPGFNNkrSQ_HtPilmtyi",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1394.9740765531678,
+ "y": 5306.173501774288,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 324.26666259765625,
+ "height": 64.39999999999999,
+ "seed": 504686786,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560513,
+ "link": null,
+ "locked": false,
+ "fontSize": 28,
+ "fontFamily": 2,
+ "text": "Staker Flow:\nProcessing Validator Yield",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "Staker Flow:\nProcessing Validator Yield",
+ "autoResize": true,
+ "lineHeight": 1.15
+ },
+ {
+ "type": "arrow",
+ "version": 1014,
+ "versionNonce": 1527531635,
+ "index": "b2t",
+ "isDeleted": false,
+ "id": "CzL7G-cd1IeUb87tAORbe",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1975.2604069828478,
+ "y": 5739.822452092104,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 191.13867262207737,
+ "height": 0.07357654336101405,
+ "seed": 448692354,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [],
+ "updated": 1734363560522,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "0kiRb8vKovbzXx8BfMr3w",
+ "focus": 1.3278784800611976,
+ "gap": 18.858672540038242,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "cXR7t0HmweM2M4wSaVIkI",
+ "focus": -0.192456511262002,
+ "gap": 12.049992879231922,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 191.13867262207737,
+ -0.07357654336101405
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 426,
+ "versionNonce": 1309713373,
+ "index": "b2u",
+ "isDeleted": false,
+ "id": "cXR7t0HmweM2M4wSaVIkI",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2178.449072484157,
+ "y": 5680.040168440954,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 353.98333740234375,
+ "height": 100,
+ "seed": 1172250690,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [
+ {
+ "id": "CzL7G-cd1IeUb87tAORbe",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363560513,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "3. Any native ETH in pod is\nawarded shares and is made\n\"withdrawable\" via DelegationManger\nwithdrawal queue",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "3. Any native ETH in pod is\nawarded shares and is made\n\"withdrawable\" via DelegationManger\nwithdrawal queue",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "text",
+ "version": 784,
+ "versionNonce": 1964314781,
+ "index": "b2v",
+ "isDeleted": false,
+ "id": "_jv2opmrvR8FQED8d_KRL",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1541.1506638547555,
+ "y": 5450.087787488568,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 207.51666259765625,
+ "height": 25,
+ "seed": 1263912962,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560513,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "1. Start a checkpoint",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "1. Start a checkpoint",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "arrow",
+ "version": 727,
+ "versionNonce": 1556280573,
+ "index": "b2w",
+ "isDeleted": false,
+ "id": "XBnxCUl55FOBij1xdDAGb",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1466.2195039224025,
+ "y": 5666.021267455718,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 356.67490285130594,
+ "height": 2.266134773139129,
+ "seed": 52524994,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [],
+ "updated": 1734363560513,
+ "link": null,
+ "locked": false,
+ "startBinding": null,
+ "endBinding": null,
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 356.67490285130594,
+ 2.266134773139129
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 915,
+ "versionNonce": 1911901533,
+ "index": "b2x",
+ "isDeleted": false,
+ "id": "8y_pjMDCTlROHnbxnOVTe",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1476.342334590433,
+ "y": 5559.254454155237,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 323.79998779296875,
+ "height": 100,
+ "seed": 1835085698,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560513,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "2. Submit one balance proof\nper validator pointed at pod.\nProofs validated against beacon\nblock root.",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "2. Submit one balance proof\nper validator pointed at pod.\nProofs validated against beacon\nblock root.",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "text",
+ "version": 491,
+ "versionNonce": 1945999805,
+ "index": "b2y",
+ "isDeleted": false,
+ "id": "Z7P_tOk7DuCZFZ5E_Bl7O",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1509.3589971880892,
+ "y": 5682.254454155233,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 257.76666259765625,
+ "height": 24,
+ "seed": 777252674,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363560513,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 3,
+ "text": "verifyCheckpointProofs",
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": null,
+ "originalText": "verifyCheckpointProofs",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "rectangle",
+ "version": 1406,
+ "versionNonce": 756005725,
+ "index": "b33",
+ "isDeleted": false,
+ "id": "CX2I4G3Tx7B460R8LiO1n",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1736.9283928755115,
+ "y": -683.360616382829,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#d0bfff",
+ "width": 223.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 702426237,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "cpMdOQ5aa34VGghGaCa_o"
+ }
+ ],
+ "updated": 1734361209401,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1157,
+ "versionNonce": 2107262909,
+ "index": "b34",
+ "isDeleted": false,
+ "id": "cpMdOQ5aa34VGghGaCa_o",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1768.7408928755115,
+ "y": -635.460616382829,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 159.375,
+ "height": 19.2,
+ "seed": 1975358685,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361209401,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "AllocationManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "CX2I4G3Tx7B460R8LiO1n",
+ "originalText": "AllocationManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "rectangle",
+ "version": 1876,
+ "versionNonce": 248928925,
+ "index": "b35",
+ "isDeleted": false,
+ "id": "LB1RAC-R424nw3plgg1kh",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1135.6703214253794,
+ "y": -116.37449800762263,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#d0bfff",
+ "width": 223.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1046129075,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "qH4cHb6aOV_E5qS8vJw4H"
+ },
+ {
+ "id": "pQuPzVRh8WjIFdRY2eKF5",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363588296,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1627,
+ "versionNonce": 63635197,
+ "index": "b36",
+ "isDeleted": false,
+ "id": "qH4cHb6aOV_E5qS8vJw4H",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1167.4828214253794,
+ "y": -68.47449800762266,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 159.375,
+ "height": 19.2,
+ "seed": 1801517907,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363588297,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "AllocationManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "LB1RAC-R424nw3plgg1kh",
+ "originalText": "AllocationManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "arrow",
+ "version": 1452,
+ "versionNonce": 461404627,
+ "index": "b37",
+ "isDeleted": false,
+ "id": "pQuPzVRh8WjIFdRY2eKF5",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1242.1729864888496,
+ "y": 211.26227843242594,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 2.7711085123346493,
+ "height": 203.15858945976518,
+ "seed": 799750461,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "-8p09am_7qW9OnaDRk8ia"
+ }
+ ],
+ "updated": 1734363588308,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "d7pRFde2mvhA75ZinOGRD",
+ "focus": 0.02526414269227943,
+ "gap": 15.95200728185975,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "LB1RAC-R424nw3plgg1kh",
+ "focus": 0.011690285389073253,
+ "gap": 9.478186980283425,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 2.7711085123346493,
+ -203.15858945976518
+ ]
+ ]
+ },
+ {
+ "type": "text",
+ "version": 469,
+ "versionNonce": 1813289843,
+ "index": "b38",
+ "isDeleted": false,
+ "id": "-8p09am_7qW9OnaDRk8ia",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1103.7635179447445,
+ "y": 48.403683012858025,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 217.41982972621918,
+ "height": 125,
+ "seed": 2144012701,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734362486641,
+ "link": null,
+ "locked": false,
+ "fontSize": 20,
+ "fontFamily": 1,
+ "text": "6/5. Query staker's\nmaxMagnitude for the\nStrategy to update\nstaker's\ndepositScalingFactor",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "pQuPzVRh8WjIFdRY2eKF5",
+ "originalText": "6/5. Query staker's maxMagnitude for the Strategy to update staker's depositScalingFactor",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "rectangle",
+ "version": 1681,
+ "versionNonce": 1969129949,
+ "index": "b3B",
+ "isDeleted": false,
+ "id": "uBOfg8AY3O3q1TzoE0AYc",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 774.7144431608883,
+ "y": 1368.5611244983547,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#d0bfff",
+ "width": 223.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 585934045,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "T2lTCf315-7KP3ycNMXWW"
+ },
+ {
+ "id": "uZdrle8wzDudz1Ky8EmR2",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734361966514,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1432,
+ "versionNonce": 537609789,
+ "index": "b3C",
+ "isDeleted": false,
+ "id": "T2lTCf315-7KP3ycNMXWW",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 806.5269431608883,
+ "y": 1416.4611244983548,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 159.375,
+ "height": 19.2,
+ "seed": 1260257597,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734361966514,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "AllocationManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "uBOfg8AY3O3q1TzoE0AYc",
+ "originalText": "AllocationManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "arrow",
+ "version": 916,
+ "versionNonce": 110574493,
+ "index": "b3D",
+ "isDeleted": false,
+ "id": "uZdrle8wzDudz1Ky8EmR2",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 888.8812762825158,
+ "y": 1698.5800261707745,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 0.03834289140161218,
+ "height": 212.30934927812245,
+ "seed": 218690429,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "pAc8FXOW3tNpocQKsPVxn"
+ }
+ ],
+ "updated": 1734362046016,
+ "link": null,
+ "locked": false,
+ "startBinding": {
+ "elementId": "OoHImjROrg7WnQ4xzkpcv",
+ "focus": 0.04048028406652341,
+ "gap": 18.848011234469368,
+ "fixedPoint": null
+ },
+ "endBinding": {
+ "elementId": "uBOfg8AY3O3q1TzoE0AYc",
+ "focus": -0.024356922642854672,
+ "gap": 2.7095523942973614,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 0.03834289140161218,
+ -212.30934927812245
+ ]
+ ]
+ },
+ {
+ "id": "pAc8FXOW3tNpocQKsPVxn",
+ "type": "text",
+ "x": 790.0505289008022,
+ "y": 1542.4253515317132,
+ "width": 197.69983765482903,
+ "height": 100,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#d0bfff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3DV",
+ "roundness": null,
+ "seed": 1205146525,
+ "version": 224,
+ "versionNonce": 412461885,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1734362040720,
+ "link": null,
+ "locked": false,
+ "text": "2. Query\nmaxMagnitude to\ncalculate staker's\nwithdrawable shares",
+ "fontSize": 20,
+ "fontFamily": 1,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "uZdrle8wzDudz1Ky8EmR2",
+ "originalText": "2. Query maxMagnitude to calculate staker's withdrawable shares",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "rectangle",
+ "version": 1778,
+ "versionNonce": 896093651,
+ "index": "b3F",
+ "isDeleted": false,
+ "id": "6FNSXtSCK4i9vGJHUD_Gd",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2622.909053060372,
+ "y": 1700.057029928533,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#d0bfff",
+ "width": 223.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 846589651,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "EKob_oXQJUmOYJUD_1iZg"
+ },
+ {
+ "id": "6dpTPKRZLEdmh9dN3ZD96",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734362199220,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1529,
+ "versionNonce": 759569267,
+ "index": "b3G",
+ "isDeleted": false,
+ "id": "EKob_oXQJUmOYJUD_1iZg",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2654.721553060372,
+ "y": 1747.957029928533,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 159.375,
+ "height": 19.2,
+ "seed": 35036275,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734362199220,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "AllocationManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "6FNSXtSCK4i9vGJHUD_Gd",
+ "originalText": "AllocationManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "arrow",
+ "version": 1115,
+ "versionNonce": 339791603,
+ "index": "b3H",
+ "isDeleted": false,
+ "id": "6dpTPKRZLEdmh9dN3ZD96",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 2737.075886182,
+ "y": 2030.0759316009528,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 0.03834289140161218,
+ "height": 212.30934927812245,
+ "seed": 546346515,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "stENef2b2kfL0tlWSytw2"
+ }
+ ],
+ "updated": 1734362278797,
+ "link": null,
+ "locked": false,
+ "startBinding": null,
+ "endBinding": {
+ "elementId": "6FNSXtSCK4i9vGJHUD_Gd",
+ "focus": -0.02435692264285643,
+ "gap": 2.7095523942973614,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 0.03834289140161218,
+ -212.30934927812245
+ ]
+ ]
+ },
+ {
+ "id": "stENef2b2kfL0tlWSytw2",
+ "type": "text",
+ "x": 2628.1951595549963,
+ "y": 1873.9212569618917,
+ "width": 217.79979614540935,
+ "height": 100,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#d0bfff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3I",
+ "roundness": null,
+ "seed": 2094685107,
+ "version": 278,
+ "versionNonce": 1119906045,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1734362277899,
+ "link": null,
+ "locked": false,
+ "text": "3. Query\nmaxMagnitude to\nupdate staker's\ndeposit scaling factor",
+ "fontSize": 20,
+ "fontFamily": 1,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "6dpTPKRZLEdmh9dN3ZD96",
+ "originalText": "3. Query maxMagnitude to update staker's deposit scaling factor",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "rectangle",
+ "version": 1838,
+ "versionNonce": 1109827805,
+ "index": "b3J",
+ "isDeleted": false,
+ "id": "0a8N_e6gkwu5-k8KmBL_-",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 710.5859275076249,
+ "y": 2268.2620413972554,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#d0bfff",
+ "width": 223.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 1306495869,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "2SpNu7VlX4wkRxeUwbP2L"
+ },
+ {
+ "id": "130BriWp6I2pxy6aKtw0G",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734362372290,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1589,
+ "versionNonce": 1773698365,
+ "index": "b3K",
+ "isDeleted": false,
+ "id": "2SpNu7VlX4wkRxeUwbP2L",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 742.3984275076249,
+ "y": 2316.1620413972555,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 159.375,
+ "height": 19.2,
+ "seed": 1882919901,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734362372290,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "AllocationManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "0a8N_e6gkwu5-k8KmBL_-",
+ "originalText": "AllocationManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "arrow",
+ "version": 1205,
+ "versionNonce": 1180063027,
+ "index": "b3L",
+ "isDeleted": false,
+ "id": "130BriWp6I2pxy6aKtw0G",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 825.1694272959191,
+ "y": 2598.2809430696752,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 0.03834289140161218,
+ "height": 212.30934927812223,
+ "seed": 1657180221,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "OfHErzEAswtHwUQ0Olnsf"
+ }
+ ],
+ "updated": 1734363604361,
+ "link": null,
+ "locked": false,
+ "startBinding": null,
+ "endBinding": {
+ "elementId": "0a8N_e6gkwu5-k8KmBL_-",
+ "focus": -0.028093495417795003,
+ "gap": 2.7095523942975888,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 0.03834289140161218,
+ -212.30934927812223
+ ]
+ ]
+ },
+ {
+ "id": "OfHErzEAswtHwUQ0Olnsf",
+ "type": "text",
+ "x": 724.3686786935023,
+ "y": 2417.126268430614,
+ "width": 201.63984009623528,
+ "height": 150,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#d0bfff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3M",
+ "roundness": null,
+ "seed": 56852637,
+ "version": 324,
+ "versionNonce": 1891300851,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1734363601320,
+ "link": null,
+ "locked": false,
+ "text": "2. Query\nmaxMagnitude to\ncalculate whether\nwithdrawable shares\nwere slashed while in\nqueue",
+ "fontSize": 20,
+ "fontFamily": 1,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "130BriWp6I2pxy6aKtw0G",
+ "originalText": "2. Query maxMagnitude to calculate whether withdrawable shares were slashed while in queue",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "rectangle",
+ "version": 1925,
+ "versionNonce": 1307885843,
+ "index": "b3N",
+ "isDeleted": false,
+ "id": "AK7dgZlDTH-2Oikgm8ydH",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1091.7531389138244,
+ "y": 3713.033937529639,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#d0bfff",
+ "width": 223.00000000000006,
+ "height": 114.99999999999997,
+ "seed": 560396019,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "Nz-REXSoxDrDSOd5LCxhq"
+ },
+ {
+ "id": "07rBBHWqecyJpfZJMK1_M",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1734363571520,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1677,
+ "versionNonce": 1652631219,
+ "index": "b3O",
+ "isDeleted": false,
+ "id": "Nz-REXSoxDrDSOd5LCxhq",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1123.5656389138244,
+ "y": 3760.933937529639,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 159.375,
+ "height": 19.2,
+ "seed": 1509007507,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363571520,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "AllocationManager",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "AK7dgZlDTH-2Oikgm8ydH",
+ "originalText": "AllocationManager",
+ "autoResize": true,
+ "lineHeight": 1.2
+ },
+ {
+ "type": "arrow",
+ "version": 1377,
+ "versionNonce": 446149171,
+ "index": "b3P",
+ "isDeleted": false,
+ "id": "07rBBHWqecyJpfZJMK1_M",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1205.4707532854518,
+ "y": 4042.1544017020587,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "width": 0.03834289140161218,
+ "height": 212.30934927812223,
+ "seed": 716576307,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "sw19jzLIy905vlo-X89BW"
+ }
+ ],
+ "updated": 1734363685756,
+ "link": null,
+ "locked": false,
+ "startBinding": null,
+ "endBinding": {
+ "elementId": "AK7dgZlDTH-2Oikgm8ydH",
+ "focus": -0.02032697503509013,
+ "gap": 1.8111148942975888,
+ "fixedPoint": null
+ },
+ "lastCommittedPoint": null,
+ "startArrowhead": null,
+ "endArrowhead": "triangle",
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 0.03834289140161218,
+ -212.30934927812223
+ ]
+ ]
+ },
+ {
+ "id": "sw19jzLIy905vlo-X89BW",
+ "type": "text",
+ "x": 1105.119223433035,
+ "y": 3861.8981645629974,
+ "width": 201.63984009623528,
+ "height": 150,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#d0bfff",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 0,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3Q",
+ "roundness": null,
+ "seed": 43702227,
+ "version": 328,
+ "versionNonce": 1773573085,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1734363604596,
+ "link": null,
+ "locked": false,
+ "text": "2. Query\nmaxMagnitude to\ncalculate whether\nwithdrawable shares\nwere slashed while in\nqueue",
+ "fontSize": 20,
+ "fontFamily": 1,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "07rBBHWqecyJpfZJMK1_M",
+ "originalText": "2. Query maxMagnitude to calculate whether withdrawable shares were slashed while in queue",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "type": "rectangle",
+ "version": 1868,
+ "versionNonce": 848772413,
+ "index": "b3R",
+ "isDeleted": false,
+ "id": "cyLRrqf8uVqIpnO4DRqqy",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1396.717409232908,
+ "y": -982.4560167908803,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#b2f2bb",
+ "width": 266.00000000000017,
+ "height": 114.99999999999997,
+ "seed": 2131196029,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "HTWzY9PIToNQf8PIFO6bi"
+ }
+ ],
+ "updated": 1734363922343,
+ "link": null,
+ "locked": false
+ },
+ {
+ "type": "text",
+ "version": 1766,
+ "versionNonce": 1981310643,
+ "index": "b3S",
+ "isDeleted": false,
+ "id": "HTWzY9PIToNQf8PIFO6bi",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1459.311159232908,
+ "y": -934.5560167908803,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "width": 140.8125,
+ "height": 19.2,
+ "seed": 1876779229,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1734363922344,
+ "link": null,
+ "locked": false,
+ "fontSize": 16,
+ "fontFamily": 3,
+ "text": "EIP-4788 Oracle",
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "cyLRrqf8uVqIpnO4DRqqy",
+ "originalText": "EIP-4788 Oracle",
+ "autoResize": true,
+ "lineHeight": 1.2
+ }
+ ],
+ "appState": {
+ "gridSize": 20,
+ "gridStep": 5,
+ "gridModeEnabled": false,
+ "viewBackgroundColor": "#ffffff"
+ },
+ "files": {}
+}
\ No newline at end of file
diff --git a/docs/images/slashing-model.png b/docs/images/slashing-model.png
new file mode 100644
index 0000000000..b5c4b89eed
Binary files /dev/null and b/docs/images/slashing-model.png differ
diff --git a/docs/permissions/PermissionController.md b/docs/permissions/PermissionController.md
new file mode 100644
index 0000000000..f0ff11a2bd
--- /dev/null
+++ b/docs/permissions/PermissionController.md
@@ -0,0 +1,262 @@
+# PermissionController
+
+| File | Type | Proxy |
+| -------- | -------- | -------- |
+| [`PermissionController.sol`](../../src/contracts/permissions/PermissionController.sol) | Singleton | Transparent proxy |
+
+The `PermissionController` handles user permissions for protocol contracts which explicitly integrate it. Note that "users" in the context of the `PermissionController` refers to **AVSs** and **operators**; it does *not* refer to **stakers**.
+
+The `PermissionController` is integrated into other core contracts, enabling (for specific methods) AVSs and operators to designate _other accounts_ ("appointees") that can call these methods on their behalf. The core contracts using the `PermissionController` as a dependency are the:
+* `DelegationManager`
+* `AllocationManager`
+* `RewardsCoordinator`
+
+The `PermissionController` defines three different roles:
+* [Accounts](#accounts)
+* [Admins](#admins)
+* [Appointees](#appointees)
+
+---
+
+## Accounts
+
+**Accounts** refer to the Ethereum address through which one interacts with the protocol _if no appointees are set_. From the core contracts' perspective, accounts are the "state holder," i.e. the address referenced in storage when a contract method interacts with state. For example, in the `DelegationManager`, the `operator` address that holds shares in the `operatorShares` mapping is an "account." In the `AllocationManager`, an AVS's "account" is the address under which operator sets are created.
+
+The `PermissionController` allows an account to designate **admins** and/or **appointees** to take certain actions on its behalf. Note that setting up admins/appointees is _optional_, and carries with it a significant responsibility to **ensure the designated actors are intentionally being granted authority**.
+
+Both admins AND appointees can be granted authority to act on an account's behalf. Admins are granted full reign over any `PermissionController`-enabled functions, while appointees must be granted authority to call specific functions on specific contracts. The list of methods that are `PermissionController`-enabled follow.
+
+For operators:
+* `AllocationManager.modifyAllocations`
+* `AllocationManager.registerForOperatorSets`
+* `AllocationManager.deregisterFromOperatorSets`
+* `AllocationManager.setAllocationDelay`
+* `DelegationManager.modifyOperatorDetails`
+* `DelegationManager.updateOperatorMetadataURI`
+* `DelegationManager.undelegate`
+* `RewardsCoordinator.setClaimerFor`
+* `RewardsCoordinator.setClaimerFor`
+* `RewardsCoordinator.setOperatorAVSSplit`
+* `RewardsCoordinator.setOperatorPISplit`
+
+For AVSs:
+* `AllocationManager.slashOperator`
+* `AllocationManager.deregisterFromOperatorSets`
+* `AllocationManager.setAVSRegistrar`
+* `AllocationManager.updateAVSMetadataURI`
+* `AllocationManager.createOperatorSets`
+* `AllocationManager.addStrategiesToOperatorSet`
+* `AllocationManager.removeStrategiesFromOperatorSet`
+* `RewardsCoordinator.createOperatorDirectedAVSRewardsSubmission`
+* `RewardsCoordinator.setClaimerFor`
+
+### Account Permissions
+
+Account permissions are stored within a struct defined as follows:
+
+```solidity
+struct AccountPermissions {
+ /// @notice The pending admins of the account
+ EnumerableSet.AddressSet pendingAdmins;
+ /// @notice The admins of the account
+ EnumerableSet.AddressSet admins;
+ /// @notice Mapping from an appointee to the list of encoded target & selectors
+ mapping(address appointee => EnumerableSet.Bytes32Set) appointeePermissions;
+ /// @notice Mapping from encoded target & selector to the list of appointees
+ mapping(bytes32 targetSelector => EnumerableSet.AddressSet) permissionAppointees;
+}
+```
+
+These structs are then stored within a mapping defined as follows, allowing for fetching account permissions for a given account with ease:
+
+```solidity
+mapping(address account => AccountPermissions) internal _permissions;
+```
+
+By default, no other address can perform an action on behalf of a given account. However, accounts can add admins and/or appointees to give other addresses the ability to act on their behalf.
+
+## Admins
+
+Admins are able to take ANY action on behalf of an original account -- including adding or removing admins. This enables operations like key rotation for operators, or creating a backup admin which is stored on a cold key.
+
+**Note:** by default, an account is its own admin. However, once an admin is added, this is no longer the case; only the admins listed in `_permissions.admins` are admins. If an account wants to both add admins AND continue acting as its own admin, _it must be added to the admins list_.
+
+### Adding an Admin
+
+The relevant functions for admin addition are:
+
+* [`addPendingAdmin`](#addpendingadmin)
+* [`removePendingAdmin`](#removependingadmin)
+* [`acceptAdmin`](#acceptadmin)
+
+#### `addPendingAdmin`
+
+```solidity
+/**
+ * @notice Sets a pending admin of an account
+ * @param account to set pending admin for
+ * @param admin to set
+ * @dev Multiple admins can be set for an account
+ */
+function addPendingAdmin(address account, address admin) external onlyAdmin(account);
+```
+
+When adding a new admin, an account or admin must first call `addPendingAdmin()`. Then, the pending admin must call `acceptAdmin()` to complete the process. An account cannot force an admin role upon another account.
+
+Pending admins do not have any particular authority, but are granted the full authority of an admin once they call `acceptAdmin()`.
+
+*Effects*:
+* An address is added to the `pendingAdmins` set for the account
+* A `PendingAdminAdded` event is emitted specifying the account for which a pending admin was added
+
+*Requirements*:
+* The proposed admin MUST NOT already be an admin for the `account`
+* The proposed admin MUST NOT be a pending admin for the `account`
+* Caller MUST be an admin for the `account`, or the `account` itself if no admin is set
+
+#### `removePendingAdmin`
+
+```solidity
+/**
+ * @notice Removes a pending admin of an account
+ * @param account to remove pending admin for
+ * @param admin to remove
+ * @dev Only the admin of the account can remove a pending admin
+ */
+function removePendingAdmin(address account, address admin) external onlyAdmin(account);
+```
+
+An account or admin can call `removePendingAdmin()` to prevent a pending admin from accepting their role. However, this will only work if the pending admin has not already called `acceptAdmin()`. If this occurs, an admin can call `removeAdmin` to remove the unwanted admin.
+
+*Effects*:
+* An address is removed from the `pendingAdmins` set for the account
+* A `PendingAdminRemoved` event is emitted specifying the account for which a pending admin was removed
+
+*Requirements*:
+* The proposed admin MUST be a pending admin for the account
+* Caller MUST be an admin for the account, or the account's address itself if no admin is set
+
+#### `acceptAdmin`
+
+```solidity
+/**
+ * @notice Accepts the admin role of an account
+ * @param account to accept admin for
+ * @dev Only a pending admin for the account can become an admin
+ */
+function acceptAdmin(address account) external;
+```
+
+Called by a pending admin to claim the admin role for an account. The caller must have been previously added as a pending admin.
+
+Note that once an account has successfully added an admin (i.e. the pending admin has called `acceptAdmin()`), **the account's address itself no longer has its default admin privileges**. This behavior benefits accounts seeking to perform a *key rotation*, as adding an admin allows them to remove permissions from their original, potentially compromised, key. If an account wants to retain admin privileges for its own address, it is recommended to first add itself as an admin, then add any other admins as desired.
+
+*Effects*:
+* The caller is removed from the `pendingAdmins` set for the account
+* The caller is added to the `admins` set for the account
+* A `AdminSet` event is emitted specifying the account for which an admin was added
+
+*Requirements*:
+* Caller MUST be a pending admin for the account
+
+### Removing an Admin
+
+#### `removeAdmin`
+
+```solidity
+/**
+ * @notice Remove an admin of an account
+ * @param account to remove admin for
+ * @param admin to remove
+ * @dev Only the admin of the account can remove an admin
+ * @dev Reverts when an admin is removed such that no admins are remaining
+ */
+function removeAdmin(address account, address admin) external onlyAdmin(account);
+```
+
+An admin of an account can call `removeAdmin()` to remove any other admins of the same account. However, one admin must always remain for any given account. In other words, once an account has added an admin, it must always have at least one admin in perpetuity.
+
+*Effects*:
+* The specified admin is removed from the `admins` set for the account
+* An `AdminRemoved` event is emitted specifying the accuont for which an admin was removed
+
+*Requirements*:
+* `admins.length()` MUST be greater than 1, such that removing the admin does not remove all admins for the account
+* The address to remove MUST be an admin for the account
+* Caller MUST be an admin for the account, or the account's address itself if no admin is set
+
+## Appointees
+
+Appointees are able to act as another account *for a specific function for a specific contract*, granting accounts granular access control.
+
+Specifically, an account (or its admins) can grant an appointee access to a specific `selector` (i.e [function](https://solidity-by-example.org/function-selector/)) on a given `target` (i.e. contract). The `target` and `selector` are combined in the form of the `targetSelector` and serve to uniquely identify a permissioned function on a specific contract.
+
+Appointees can be granted access to multiple functions/contracts. Each new `targetSelector` permission granted requires setting the appointee from scratch, and revoking the appointee's permission requires revoking each individual `targetSelector` permission, as described below.
+
+### Adding an Appointee
+
+#### `setAppointee`
+
+```solidity
+/**
+ * @notice Set an appointee for a given account
+ * @param account to set appointee for
+ * @param appointee to set
+ * @param target to set appointee for
+ * @param selector to set appointee for
+ * @dev Only the admin of the account can set an appointee
+ */
+function setAppointee(
+ address account,
+ address appointee,
+ address target,
+ bytes4 selector
+) external onlyAdmin(account);
+```
+
+An account (or its admins) can call `setAppointee()` to give another address the ability to call a specific function on a given contract. That address is then only able to call that specific function on that specific contract on behalf of `account`.
+
+Note that unlike the process to become an admin, there is no requirement for the `appointee` to accept the appointment.
+
+*Effects*:
+* The `targetSelector` is added to the specified `appointee` set within the `appointeePermissions` mapping
+* The `appointee` is added to the specified `targetSelector` set within the `permissionAppointees` mapping
+* The `AppointeeSet` event is emitted, specifying the account, appointee, target contract, and function selector
+
+*Requirements*:
+* Caller MUST be an admin for the account, or the account's address itself if no admin is set
+* The proposed appointee MUST NOT already have permissions for the given `targetSelector`
+
+### Removing an Appointee
+
+#### `removeAppointee`
+
+```solidity
+/**
+ * Removes an appointee for a given account
+ * @param account to remove appointee for
+ * @param appointee to remove
+ * @param target to remove appointee for
+ * @param selector to remove appointee for
+ * @dev Only the admin of the account can remove an appointee
+ */
+function removeAppointee(
+ address account,
+ address appointee,
+ address target,
+ bytes4 selector
+) external onlyAdmin(account);
+```
+
+An account (or its admins) can call `removeAppointee()` to remove an `appointee's` permissions for a given contract/function pair. Note that there does not exist any way currently to atomically remove all permissions for a given appointee, or all appointees for a given function selector - each permission must be revoked individually.
+
+Also note that permissions to specific functions/contracts cannot be revoked for _admins_. Admins always have full access, unless another admin removes them from the admin list.
+
+*Effects*:
+* The `targetSelector` is removed from the specified `appointee` set within the `appointeePermissions` mapping
+* The `appointee` is removed from the specified `targetSelector` set within the `permissionAppointees` mapping
+* The `AppointeeRemoved` event is emitted, specifying the account, appointee, target contract, and function selector
+
+*Requirements*:
+* Caller MUST be an admin for the account, or the account's address itself if no admin is set
+* The proposed appointee MUST already have permissions for the given `targetSelector`
\ No newline at end of file
diff --git a/docs/storage-report/AVSDirectory.md b/docs/storage-report/AVSDirectory.md
index cf36169ac4..b58c59b164 100644
--- a/docs/storage-report/AVSDirectory.md
+++ b/docs/storage-report/AVSDirectory.md
@@ -1,16 +1,33 @@
-| Name | Type | Slot | Offset | Bytes | Contract |
-|---------------------|------------------------------------------------------------------------------------------|------|--------|-------|--------------------------------------------------|
-| _initialized | uint8 | 0 | 0 | 1 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
-| _initializing | bool | 0 | 1 | 1 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
-| __gap | uint256[50] | 1 | 0 | 1600 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
-| _owner | address | 51 | 0 | 20 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
-| __gap | uint256[49] | 52 | 0 | 1568 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
-| pauserRegistry | contract IPauserRegistry | 101 | 0 | 20 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
-| _paused | uint256 | 102 | 0 | 32 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
-| __gap | uint256[48] | 103 | 0 | 1536 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
-| _DOMAIN_SEPARATOR | bytes32 | 151 | 0 | 32 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
-| avsOperatorStatus | mapping(address => mapping(address => enum IAVSDirectory.OperatorAVSRegistrationStatus)) | 152 | 0 | 32 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
-| operatorSaltIsSpent | mapping(address => mapping(bytes32 => bool)) | 153 | 0 | 32 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
-| __gap | uint256[47] | 154 | 0 | 1504 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
-| _status | uint256 | 201 | 0 | 32 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
-| __gap | uint256[49] | 202 | 0 | 1568 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
+
+╭-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++==========================================================================================================================================================================================================+
+| _initialized | uint8 | 0 | 0 | 1 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
+|-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
+| _initializing | bool | 0 | 1 | 1 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
+|-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
+| __gap | uint256[50] | 1 | 0 | 1600 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
+|-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
+| _owner | address | 51 | 0 | 20 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
+|-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
+| __gap | uint256[49] | 52 | 0 | 1568 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
+|-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
+| __deprecated_pauserRegistry | contract IPauserRegistry | 101 | 0 | 20 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
+|-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
+| _paused | uint256 | 102 | 0 | 32 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
+|-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
+| __gap | uint256[48] | 103 | 0 | 1536 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
+|-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
+| __deprecated_DOMAIN_SEPARATOR | bytes32 | 151 | 0 | 32 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
+|-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
+| avsOperatorStatus | mapping(address => mapping(address => enum IAVSDirectoryTypes.OperatorAVSRegistrationStatus)) | 152 | 0 | 32 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
+|-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
+| operatorSaltIsSpent | mapping(address => mapping(bytes32 => bool)) | 153 | 0 | 32 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
+|-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
+| __gap | uint256[47] | 154 | 0 | 1504 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
+|-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
+| _status | uint256 | 201 | 0 | 32 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
+|-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
+| __gap | uint256[49] | 202 | 0 | 1568 | src/contracts/core/AVSDirectory.sol:AVSDirectory |
+╰-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------╯
+
diff --git a/docs/storage-report/AVSDirectoryStorage.md b/docs/storage-report/AVSDirectoryStorage.md
index a337342d0b..839f6afc26 100644
--- a/docs/storage-report/AVSDirectoryStorage.md
+++ b/docs/storage-report/AVSDirectoryStorage.md
@@ -1,6 +1,13 @@
-| Name | Type | Slot | Offset | Bytes | Contract |
-|---------------------|------------------------------------------------------------------------------------------|------|--------|-------|----------------------------------------------------------------|
-| _DOMAIN_SEPARATOR | bytes32 | 0 | 0 | 32 | src/contracts/core/AVSDirectoryStorage.sol:AVSDirectoryStorage |
-| avsOperatorStatus | mapping(address => mapping(address => enum IAVSDirectory.OperatorAVSRegistrationStatus)) | 1 | 0 | 32 | src/contracts/core/AVSDirectoryStorage.sol:AVSDirectoryStorage |
-| operatorSaltIsSpent | mapping(address => mapping(bytes32 => bool)) | 2 | 0 | 32 | src/contracts/core/AVSDirectoryStorage.sol:AVSDirectoryStorage |
-| __gap | uint256[47] | 3 | 0 | 1504 | src/contracts/core/AVSDirectoryStorage.sol:AVSDirectoryStorage |
+
+╭-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++========================================================================================================================================================================================================================+
+| __deprecated_DOMAIN_SEPARATOR | bytes32 | 0 | 0 | 32 | src/contracts/core/AVSDirectoryStorage.sol:AVSDirectoryStorage |
+|-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
+| avsOperatorStatus | mapping(address => mapping(address => enum IAVSDirectoryTypes.OperatorAVSRegistrationStatus)) | 1 | 0 | 32 | src/contracts/core/AVSDirectoryStorage.sol:AVSDirectoryStorage |
+|-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
+| operatorSaltIsSpent | mapping(address => mapping(bytes32 => bool)) | 2 | 0 | 32 | src/contracts/core/AVSDirectoryStorage.sol:AVSDirectoryStorage |
+|-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
+| __gap | uint256[47] | 3 | 0 | 1504 | src/contracts/core/AVSDirectoryStorage.sol:AVSDirectoryStorage |
+╰-------------------------------+-----------------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------╯
+
diff --git a/docs/storage-report/AllocationManager.md b/docs/storage-report/AllocationManager.md
new file mode 100644
index 0000000000..623960107f
--- /dev/null
+++ b/docs/storage-report/AllocationManager.md
@@ -0,0 +1,53 @@
+
+╭-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++=====================================================================================================================================================================================================================================+
+| _initialized | uint8 | 0 | 0 | 1 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| _initializing | bool | 0 | 1 | 1 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| __gap | uint256[50] | 1 | 0 | 1600 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| _owner | address | 51 | 0 | 20 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| __gap | uint256[49] | 52 | 0 | 1568 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| __deprecated_pauserRegistry | contract IPauserRegistry | 101 | 0 | 20 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| _paused | uint256 | 102 | 0 | 32 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| __gap | uint256[48] | 103 | 0 | 1536 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| _avsRegistrar | mapping(address => contract IAVSRegistrar) | 151 | 0 | 32 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| _operatorSets | mapping(address => struct EnumerableSet.UintSet) | 152 | 0 | 32 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| _operatorSetStrategies | mapping(bytes32 => struct EnumerableSet.AddressSet) | 153 | 0 | 32 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| _operatorSetMembers | mapping(bytes32 => struct EnumerableSet.AddressSet) | 154 | 0 | 32 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| _allocationDelayInfo | mapping(address => struct IAllocationManagerTypes.AllocationDelayInfo) | 155 | 0 | 32 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| registeredSets | mapping(address => struct EnumerableSet.Bytes32Set) | 156 | 0 | 32 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| allocatedSets | mapping(address => struct EnumerableSet.Bytes32Set) | 157 | 0 | 32 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| registrationStatus | mapping(address => mapping(bytes32 => struct IAllocationManagerTypes.RegistrationStatus)) | 158 | 0 | 32 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| allocatedStrategies | mapping(address => mapping(bytes32 => struct EnumerableSet.AddressSet)) | 159 | 0 | 32 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| allocations | mapping(address => mapping(bytes32 => mapping(contract IStrategy => struct IAllocationManagerTypes.Allocation))) | 160 | 0 | 32 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| _maxMagnitudeHistory | mapping(address => mapping(contract IStrategy => struct Snapshots.DefaultWadHistory)) | 161 | 0 | 32 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| encumberedMagnitude | mapping(address => mapping(contract IStrategy => uint64)) | 162 | 0 | 32 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| deallocationQueue | mapping(address => mapping(contract IStrategy => struct DoubleEndedQueue.Bytes32Deque)) | 163 | 0 | 32 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| __gap | uint256[37] | 164 | 0 | 1184 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| _status | uint256 | 201 | 0 | 32 | src/contracts/core/AllocationManager.sol:AllocationManager |
+|-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| __gap | uint256[49] | 202 | 0 | 1568 | src/contracts/core/AllocationManager.sol:AllocationManager |
+╰-----------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------╯
+
diff --git a/docs/storage-report/AllocationManagerStorage.md b/docs/storage-report/AllocationManagerStorage.md
new file mode 100644
index 0000000000..6aae942d20
--- /dev/null
+++ b/docs/storage-report/AllocationManagerStorage.md
@@ -0,0 +1,33 @@
+
+╭------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++==============================================================================================================================================================================================================================================+
+| _avsRegistrar | mapping(address => contract IAVSRegistrar) | 0 | 0 | 32 | src/contracts/core/AllocationManagerStorage.sol:AllocationManagerStorage |
+|------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| _operatorSets | mapping(address => struct EnumerableSet.UintSet) | 1 | 0 | 32 | src/contracts/core/AllocationManagerStorage.sol:AllocationManagerStorage |
+|------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| _operatorSetStrategies | mapping(bytes32 => struct EnumerableSet.AddressSet) | 2 | 0 | 32 | src/contracts/core/AllocationManagerStorage.sol:AllocationManagerStorage |
+|------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| _operatorSetMembers | mapping(bytes32 => struct EnumerableSet.AddressSet) | 3 | 0 | 32 | src/contracts/core/AllocationManagerStorage.sol:AllocationManagerStorage |
+|------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| _allocationDelayInfo | mapping(address => struct IAllocationManagerTypes.AllocationDelayInfo) | 4 | 0 | 32 | src/contracts/core/AllocationManagerStorage.sol:AllocationManagerStorage |
+|------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| registeredSets | mapping(address => struct EnumerableSet.Bytes32Set) | 5 | 0 | 32 | src/contracts/core/AllocationManagerStorage.sol:AllocationManagerStorage |
+|------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| allocatedSets | mapping(address => struct EnumerableSet.Bytes32Set) | 6 | 0 | 32 | src/contracts/core/AllocationManagerStorage.sol:AllocationManagerStorage |
+|------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| registrationStatus | mapping(address => mapping(bytes32 => struct IAllocationManagerTypes.RegistrationStatus)) | 7 | 0 | 32 | src/contracts/core/AllocationManagerStorage.sol:AllocationManagerStorage |
+|------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| allocatedStrategies | mapping(address => mapping(bytes32 => struct EnumerableSet.AddressSet)) | 8 | 0 | 32 | src/contracts/core/AllocationManagerStorage.sol:AllocationManagerStorage |
+|------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| allocations | mapping(address => mapping(bytes32 => mapping(contract IStrategy => struct IAllocationManagerTypes.Allocation))) | 9 | 0 | 32 | src/contracts/core/AllocationManagerStorage.sol:AllocationManagerStorage |
+|------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| _maxMagnitudeHistory | mapping(address => mapping(contract IStrategy => struct Snapshots.DefaultWadHistory)) | 10 | 0 | 32 | src/contracts/core/AllocationManagerStorage.sol:AllocationManagerStorage |
+|------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| encumberedMagnitude | mapping(address => mapping(contract IStrategy => uint64)) | 11 | 0 | 32 | src/contracts/core/AllocationManagerStorage.sol:AllocationManagerStorage |
+|------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| deallocationQueue | mapping(address => mapping(contract IStrategy => struct DoubleEndedQueue.Bytes32Deque)) | 12 | 0 | 32 | src/contracts/core/AllocationManagerStorage.sol:AllocationManagerStorage |
+|------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| __gap | uint256[37] | 13 | 0 | 1184 | src/contracts/core/AllocationManagerStorage.sol:AllocationManagerStorage |
+╰------------------------+------------------------------------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------╯
+
diff --git a/docs/storage-report/BackingEigen.md b/docs/storage-report/BackingEigen.md
index 648f111b2d..c03c8eb100 100644
--- a/docs/storage-report/BackingEigen.md
+++ b/docs/storage-report/BackingEigen.md
@@ -1,29 +1,59 @@
+
+╭-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------╮
| Name | Type | Slot | Offset | Bytes | Contract |
-|-----------------------------------|---------------------------------------------------------------|------|--------|-------|---------------------------------------------------|
++===============================================================================================================================================================================+
| _initialized | uint8 | 0 | 0 | 1 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| _initializing | bool | 0 | 1 | 1 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| __gap | uint256[50] | 1 | 0 | 1600 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| _owner | address | 51 | 0 | 20 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| __gap | uint256[49] | 52 | 0 | 1568 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| _balances | mapping(address => uint256) | 101 | 0 | 32 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| _allowances | mapping(address => mapping(address => uint256)) | 102 | 0 | 32 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| _totalSupply | uint256 | 103 | 0 | 32 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| _name | string | 104 | 0 | 32 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| _symbol | string | 105 | 0 | 32 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| __gap | uint256[45] | 106 | 0 | 1440 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| _hashedName | bytes32 | 151 | 0 | 32 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| _hashedVersion | bytes32 | 152 | 0 | 32 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| _name | string | 153 | 0 | 32 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| _version | string | 154 | 0 | 32 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| __gap | uint256[48] | 155 | 0 | 1536 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| _nonces | mapping(address => struct CountersUpgradeable.Counter) | 203 | 0 | 32 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| _PERMIT_TYPEHASH_DEPRECATED_SLOT | bytes32 | 204 | 0 | 32 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| __gap | uint256[49] | 205 | 0 | 1568 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| _delegates | mapping(address => address) | 254 | 0 | 32 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| _checkpoints | mapping(address => struct ERC20VotesUpgradeable.Checkpoint[]) | 255 | 0 | 32 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| _totalSupplyCheckpoints | struct ERC20VotesUpgradeable.Checkpoint[] | 256 | 0 | 32 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| __gap | uint256[47] | 257 | 0 | 1504 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| transferRestrictionsDisabledAfter | uint256 | 304 | 0 | 32 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| allowedFrom | mapping(address => bool) | 305 | 0 | 32 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| allowedTo | mapping(address => bool) | 306 | 0 | 32 | src/contracts/token/BackingEigen.sol:BackingEigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------|
| isMinter | mapping(address => bool) | 307 | 0 | 32 | src/contracts/token/BackingEigen.sol:BackingEigen |
+╰-----------------------------------+---------------------------------------------------------------+------+--------+-------+---------------------------------------------------╯
+
diff --git a/docs/storage-report/DelegationManager.md b/docs/storage-report/DelegationManager.md
index 61594f32a7..ed2bc1ca31 100644
--- a/docs/storage-report/DelegationManager.md
+++ b/docs/storage-report/DelegationManager.md
@@ -1,24 +1,57 @@
-| Name | Type | Slot | Offset | Bytes | Contract |
-|-------------------------------|---------------------------------------------------------------|------|--------|-------|------------------------------------------------------------|
-| _initialized | uint8 | 0 | 0 | 1 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| _initializing | bool | 0 | 1 | 1 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| __gap | uint256[50] | 1 | 0 | 1600 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| _owner | address | 51 | 0 | 20 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| __gap | uint256[49] | 52 | 0 | 1568 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| pauserRegistry | contract IPauserRegistry | 101 | 0 | 20 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| _paused | uint256 | 102 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| __gap | uint256[48] | 103 | 0 | 1536 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| _DOMAIN_SEPARATOR | bytes32 | 151 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| operatorShares | mapping(address => mapping(contract IStrategy => uint256)) | 152 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| _operatorDetails | mapping(address => struct IDelegationManager.OperatorDetails) | 153 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| delegatedTo | mapping(address => address) | 154 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| stakerNonce | mapping(address => uint256) | 155 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| delegationApproverSaltIsSpent | mapping(address => mapping(bytes32 => bool)) | 156 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| minWithdrawalDelayBlocks | uint256 | 157 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| pendingWithdrawals | mapping(bytes32 => bool) | 158 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| cumulativeWithdrawalsQueued | mapping(address => uint256) | 159 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| __deprecated_stakeRegistry | address | 160 | 0 | 20 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| strategyWithdrawalDelayBlocks | mapping(contract IStrategy => uint256) | 161 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| __gap | uint256[39] | 162 | 0 | 1248 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| _status | uint256 | 201 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
-| __gap | uint256[49] | 202 | 0 | 1568 | src/contracts/core/DelegationManager.sol:DelegationManager |
+
+╭--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++==========================================================================================================================================================================================================================+
+| _initialized | uint8 | 0 | 0 | 1 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| _initializing | bool | 0 | 1 | 1 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| __gap | uint256[50] | 1 | 0 | 1600 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| _owner | address | 51 | 0 | 20 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| __gap | uint256[49] | 52 | 0 | 1568 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| __deprecated_pauserRegistry | contract IPauserRegistry | 101 | 0 | 20 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| _paused | uint256 | 102 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| __gap | uint256[48] | 103 | 0 | 1536 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| __deprecated_DOMAIN_SEPARATOR | bytes32 | 151 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| operatorShares | mapping(address => mapping(contract IStrategy => uint256)) | 152 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| _operatorDetails | mapping(address => struct IDelegationManagerTypes.OperatorDetails) | 153 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| delegatedTo | mapping(address => address) | 154 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| __deprecated_stakerNonce | mapping(address => uint256) | 155 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| delegationApproverSaltIsSpent | mapping(address => mapping(bytes32 => bool)) | 156 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| __deprecated_minWithdrawalDelayBlocks | uint256 | 157 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| pendingWithdrawals | mapping(bytes32 => bool) | 158 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| cumulativeWithdrawalsQueued | mapping(address => uint256) | 159 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| __deprecated_stakeRegistry | address | 160 | 0 | 20 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| __deprecated_strategyWithdrawalDelayBlocks | mapping(contract IStrategy => uint256) | 161 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| _depositScalingFactor | mapping(address => mapping(contract IStrategy => struct DepositScalingFactor)) | 162 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| _stakerQueuedWithdrawalRoots | mapping(address => struct EnumerableSet.Bytes32Set) | 163 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| queuedWithdrawals | mapping(bytes32 => struct IDelegationManagerTypes.Withdrawal) | 164 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| _cumulativeScaledSharesHistory | mapping(address => mapping(contract IStrategy => struct Snapshots.DefaultZeroHistory)) | 165 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| __gap | uint256[35] | 166 | 0 | 1120 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| _status | uint256 | 201 | 0 | 32 | src/contracts/core/DelegationManager.sol:DelegationManager |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------|
+| __gap | uint256[49] | 202 | 0 | 1568 | src/contracts/core/DelegationManager.sol:DelegationManager |
+╰--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+------------------------------------------------------------╯
+
diff --git a/docs/storage-report/DelegationManagerStorage.md b/docs/storage-report/DelegationManagerStorage.md
index 2ae1eb04b8..9d7d3945d6 100644
--- a/docs/storage-report/DelegationManagerStorage.md
+++ b/docs/storage-report/DelegationManagerStorage.md
@@ -1,14 +1,37 @@
-| Name | Type | Slot | Offset | Bytes | Contract |
-|-------------------------------|---------------------------------------------------------------|------|--------|-------|--------------------------------------------------------------------------|
-| _DOMAIN_SEPARATOR | bytes32 | 0 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
-| operatorShares | mapping(address => mapping(contract IStrategy => uint256)) | 1 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
-| _operatorDetails | mapping(address => struct IDelegationManager.OperatorDetails) | 2 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
-| delegatedTo | mapping(address => address) | 3 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
-| stakerNonce | mapping(address => uint256) | 4 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
-| delegationApproverSaltIsSpent | mapping(address => mapping(bytes32 => bool)) | 5 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
-| minWithdrawalDelayBlocks | uint256 | 6 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
-| pendingWithdrawals | mapping(bytes32 => bool) | 7 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
-| cumulativeWithdrawalsQueued | mapping(address => uint256) | 8 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
-| __deprecated_stakeRegistry | address | 9 | 0 | 20 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
-| strategyWithdrawalDelayBlocks | mapping(contract IStrategy => uint256) | 10 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
-| __gap | uint256[39] | 11 | 0 | 1248 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
+
+╭--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++========================================================================================================================================================================================================================================+
+| __deprecated_DOMAIN_SEPARATOR | bytes32 | 0 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| operatorShares | mapping(address => mapping(contract IStrategy => uint256)) | 1 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| _operatorDetails | mapping(address => struct IDelegationManagerTypes.OperatorDetails) | 2 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| delegatedTo | mapping(address => address) | 3 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| __deprecated_stakerNonce | mapping(address => uint256) | 4 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| delegationApproverSaltIsSpent | mapping(address => mapping(bytes32 => bool)) | 5 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| __deprecated_minWithdrawalDelayBlocks | uint256 | 6 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| pendingWithdrawals | mapping(bytes32 => bool) | 7 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| cumulativeWithdrawalsQueued | mapping(address => uint256) | 8 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| __deprecated_stakeRegistry | address | 9 | 0 | 20 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| __deprecated_strategyWithdrawalDelayBlocks | mapping(contract IStrategy => uint256) | 10 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| _depositScalingFactor | mapping(address => mapping(contract IStrategy => struct DepositScalingFactor)) | 11 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| _stakerQueuedWithdrawalRoots | mapping(address => struct EnumerableSet.Bytes32Set) | 12 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| queuedWithdrawals | mapping(bytes32 => struct IDelegationManagerTypes.Withdrawal) | 13 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| _cumulativeScaledSharesHistory | mapping(address => mapping(contract IStrategy => struct Snapshots.DefaultZeroHistory)) | 14 | 0 | 32 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
+|--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| __gap | uint256[35] | 15 | 0 | 1120 | src/contracts/core/DelegationManagerStorage.sol:DelegationManagerStorage |
+╰--------------------------------------------+----------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------╯
+
diff --git a/docs/storage-report/Eigen.md b/docs/storage-report/Eigen.md
index cf83009744..074161ce2a 100644
--- a/docs/storage-report/Eigen.md
+++ b/docs/storage-report/Eigen.md
@@ -1,30 +1,61 @@
+
+╭-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------╮
| Name | Type | Slot | Offset | Bytes | Contract |
-|-----------------------------------|---------------------------------------------------------------|------|--------|-------|-------------------------------------|
++=================================================================================================================================================================+
| _initialized | uint8 | 0 | 0 | 1 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| _initializing | bool | 0 | 1 | 1 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| __gap | uint256[50] | 1 | 0 | 1600 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| _owner | address | 51 | 0 | 20 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| __gap | uint256[49] | 52 | 0 | 1568 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| _balances | mapping(address => uint256) | 101 | 0 | 32 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| _allowances | mapping(address => mapping(address => uint256)) | 102 | 0 | 32 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| _totalSupply | uint256 | 103 | 0 | 32 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| _name | string | 104 | 0 | 32 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| _symbol | string | 105 | 0 | 32 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| __gap | uint256[45] | 106 | 0 | 1440 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| _hashedName | bytes32 | 151 | 0 | 32 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| _hashedVersion | bytes32 | 152 | 0 | 32 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| _name | string | 153 | 0 | 32 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| _version | string | 154 | 0 | 32 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| __gap | uint256[48] | 155 | 0 | 1536 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| _nonces | mapping(address => struct CountersUpgradeable.Counter) | 203 | 0 | 32 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| _PERMIT_TYPEHASH_DEPRECATED_SLOT | bytes32 | 204 | 0 | 32 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| __gap | uint256[49] | 205 | 0 | 1568 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| _delegates | mapping(address => address) | 254 | 0 | 32 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| _checkpoints | mapping(address => struct ERC20VotesUpgradeable.Checkpoint[]) | 255 | 0 | 32 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| _totalSupplyCheckpoints | struct ERC20VotesUpgradeable.Checkpoint[] | 256 | 0 | 32 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| __gap | uint256[47] | 257 | 0 | 1504 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| mintAllowedAfter | mapping(address => uint256) | 304 | 0 | 32 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| mintingAllowance | mapping(address => uint256) | 305 | 0 | 32 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| transferRestrictionsDisabledAfter | uint256 | 306 | 0 | 32 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| allowedFrom | mapping(address => bool) | 307 | 0 | 32 | src/contracts/token/Eigen.sol:Eigen |
+|-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------|
| allowedTo | mapping(address => bool) | 308 | 0 | 32 | src/contracts/token/Eigen.sol:Eigen |
+╰-----------------------------------+---------------------------------------------------------------+------+--------+-------+-------------------------------------╯
+
diff --git a/docs/storage-report/EigenPod.md b/docs/storage-report/EigenPod.md
index 02b88e0c67..981d53d8be 100644
--- a/docs/storage-report/EigenPod.md
+++ b/docs/storage-report/EigenPod.md
@@ -1,21 +1,43 @@
-| Name | Type | Slot | Offset | Bytes | Contract |
-|-------------------------------------------------|----------------------------------------------------|------|--------|-------|------------------------------------------|
-| _initialized | uint8 | 0 | 0 | 1 | src/contracts/pods/EigenPod.sol:EigenPod |
-| _initializing | bool | 0 | 1 | 1 | src/contracts/pods/EigenPod.sol:EigenPod |
-| _status | uint256 | 1 | 0 | 32 | src/contracts/pods/EigenPod.sol:EigenPod |
-| __gap | uint256[49] | 2 | 0 | 1568 | src/contracts/pods/EigenPod.sol:EigenPod |
-| podOwner | address | 51 | 0 | 20 | src/contracts/pods/EigenPod.sol:EigenPod |
-| __deprecated_mostRecentWithdrawalTimestamp | uint64 | 51 | 20 | 8 | src/contracts/pods/EigenPod.sol:EigenPod |
-| withdrawableRestakedExecutionLayerGwei | uint64 | 52 | 0 | 8 | src/contracts/pods/EigenPod.sol:EigenPod |
-| __deprecated_hasRestaked | bool | 52 | 8 | 1 | src/contracts/pods/EigenPod.sol:EigenPod |
-| __deprecated_provenWithdrawal | mapping(bytes32 => mapping(uint64 => bool)) | 53 | 0 | 32 | src/contracts/pods/EigenPod.sol:EigenPod |
-| _validatorPubkeyHashToInfo | mapping(bytes32 => struct IEigenPod.ValidatorInfo) | 54 | 0 | 32 | src/contracts/pods/EigenPod.sol:EigenPod |
-| __deprecated_nonBeaconChainETHBalanceWei | uint256 | 55 | 0 | 32 | src/contracts/pods/EigenPod.sol:EigenPod |
-| __deprecated_sumOfPartialWithdrawalsClaimedGwei | uint64 | 56 | 0 | 8 | src/contracts/pods/EigenPod.sol:EigenPod |
-| activeValidatorCount | uint256 | 57 | 0 | 32 | src/contracts/pods/EigenPod.sol:EigenPod |
-| lastCheckpointTimestamp | uint64 | 58 | 0 | 8 | src/contracts/pods/EigenPod.sol:EigenPod |
-| currentCheckpointTimestamp | uint64 | 58 | 8 | 8 | src/contracts/pods/EigenPod.sol:EigenPod |
-| checkpointBalanceExitedGwei | mapping(uint64 => uint64) | 59 | 0 | 32 | src/contracts/pods/EigenPod.sol:EigenPod |
-| _currentCheckpoint | struct IEigenPod.Checkpoint | 60 | 0 | 64 | src/contracts/pods/EigenPod.sol:EigenPod |
-| proofSubmitter | address | 62 | 0 | 20 | src/contracts/pods/EigenPod.sol:EigenPod |
-| __gap | uint256[36] | 63 | 0 | 1152 | src/contracts/pods/EigenPod.sol:EigenPod |
+
+╭-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++==============================================================================================================================================================================+
+| _initialized | uint8 | 0 | 0 | 1 | src/contracts/pods/EigenPod.sol:EigenPod |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------|
+| _initializing | bool | 0 | 1 | 1 | src/contracts/pods/EigenPod.sol:EigenPod |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------|
+| _status | uint256 | 1 | 0 | 32 | src/contracts/pods/EigenPod.sol:EigenPod |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------|
+| __gap | uint256[49] | 2 | 0 | 1568 | src/contracts/pods/EigenPod.sol:EigenPod |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------|
+| podOwner | address | 51 | 0 | 20 | src/contracts/pods/EigenPod.sol:EigenPod |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------|
+| __deprecated_mostRecentWithdrawalTimestamp | uint64 | 51 | 20 | 8 | src/contracts/pods/EigenPod.sol:EigenPod |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------|
+| restakedExecutionLayerGwei | uint64 | 52 | 0 | 8 | src/contracts/pods/EigenPod.sol:EigenPod |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------|
+| __deprecated_hasRestaked | bool | 52 | 8 | 1 | src/contracts/pods/EigenPod.sol:EigenPod |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------|
+| __deprecated_provenWithdrawal | mapping(bytes32 => mapping(uint64 => bool)) | 53 | 0 | 32 | src/contracts/pods/EigenPod.sol:EigenPod |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------|
+| _validatorPubkeyHashToInfo | mapping(bytes32 => struct IEigenPodTypes.ValidatorInfo) | 54 | 0 | 32 | src/contracts/pods/EigenPod.sol:EigenPod |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------|
+| __deprecated_nonBeaconChainETHBalanceWei | uint256 | 55 | 0 | 32 | src/contracts/pods/EigenPod.sol:EigenPod |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------|
+| __deprecated_sumOfPartialWithdrawalsClaimedGwei | uint64 | 56 | 0 | 8 | src/contracts/pods/EigenPod.sol:EigenPod |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------|
+| activeValidatorCount | uint256 | 57 | 0 | 32 | src/contracts/pods/EigenPod.sol:EigenPod |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------|
+| lastCheckpointTimestamp | uint64 | 58 | 0 | 8 | src/contracts/pods/EigenPod.sol:EigenPod |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------|
+| currentCheckpointTimestamp | uint64 | 58 | 8 | 8 | src/contracts/pods/EigenPod.sol:EigenPod |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------|
+| checkpointBalanceExitedGwei | mapping(uint64 => uint64) | 59 | 0 | 32 | src/contracts/pods/EigenPod.sol:EigenPod |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------|
+| _currentCheckpoint | struct IEigenPodTypes.Checkpoint | 60 | 0 | 64 | src/contracts/pods/EigenPod.sol:EigenPod |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------|
+| proofSubmitter | address | 62 | 0 | 20 | src/contracts/pods/EigenPod.sol:EigenPod |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------|
+| __gap | uint256[35] | 63 | 0 | 1120 | src/contracts/pods/EigenPod.sol:EigenPod |
+╰-------------------------------------------------+---------------------------------------------------------+------+--------+-------+------------------------------------------╯
+
diff --git a/docs/storage-report/EigenPodManager.md b/docs/storage-report/EigenPodManager.md
index e4df1d088a..e0f91d0dbe 100644
--- a/docs/storage-report/EigenPodManager.md
+++ b/docs/storage-report/EigenPodManager.md
@@ -1,19 +1,43 @@
-| Name | Type | Slot | Offset | Bytes | Contract |
-|---------------------------------|----------------------------------------|------|--------|-------|--------------------------------------------------------|
-| _initialized | uint8 | 0 | 0 | 1 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
-| _initializing | bool | 0 | 1 | 1 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
-| __gap | uint256[50] | 1 | 0 | 1600 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
-| _owner | address | 51 | 0 | 20 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
-| __gap | uint256[49] | 52 | 0 | 1568 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
-| pauserRegistry | contract IPauserRegistry | 101 | 0 | 20 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
-| _paused | uint256 | 102 | 0 | 32 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
-| __gap | uint256[48] | 103 | 0 | 1536 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
-| __deprecated_beaconChainOracle | address | 151 | 0 | 20 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
-| ownerToPod | mapping(address => contract IEigenPod) | 152 | 0 | 32 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
-| numPods | uint256 | 153 | 0 | 32 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
-| __deprecated_maxPods | uint256 | 154 | 0 | 32 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
-| podOwnerShares | mapping(address => int256) | 155 | 0 | 32 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
-| __deprecated_denebForkTimestamp | uint64 | 156 | 0 | 8 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
-| __gap | uint256[44] | 157 | 0 | 1408 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
-| _status | uint256 | 201 | 0 | 32 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
-| __gap | uint256[49] | 202 | 0 | 1568 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+
+╭---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++===============================================================================================================================================================================================+
+| _initialized | uint8 | 0 | 0 | 1 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| _initializing | bool | 0 | 1 | 1 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __gap | uint256[50] | 1 | 0 | 1600 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| _owner | address | 51 | 0 | 20 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __gap | uint256[49] | 52 | 0 | 1568 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __deprecated_pauserRegistry | contract IPauserRegistry | 101 | 0 | 20 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| _paused | uint256 | 102 | 0 | 32 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __gap | uint256[48] | 103 | 0 | 1536 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __deprecated_beaconChainOracle | address | 151 | 0 | 20 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| ownerToPod | mapping(address => contract IEigenPod) | 152 | 0 | 32 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| numPods | uint256 | 153 | 0 | 32 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __deprecated_maxPods | uint256 | 154 | 0 | 32 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| podOwnerDepositShares | mapping(address => int256) | 155 | 0 | 32 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __deprecated_denebForkTimestamp | uint64 | 156 | 0 | 8 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| _beaconChainSlashingFactor | mapping(address => struct IEigenPodManagerTypes.BeaconChainSlashingFactor) | 157 | 0 | 32 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| burnableETHShares | uint256 | 158 | 0 | 32 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __gap | uint256[42] | 159 | 0 | 1344 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| _status | uint256 | 201 | 0 | 32 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __gap | uint256[49] | 202 | 0 | 1568 | src/contracts/pods/EigenPodManager.sol:EigenPodManager |
+╰---------------------------------+----------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------╯
+
diff --git a/docs/storage-report/EigenPodManagerStorage.md b/docs/storage-report/EigenPodManagerStorage.md
index 8ada2fbef0..42e293f48f 100644
--- a/docs/storage-report/EigenPodManagerStorage.md
+++ b/docs/storage-report/EigenPodManagerStorage.md
@@ -1,9 +1,23 @@
-| Name | Type | Slot | Offset | Bytes | Contract |
-|---------------------------------|----------------------------------------|------|--------|-------|----------------------------------------------------------------------|
-| __deprecated_beaconChainOracle | address | 0 | 0 | 20 | src/contracts/pods/EigenPodManagerStorage.sol:EigenPodManagerStorage |
-| ownerToPod | mapping(address => contract IEigenPod) | 1 | 0 | 32 | src/contracts/pods/EigenPodManagerStorage.sol:EigenPodManagerStorage |
-| numPods | uint256 | 2 | 0 | 32 | src/contracts/pods/EigenPodManagerStorage.sol:EigenPodManagerStorage |
-| __deprecated_maxPods | uint256 | 3 | 0 | 32 | src/contracts/pods/EigenPodManagerStorage.sol:EigenPodManagerStorage |
-| podOwnerShares | mapping(address => int256) | 4 | 0 | 32 | src/contracts/pods/EigenPodManagerStorage.sol:EigenPodManagerStorage |
-| __deprecated_denebForkTimestamp | uint64 | 5 | 0 | 8 | src/contracts/pods/EigenPodManagerStorage.sol:EigenPodManagerStorage |
-| __gap | uint256[44] | 6 | 0 | 1408 | src/contracts/pods/EigenPodManagerStorage.sol:EigenPodManagerStorage |
+
+╭---------------------------------+----------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++=============================================================================================================================================================================================================+
+| __deprecated_beaconChainOracle | address | 0 | 0 | 20 | src/contracts/pods/EigenPodManagerStorage.sol:EigenPodManagerStorage |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| ownerToPod | mapping(address => contract IEigenPod) | 1 | 0 | 32 | src/contracts/pods/EigenPodManagerStorage.sol:EigenPodManagerStorage |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| numPods | uint256 | 2 | 0 | 32 | src/contracts/pods/EigenPodManagerStorage.sol:EigenPodManagerStorage |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| __deprecated_maxPods | uint256 | 3 | 0 | 32 | src/contracts/pods/EigenPodManagerStorage.sol:EigenPodManagerStorage |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| podOwnerDepositShares | mapping(address => int256) | 4 | 0 | 32 | src/contracts/pods/EigenPodManagerStorage.sol:EigenPodManagerStorage |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| __deprecated_denebForkTimestamp | uint64 | 5 | 0 | 8 | src/contracts/pods/EigenPodManagerStorage.sol:EigenPodManagerStorage |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| _beaconChainSlashingFactor | mapping(address => struct IEigenPodManagerTypes.BeaconChainSlashingFactor) | 6 | 0 | 32 | src/contracts/pods/EigenPodManagerStorage.sol:EigenPodManagerStorage |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| burnableETHShares | uint256 | 7 | 0 | 32 | src/contracts/pods/EigenPodManagerStorage.sol:EigenPodManagerStorage |
+|---------------------------------+----------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| __gap | uint256[42] | 8 | 0 | 1344 | src/contracts/pods/EigenPodManagerStorage.sol:EigenPodManagerStorage |
+╰---------------------------------+----------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------╯
+
diff --git a/docs/storage-report/EigenPodPausingConstants.md b/docs/storage-report/EigenPodPausingConstants.md
index 55eed362d4..1ec5dc0797 100644
--- a/docs/storage-report/EigenPodPausingConstants.md
+++ b/docs/storage-report/EigenPodPausingConstants.md
@@ -1,2 +1,6 @@
+
+╭------+------+------+--------+-------+----------╮
| Name | Type | Slot | Offset | Bytes | Contract |
-|------|------|------|--------|-------|----------|
++================================================+
+╰------+------+------+--------+-------+----------╯
+
diff --git a/docs/storage-report/EigenPodStorage.md b/docs/storage-report/EigenPodStorage.md
index f0ddef8edf..f5d090ada8 100644
--- a/docs/storage-report/EigenPodStorage.md
+++ b/docs/storage-report/EigenPodStorage.md
@@ -1,17 +1,35 @@
-| Name | Type | Slot | Offset | Bytes | Contract |
-|-------------------------------------------------|----------------------------------------------------|------|--------|-------|--------------------------------------------------------|
-| podOwner | address | 0 | 0 | 20 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
-| __deprecated_mostRecentWithdrawalTimestamp | uint64 | 0 | 20 | 8 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
-| withdrawableRestakedExecutionLayerGwei | uint64 | 1 | 0 | 8 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
-| __deprecated_hasRestaked | bool | 1 | 8 | 1 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
-| __deprecated_provenWithdrawal | mapping(bytes32 => mapping(uint64 => bool)) | 2 | 0 | 32 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
-| _validatorPubkeyHashToInfo | mapping(bytes32 => struct IEigenPod.ValidatorInfo) | 3 | 0 | 32 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
-| __deprecated_nonBeaconChainETHBalanceWei | uint256 | 4 | 0 | 32 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
-| __deprecated_sumOfPartialWithdrawalsClaimedGwei | uint64 | 5 | 0 | 8 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
-| activeValidatorCount | uint256 | 6 | 0 | 32 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
-| lastCheckpointTimestamp | uint64 | 7 | 0 | 8 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
-| currentCheckpointTimestamp | uint64 | 7 | 8 | 8 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
-| checkpointBalanceExitedGwei | mapping(uint64 => uint64) | 8 | 0 | 32 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
-| _currentCheckpoint | struct IEigenPod.Checkpoint | 9 | 0 | 64 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
-| proofSubmitter | address | 11 | 0 | 20 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
-| __gap | uint256[36] | 12 | 0 | 1152 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
+
+╭-------------------------------------------------+---------------------------------------------------------+------+--------+-------+--------------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++============================================================================================================================================================================================+
+| podOwner | address | 0 | 0 | 20 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __deprecated_mostRecentWithdrawalTimestamp | uint64 | 0 | 20 | 8 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| restakedExecutionLayerGwei | uint64 | 1 | 0 | 8 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __deprecated_hasRestaked | bool | 1 | 8 | 1 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __deprecated_provenWithdrawal | mapping(bytes32 => mapping(uint64 => bool)) | 2 | 0 | 32 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| _validatorPubkeyHashToInfo | mapping(bytes32 => struct IEigenPodTypes.ValidatorInfo) | 3 | 0 | 32 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __deprecated_nonBeaconChainETHBalanceWei | uint256 | 4 | 0 | 32 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __deprecated_sumOfPartialWithdrawalsClaimedGwei | uint64 | 5 | 0 | 8 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| activeValidatorCount | uint256 | 6 | 0 | 32 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| lastCheckpointTimestamp | uint64 | 7 | 0 | 8 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| currentCheckpointTimestamp | uint64 | 7 | 8 | 8 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| checkpointBalanceExitedGwei | mapping(uint64 => uint64) | 8 | 0 | 32 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| _currentCheckpoint | struct IEigenPodTypes.Checkpoint | 9 | 0 | 64 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| proofSubmitter | address | 11 | 0 | 20 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
+|-------------------------------------------------+---------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __gap | uint256[35] | 12 | 0 | 1120 | src/contracts/pods/EigenPodStorage.sol:EigenPodStorage |
+╰-------------------------------------------------+---------------------------------------------------------+------+--------+-------+--------------------------------------------------------╯
+
diff --git a/docs/storage-report/EigenStrategy.md b/docs/storage-report/EigenStrategy.md
index 5ca2fde70a..0e036d710d 100644
--- a/docs/storage-report/EigenStrategy.md
+++ b/docs/storage-report/EigenStrategy.md
@@ -1,12 +1,25 @@
-| Name | Type | Slot | Offset | Bytes | Contract |
-|-----------------|--------------------------|------|--------|-------|----------------------------------------------------------|
-| _initialized | uint8 | 0 | 0 | 1 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
-| _initializing | bool | 0 | 1 | 1 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
-| pauserRegistry | contract IPauserRegistry | 0 | 2 | 20 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
-| _paused | uint256 | 1 | 0 | 32 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
-| __gap | uint256[48] | 2 | 0 | 1536 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
-| underlyingToken | contract IERC20 | 50 | 0 | 20 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
-| totalShares | uint256 | 51 | 0 | 32 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
-| __gap | uint256[48] | 52 | 0 | 1536 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
-| EIGEN | contract IEigen | 100 | 0 | 20 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
-| __gap | uint256[49] | 101 | 0 | 1568 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
+
+╭-----------------------------+--------------------------+------+--------+-------+----------------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++===========================================================================================================================================+
+| _initialized | uint8 | 0 | 0 | 1 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
+|-----------------------------+--------------------------+------+--------+-------+----------------------------------------------------------|
+| _initializing | bool | 0 | 1 | 1 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
+|-----------------------------+--------------------------+------+--------+-------+----------------------------------------------------------|
+| __deprecated_pauserRegistry | contract IPauserRegistry | 0 | 2 | 20 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
+|-----------------------------+--------------------------+------+--------+-------+----------------------------------------------------------|
+| _paused | uint256 | 1 | 0 | 32 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
+|-----------------------------+--------------------------+------+--------+-------+----------------------------------------------------------|
+| __gap | uint256[48] | 2 | 0 | 1536 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
+|-----------------------------+--------------------------+------+--------+-------+----------------------------------------------------------|
+| underlyingToken | contract IERC20 | 50 | 0 | 20 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
+|-----------------------------+--------------------------+------+--------+-------+----------------------------------------------------------|
+| totalShares | uint256 | 51 | 0 | 32 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
+|-----------------------------+--------------------------+------+--------+-------+----------------------------------------------------------|
+| __gap | uint256[48] | 52 | 0 | 1536 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
+|-----------------------------+--------------------------+------+--------+-------+----------------------------------------------------------|
+| EIGEN | contract IEigen | 100 | 0 | 20 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
+|-----------------------------+--------------------------+------+--------+-------+----------------------------------------------------------|
+| __gap | uint256[49] | 101 | 0 | 1568 | src/contracts/strategies/EigenStrategy.sol:EigenStrategy |
+╰-----------------------------+--------------------------+------+--------+-------+----------------------------------------------------------╯
+
diff --git a/docs/storage-report/Pausable.md b/docs/storage-report/Pausable.md
index 8fc12e1099..cd4c28a4dd 100644
--- a/docs/storage-report/Pausable.md
+++ b/docs/storage-report/Pausable.md
@@ -1,5 +1,11 @@
-| Name | Type | Slot | Offset | Bytes | Contract |
-|----------------|--------------------------|------|--------|-------|-------------------------------------------------|
-| pauserRegistry | contract IPauserRegistry | 0 | 0 | 20 | src/contracts/permissions/Pausable.sol:Pausable |
-| _paused | uint256 | 1 | 0 | 32 | src/contracts/permissions/Pausable.sol:Pausable |
-| __gap | uint256[48] | 2 | 0 | 1536 | src/contracts/permissions/Pausable.sol:Pausable |
+
+╭-----------------------------+--------------------------+------+--------+-------+-------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++==================================================================================================================================+
+| __deprecated_pauserRegistry | contract IPauserRegistry | 0 | 0 | 20 | src/contracts/permissions/Pausable.sol:Pausable |
+|-----------------------------+--------------------------+------+--------+-------+-------------------------------------------------|
+| _paused | uint256 | 1 | 0 | 32 | src/contracts/permissions/Pausable.sol:Pausable |
+|-----------------------------+--------------------------+------+--------+-------+-------------------------------------------------|
+| __gap | uint256[48] | 2 | 0 | 1536 | src/contracts/permissions/Pausable.sol:Pausable |
+╰-----------------------------+--------------------------+------+--------+-------+-------------------------------------------------╯
+
diff --git a/docs/storage-report/PauserRegistry.md b/docs/storage-report/PauserRegistry.md
index fa962f63e1..afe96c5b04 100644
--- a/docs/storage-report/PauserRegistry.md
+++ b/docs/storage-report/PauserRegistry.md
@@ -1,4 +1,9 @@
+
+╭----------+--------------------------+------+--------+-------+-------------------------------------------------------------╮
| Name | Type | Slot | Offset | Bytes | Contract |
-|----------|--------------------------|------|--------|-------|-------------------------------------------------------------|
++===========================================================================================================================+
| isPauser | mapping(address => bool) | 0 | 0 | 32 | src/contracts/permissions/PauserRegistry.sol:PauserRegistry |
+|----------+--------------------------+------+--------+-------+-------------------------------------------------------------|
| unpauser | address | 1 | 0 | 20 | src/contracts/permissions/PauserRegistry.sol:PauserRegistry |
+╰----------+--------------------------+------+--------+-------+-------------------------------------------------------------╯
+
diff --git a/docs/storage-report/PermissionController.md b/docs/storage-report/PermissionController.md
new file mode 100644
index 0000000000..e2cda08b10
--- /dev/null
+++ b/docs/storage-report/PermissionController.md
@@ -0,0 +1,13 @@
+
+╭---------------+---------------------------------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++=============================================================================================================================================================================================+
+| _initialized | uint8 | 0 | 0 | 1 | src/contracts/permissions/PermissionController.sol:PermissionController |
+|---------------+---------------------------------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------|
+| _initializing | bool | 0 | 1 | 1 | src/contracts/permissions/PermissionController.sol:PermissionController |
+|---------------+---------------------------------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------|
+| _permissions | mapping(address => struct PermissionControllerStorage.AccountPermissions) | 1 | 0 | 32 | src/contracts/permissions/PermissionController.sol:PermissionController |
+|---------------+---------------------------------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------|
+| __gap | uint256[49] | 2 | 0 | 1568 | src/contracts/permissions/PermissionController.sol:PermissionController |
+╰---------------+---------------------------------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------╯
+
diff --git a/docs/storage-report/PermissionControllerMixin.md b/docs/storage-report/PermissionControllerMixin.md
new file mode 100644
index 0000000000..1ec5dc0797
--- /dev/null
+++ b/docs/storage-report/PermissionControllerMixin.md
@@ -0,0 +1,6 @@
+
+╭------+------+------+--------+-------+----------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++================================================+
+╰------+------+------+--------+-------+----------╯
+
diff --git a/docs/storage-report/PermissionControllerStorage.md b/docs/storage-report/PermissionControllerStorage.md
new file mode 100644
index 0000000000..52ce3f8b48
--- /dev/null
+++ b/docs/storage-report/PermissionControllerStorage.md
@@ -0,0 +1,9 @@
+
+╭--------------+---------------------------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++==========================================================================================================================================================================================================+
+| _permissions | mapping(address => struct PermissionControllerStorage.AccountPermissions) | 0 | 0 | 32 | src/contracts/permissions/PermissionControllerStorage.sol:PermissionControllerStorage |
+|--------------+---------------------------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------------|
+| __gap | uint256[49] | 1 | 0 | 1568 | src/contracts/permissions/PermissionControllerStorage.sol:PermissionControllerStorage |
+╰--------------+---------------------------------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------------╯
+
diff --git a/docs/storage-report/RewardsCoordinator.md b/docs/storage-report/RewardsCoordinator.md
index 7b39dec3c5..3c14eea58a 100644
--- a/docs/storage-report/RewardsCoordinator.md
+++ b/docs/storage-report/RewardsCoordinator.md
@@ -1,29 +1,59 @@
-| Name | Type | Slot | Offset | Bytes | Contract |
-|--------------------------------------------|----------------------------------------------------------------------------------|------|--------|-------|--------------------------------------------------------------|
-| _initialized | uint8 | 0 | 0 | 1 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| _initializing | bool | 0 | 1 | 1 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| __gap | uint256[50] | 1 | 0 | 1600 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| _owner | address | 51 | 0 | 20 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| __gap | uint256[49] | 52 | 0 | 1568 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| pauserRegistry | contract IPauserRegistry | 101 | 0 | 20 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| _paused | uint256 | 102 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| __gap | uint256[48] | 103 | 0 | 1536 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| _status | uint256 | 151 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| __gap | uint256[49] | 152 | 0 | 1568 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| _DOMAIN_SEPARATOR | bytes32 | 201 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| _distributionRoots | struct IRewardsCoordinator.DistributionRoot[] | 202 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| rewardsUpdater | address | 203 | 0 | 20 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| activationDelay | uint32 | 203 | 20 | 4 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| currRewardsCalculationEndTimestamp | uint32 | 203 | 24 | 4 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| defaultOperatorSplitBips | uint16 | 203 | 28 | 2 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| claimerFor | mapping(address => address) | 204 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| cumulativeClaimed | mapping(address => mapping(contract IERC20 => uint256)) | 205 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| submissionNonce | mapping(address => uint256) | 206 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| isAVSRewardsSubmissionHash | mapping(address => mapping(bytes32 => bool)) | 207 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| isRewardsSubmissionForAllHash | mapping(address => mapping(bytes32 => bool)) | 208 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| isRewardsForAllSubmitter | mapping(address => bool) | 209 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| isRewardsSubmissionForAllEarnersHash | mapping(address => mapping(bytes32 => bool)) | 210 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| isOperatorDirectedAVSRewardsSubmissionHash | mapping(address => mapping(bytes32 => bool)) | 211 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| operatorAVSSplitBips | mapping(address => mapping(address => struct IRewardsCoordinator.OperatorSplit)) | 212 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| operatorPISplitBips | mapping(address => struct IRewardsCoordinator.OperatorSplit) | 213 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
-| __gap | uint256[37] | 214 | 0 | 1184 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+
+╭--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++===========================================================================================================================================================================================================================+
+| _initialized | uint8 | 0 | 0 | 1 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| _initializing | bool | 0 | 1 | 1 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| __gap | uint256[50] | 1 | 0 | 1600 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| _owner | address | 51 | 0 | 20 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| __gap | uint256[49] | 52 | 0 | 1568 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| __deprecated_pauserRegistry | contract IPauserRegistry | 101 | 0 | 20 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| _paused | uint256 | 102 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| __gap | uint256[48] | 103 | 0 | 1536 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| _status | uint256 | 151 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| __gap | uint256[49] | 152 | 0 | 1568 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| __deprecated_DOMAIN_SEPARATOR | bytes32 | 201 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| _distributionRoots | struct IRewardsCoordinatorTypes.DistributionRoot[] | 202 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| rewardsUpdater | address | 203 | 0 | 20 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| activationDelay | uint32 | 203 | 20 | 4 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| currRewardsCalculationEndTimestamp | uint32 | 203 | 24 | 4 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| defaultOperatorSplitBips | uint16 | 203 | 28 | 2 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| claimerFor | mapping(address => address) | 204 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| cumulativeClaimed | mapping(address => mapping(contract IERC20 => uint256)) | 205 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| submissionNonce | mapping(address => uint256) | 206 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| isAVSRewardsSubmissionHash | mapping(address => mapping(bytes32 => bool)) | 207 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| isRewardsSubmissionForAllHash | mapping(address => mapping(bytes32 => bool)) | 208 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| isRewardsForAllSubmitter | mapping(address => bool) | 209 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| isRewardsSubmissionForAllEarnersHash | mapping(address => mapping(bytes32 => bool)) | 210 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| isOperatorDirectedAVSRewardsSubmissionHash | mapping(address => mapping(bytes32 => bool)) | 211 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| operatorAVSSplitBips | mapping(address => mapping(address => struct IRewardsCoordinatorTypes.OperatorSplit)) | 212 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| operatorPISplitBips | mapping(address => struct IRewardsCoordinatorTypes.OperatorSplit) | 213 | 0 | 32 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| __gap | uint256[37] | 214 | 0 | 1184 | src/contracts/core/RewardsCoordinator.sol:RewardsCoordinator |
+╰--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+--------------------------------------------------------------╯
+
diff --git a/docs/storage-report/RewardsCoordinatorStorage.md b/docs/storage-report/RewardsCoordinatorStorage.md
index 463c08bc1a..9aa44693df 100644
--- a/docs/storage-report/RewardsCoordinatorStorage.md
+++ b/docs/storage-report/RewardsCoordinatorStorage.md
@@ -1,19 +1,39 @@
-| Name | Type | Slot | Offset | Bytes | Contract |
-|--------------------------------------------|----------------------------------------------------------------------------------|------|--------|-------|----------------------------------------------------------------------------|
-| _DOMAIN_SEPARATOR | bytes32 | 0 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
-| _distributionRoots | struct IRewardsCoordinator.DistributionRoot[] | 1 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
-| rewardsUpdater | address | 2 | 0 | 20 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
-| activationDelay | uint32 | 2 | 20 | 4 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
-| currRewardsCalculationEndTimestamp | uint32 | 2 | 24 | 4 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
-| defaultOperatorSplitBips | uint16 | 2 | 28 | 2 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
-| claimerFor | mapping(address => address) | 3 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
-| cumulativeClaimed | mapping(address => mapping(contract IERC20 => uint256)) | 4 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
-| submissionNonce | mapping(address => uint256) | 5 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
-| isAVSRewardsSubmissionHash | mapping(address => mapping(bytes32 => bool)) | 6 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
-| isRewardsSubmissionForAllHash | mapping(address => mapping(bytes32 => bool)) | 7 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
-| isRewardsForAllSubmitter | mapping(address => bool) | 8 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
-| isRewardsSubmissionForAllEarnersHash | mapping(address => mapping(bytes32 => bool)) | 9 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
-| isOperatorDirectedAVSRewardsSubmissionHash | mapping(address => mapping(bytes32 => bool)) | 10 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
-| operatorAVSSplitBips | mapping(address => mapping(address => struct IRewardsCoordinator.OperatorSplit)) | 11 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
-| operatorPISplitBips | mapping(address => struct IRewardsCoordinator.OperatorSplit) | 12 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
-| __gap | uint256[37] | 13 | 0 | 1184 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
+
+╭--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++=========================================================================================================================================================================================================================================+
+| __deprecated_DOMAIN_SEPARATOR | bytes32 | 0 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------|
+| _distributionRoots | struct IRewardsCoordinatorTypes.DistributionRoot[] | 1 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------|
+| rewardsUpdater | address | 2 | 0 | 20 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------|
+| activationDelay | uint32 | 2 | 20 | 4 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------|
+| currRewardsCalculationEndTimestamp | uint32 | 2 | 24 | 4 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------|
+| defaultOperatorSplitBips | uint16 | 2 | 28 | 2 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------|
+| claimerFor | mapping(address => address) | 3 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------|
+| cumulativeClaimed | mapping(address => mapping(contract IERC20 => uint256)) | 4 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------|
+| submissionNonce | mapping(address => uint256) | 5 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------|
+| isAVSRewardsSubmissionHash | mapping(address => mapping(bytes32 => bool)) | 6 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------|
+| isRewardsSubmissionForAllHash | mapping(address => mapping(bytes32 => bool)) | 7 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------|
+| isRewardsForAllSubmitter | mapping(address => bool) | 8 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------|
+| isRewardsSubmissionForAllEarnersHash | mapping(address => mapping(bytes32 => bool)) | 9 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------|
+| isOperatorDirectedAVSRewardsSubmissionHash | mapping(address => mapping(bytes32 => bool)) | 10 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------|
+| operatorAVSSplitBips | mapping(address => mapping(address => struct IRewardsCoordinatorTypes.OperatorSplit)) | 11 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------|
+| operatorPISplitBips | mapping(address => struct IRewardsCoordinatorTypes.OperatorSplit) | 12 | 0 | 32 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
+|--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------|
+| __gap | uint256[37] | 13 | 0 | 1184 | src/contracts/core/RewardsCoordinatorStorage.sol:RewardsCoordinatorStorage |
+╰--------------------------------------------+---------------------------------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------╯
+
diff --git a/docs/storage-report/SignatureUtils.md b/docs/storage-report/SignatureUtils.md
new file mode 100644
index 0000000000..1ec5dc0797
--- /dev/null
+++ b/docs/storage-report/SignatureUtils.md
@@ -0,0 +1,6 @@
+
+╭------+------+------+--------+-------+----------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++================================================+
+╰------+------+------+--------+-------+----------╯
+
diff --git a/docs/storage-report/StrategyBase.md b/docs/storage-report/StrategyBase.md
index 0ac0efc410..7dd5408abd 100644
--- a/docs/storage-report/StrategyBase.md
+++ b/docs/storage-report/StrategyBase.md
@@ -1,10 +1,21 @@
-| Name | Type | Slot | Offset | Bytes | Contract |
-|-----------------|--------------------------|------|--------|-------|--------------------------------------------------------|
-| _initialized | uint8 | 0 | 0 | 1 | src/contracts/strategies/StrategyBase.sol:StrategyBase |
-| _initializing | bool | 0 | 1 | 1 | src/contracts/strategies/StrategyBase.sol:StrategyBase |
-| pauserRegistry | contract IPauserRegistry | 0 | 2 | 20 | src/contracts/strategies/StrategyBase.sol:StrategyBase |
-| _paused | uint256 | 1 | 0 | 32 | src/contracts/strategies/StrategyBase.sol:StrategyBase |
-| __gap | uint256[48] | 2 | 0 | 1536 | src/contracts/strategies/StrategyBase.sol:StrategyBase |
-| underlyingToken | contract IERC20 | 50 | 0 | 20 | src/contracts/strategies/StrategyBase.sol:StrategyBase |
-| totalShares | uint256 | 51 | 0 | 32 | src/contracts/strategies/StrategyBase.sol:StrategyBase |
-| __gap | uint256[48] | 52 | 0 | 1536 | src/contracts/strategies/StrategyBase.sol:StrategyBase |
+
+╭-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++=========================================================================================================================================+
+| _initialized | uint8 | 0 | 0 | 1 | src/contracts/strategies/StrategyBase.sol:StrategyBase |
+|-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
+| _initializing | bool | 0 | 1 | 1 | src/contracts/strategies/StrategyBase.sol:StrategyBase |
+|-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
+| __deprecated_pauserRegistry | contract IPauserRegistry | 0 | 2 | 20 | src/contracts/strategies/StrategyBase.sol:StrategyBase |
+|-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
+| _paused | uint256 | 1 | 0 | 32 | src/contracts/strategies/StrategyBase.sol:StrategyBase |
+|-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
+| __gap | uint256[48] | 2 | 0 | 1536 | src/contracts/strategies/StrategyBase.sol:StrategyBase |
+|-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
+| underlyingToken | contract IERC20 | 50 | 0 | 20 | src/contracts/strategies/StrategyBase.sol:StrategyBase |
+|-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
+| totalShares | uint256 | 51 | 0 | 32 | src/contracts/strategies/StrategyBase.sol:StrategyBase |
+|-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
+| __gap | uint256[48] | 52 | 0 | 1536 | src/contracts/strategies/StrategyBase.sol:StrategyBase |
+╰-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------╯
+
diff --git a/docs/storage-report/StrategyBaseTVLLimits.md b/docs/storage-report/StrategyBaseTVLLimits.md
index a4bad1456e..908de8a492 100644
--- a/docs/storage-report/StrategyBaseTVLLimits.md
+++ b/docs/storage-report/StrategyBaseTVLLimits.md
@@ -1,13 +1,27 @@
-| Name | Type | Slot | Offset | Bytes | Contract |
-|------------------|--------------------------|------|--------|-------|--------------------------------------------------------------------------|
-| _initialized | uint8 | 0 | 0 | 1 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
-| _initializing | bool | 0 | 1 | 1 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
-| pauserRegistry | contract IPauserRegistry | 0 | 2 | 20 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
-| _paused | uint256 | 1 | 0 | 32 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
-| __gap | uint256[48] | 2 | 0 | 1536 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
-| underlyingToken | contract IERC20 | 50 | 0 | 20 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
-| totalShares | uint256 | 51 | 0 | 32 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
-| __gap | uint256[48] | 52 | 0 | 1536 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
-| maxPerDeposit | uint256 | 100 | 0 | 32 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
-| maxTotalDeposits | uint256 | 101 | 0 | 32 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
-| __gap | uint256[48] | 102 | 0 | 1536 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
+
+╭-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++===========================================================================================================================================================+
+| _initialized | uint8 | 0 | 0 | 1 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
+|-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| _initializing | bool | 0 | 1 | 1 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
+|-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| __deprecated_pauserRegistry | contract IPauserRegistry | 0 | 2 | 20 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
+|-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| _paused | uint256 | 1 | 0 | 32 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
+|-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| __gap | uint256[48] | 2 | 0 | 1536 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
+|-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| underlyingToken | contract IERC20 | 50 | 0 | 20 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
+|-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| totalShares | uint256 | 51 | 0 | 32 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
+|-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| __gap | uint256[48] | 52 | 0 | 1536 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
+|-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| maxPerDeposit | uint256 | 100 | 0 | 32 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
+|-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| maxTotalDeposits | uint256 | 101 | 0 | 32 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
+|-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------------------------|
+| __gap | uint256[48] | 102 | 0 | 1536 | src/contracts/strategies/StrategyBaseTVLLimits.sol:StrategyBaseTVLLimits |
+╰-----------------------------+--------------------------+------+--------+-------+--------------------------------------------------------------------------╯
+
diff --git a/docs/storage-report/StrategyFactory.md b/docs/storage-report/StrategyFactory.md
index c3a44b912e..5d86e4bf17 100644
--- a/docs/storage-report/StrategyFactory.md
+++ b/docs/storage-report/StrategyFactory.md
@@ -1,14 +1,29 @@
-| Name | Type | Slot | Offset | Bytes | Contract |
-|--------------------|------------------------------------------------|------|--------|-------|--------------------------------------------------------------|
-| strategyBeacon | contract IBeacon | 0 | 0 | 20 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
-| deployedStrategies | mapping(contract IERC20 => contract IStrategy) | 1 | 0 | 32 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
-| isBlacklisted | mapping(contract IERC20 => bool) | 2 | 0 | 32 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
-| __gap | uint256[48] | 3 | 0 | 1536 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
-| _initialized | uint8 | 51 | 0 | 1 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
-| _initializing | bool | 51 | 1 | 1 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
-| __gap | uint256[50] | 52 | 0 | 1600 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
-| _owner | address | 102 | 0 | 20 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
-| __gap | uint256[49] | 103 | 0 | 1568 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
-| pauserRegistry | contract IPauserRegistry | 152 | 0 | 20 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
-| _paused | uint256 | 153 | 0 | 32 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
-| __gap | uint256[48] | 154 | 0 | 1536 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
+
+╭-----------------------------+------------------------------------------------+------+--------+-------+--------------------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++=====================================================================================================================================================================+
+| strategyBeacon | contract IBeacon | 0 | 0 | 20 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
+|-----------------------------+------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| deployedStrategies | mapping(contract IERC20 => contract IStrategy) | 1 | 0 | 32 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
+|-----------------------------+------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| isBlacklisted | mapping(contract IERC20 => bool) | 2 | 0 | 32 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
+|-----------------------------+------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| __gap | uint256[48] | 3 | 0 | 1536 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
+|-----------------------------+------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| _initialized | uint8 | 51 | 0 | 1 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
+|-----------------------------+------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| _initializing | bool | 51 | 1 | 1 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
+|-----------------------------+------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| __gap | uint256[50] | 52 | 0 | 1600 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
+|-----------------------------+------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| _owner | address | 102 | 0 | 20 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
+|-----------------------------+------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| __gap | uint256[49] | 103 | 0 | 1568 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
+|-----------------------------+------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| __deprecated_pauserRegistry | contract IPauserRegistry | 152 | 0 | 20 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
+|-----------------------------+------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| _paused | uint256 | 153 | 0 | 32 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
+|-----------------------------+------------------------------------------------+------+--------+-------+--------------------------------------------------------------|
+| __gap | uint256[48] | 154 | 0 | 1536 | src/contracts/strategies/StrategyFactory.sol:StrategyFactory |
+╰-----------------------------+------------------------------------------------+------+--------+-------+--------------------------------------------------------------╯
+
diff --git a/docs/storage-report/StrategyFactoryStorage.md b/docs/storage-report/StrategyFactoryStorage.md
index 9832f308b6..b0a784054c 100644
--- a/docs/storage-report/StrategyFactoryStorage.md
+++ b/docs/storage-report/StrategyFactoryStorage.md
@@ -1,6 +1,13 @@
+
+╭--------------------+------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------╮
| Name | Type | Slot | Offset | Bytes | Contract |
-|--------------------|------------------------------------------------|------|--------|-------|----------------------------------------------------------------------------|
++==========================================================================================================================================================================+
| strategyBeacon | contract IBeacon | 0 | 0 | 20 | src/contracts/strategies/StrategyFactoryStorage.sol:StrategyFactoryStorage |
+|--------------------+------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------|
| deployedStrategies | mapping(contract IERC20 => contract IStrategy) | 1 | 0 | 32 | src/contracts/strategies/StrategyFactoryStorage.sol:StrategyFactoryStorage |
+|--------------------+------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------|
| isBlacklisted | mapping(contract IERC20 => bool) | 2 | 0 | 32 | src/contracts/strategies/StrategyFactoryStorage.sol:StrategyFactoryStorage |
+|--------------------+------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------|
| __gap | uint256[48] | 3 | 0 | 1536 | src/contracts/strategies/StrategyFactoryStorage.sol:StrategyFactoryStorage |
+╰--------------------+------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------╯
+
diff --git a/docs/storage-report/StrategyManager.md b/docs/storage-report/StrategyManager.md
index 8f7e5cb4bd..00d71e7439 100644
--- a/docs/storage-report/StrategyManager.md
+++ b/docs/storage-report/StrategyManager.md
@@ -1,24 +1,51 @@
-| Name | Type | Slot | Offset | Bytes | Contract |
-|---------------------------------------------|------------------------------------------------------------|------|--------|-------|--------------------------------------------------------|
-| _initialized | uint8 | 0 | 0 | 1 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| _initializing | bool | 0 | 1 | 1 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| __gap | uint256[50] | 1 | 0 | 1600 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| _owner | address | 51 | 0 | 20 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| __gap | uint256[49] | 52 | 0 | 1568 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| _status | uint256 | 101 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| __gap | uint256[49] | 102 | 0 | 1568 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| pauserRegistry | contract IPauserRegistry | 151 | 0 | 20 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| _paused | uint256 | 152 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| __gap | uint256[48] | 153 | 0 | 1536 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| _DOMAIN_SEPARATOR | bytes32 | 201 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| nonces | mapping(address => uint256) | 202 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| strategyWhitelister | address | 203 | 0 | 20 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| __deprecated_withdrawalDelayBlocks | uint256 | 204 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| stakerStrategyShares | mapping(address => mapping(contract IStrategy => uint256)) | 205 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| stakerStrategyList | mapping(address => contract IStrategy[]) | 206 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| __deprecated_withdrawalRootPending | mapping(bytes32 => bool) | 207 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| __deprecated_numWithdrawalsQueued | mapping(address => uint256) | 208 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| strategyIsWhitelistedForDeposit | mapping(contract IStrategy => bool) | 209 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| beaconChainETHSharesToDecrementOnWithdrawal | mapping(address => uint256) | 210 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| thirdPartyTransfersForbidden | mapping(contract IStrategy => bool) | 211 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
-| __gap | uint256[39] | 212 | 0 | 1248 | src/contracts/core/StrategyManager.sol:StrategyManager |
+
+╭----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++========================================================================================================================================================================================================+
+| _initialized | uint8 | 0 | 0 | 1 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| _initializing | bool | 0 | 1 | 1 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __gap | uint256[50] | 1 | 0 | 1600 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| _owner | address | 51 | 0 | 20 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __gap | uint256[49] | 52 | 0 | 1568 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| _status | uint256 | 101 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __gap | uint256[49] | 102 | 0 | 1568 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __deprecated_pauserRegistry | contract IPauserRegistry | 151 | 0 | 20 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| _paused | uint256 | 152 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __gap | uint256[48] | 153 | 0 | 1536 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __deprecated_DOMAIN_SEPARATOR | bytes32 | 201 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| nonces | mapping(address => uint256) | 202 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| strategyWhitelister | address | 203 | 0 | 20 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __deprecated_withdrawalDelayBlocks | uint256 | 204 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| stakerDepositShares | mapping(address => mapping(contract IStrategy => uint256)) | 205 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| stakerStrategyList | mapping(address => contract IStrategy[]) | 206 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __deprecated_withdrawalRootPending | mapping(bytes32 => bool) | 207 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __deprecated_numWithdrawalsQueued | mapping(address => uint256) | 208 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| strategyIsWhitelistedForDeposit | mapping(contract IStrategy => bool) | 209 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __deprecated_beaconChainETHSharesToDecrementOnWithdrawal | mapping(address => uint256) | 210 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __deprecated_thirdPartyTransfersForbidden | mapping(contract IStrategy => bool) | 211 | 0 | 32 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| burnableShares | struct EnumerableMap.AddressToUintMap | 212 | 0 | 96 | src/contracts/core/StrategyManager.sol:StrategyManager |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------|
+| __gap | uint256[36] | 215 | 0 | 1152 | src/contracts/core/StrategyManager.sol:StrategyManager |
+╰----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+--------------------------------------------------------╯
+
diff --git a/docs/storage-report/StrategyManagerStorage.md b/docs/storage-report/StrategyManagerStorage.md
index 701045da75..93290950f5 100644
--- a/docs/storage-report/StrategyManagerStorage.md
+++ b/docs/storage-report/StrategyManagerStorage.md
@@ -1,14 +1,31 @@
-| Name | Type | Slot | Offset | Bytes | Contract |
-|---------------------------------------------|------------------------------------------------------------|------|--------|-------|----------------------------------------------------------------------|
-| _DOMAIN_SEPARATOR | bytes32 | 0 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
-| nonces | mapping(address => uint256) | 1 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
-| strategyWhitelister | address | 2 | 0 | 20 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
-| __deprecated_withdrawalDelayBlocks | uint256 | 3 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
-| stakerStrategyShares | mapping(address => mapping(contract IStrategy => uint256)) | 4 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
-| stakerStrategyList | mapping(address => contract IStrategy[]) | 5 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
-| __deprecated_withdrawalRootPending | mapping(bytes32 => bool) | 6 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
-| __deprecated_numWithdrawalsQueued | mapping(address => uint256) | 7 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
-| strategyIsWhitelistedForDeposit | mapping(contract IStrategy => bool) | 8 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
-| beaconChainETHSharesToDecrementOnWithdrawal | mapping(address => uint256) | 9 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
-| thirdPartyTransfersForbidden | mapping(contract IStrategy => bool) | 10 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
-| __gap | uint256[39] | 11 | 0 | 1248 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
+
+╭----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------╮
+| Name | Type | Slot | Offset | Bytes | Contract |
++======================================================================================================================================================================================================================+
+| __deprecated_DOMAIN_SEPARATOR | bytes32 | 0 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| nonces | mapping(address => uint256) | 1 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| strategyWhitelister | address | 2 | 0 | 20 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| __deprecated_withdrawalDelayBlocks | uint256 | 3 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| stakerDepositShares | mapping(address => mapping(contract IStrategy => uint256)) | 4 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| stakerStrategyList | mapping(address => contract IStrategy[]) | 5 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| __deprecated_withdrawalRootPending | mapping(bytes32 => bool) | 6 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| __deprecated_numWithdrawalsQueued | mapping(address => uint256) | 7 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| strategyIsWhitelistedForDeposit | mapping(contract IStrategy => bool) | 8 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| __deprecated_beaconChainETHSharesToDecrementOnWithdrawal | mapping(address => uint256) | 9 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| __deprecated_thirdPartyTransfersForbidden | mapping(contract IStrategy => bool) | 10 | 0 | 32 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| burnableShares | struct EnumerableMap.AddressToUintMap | 11 | 0 | 96 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
+|----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------|
+| __gap | uint256[36] | 14 | 0 | 1152 | src/contracts/core/StrategyManagerStorage.sol:StrategyManagerStorage |
+╰----------------------------------------------------------+------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------╯
+
diff --git a/foundry.toml b/foundry.toml
index 1cdda31243..3aa90dad09 100644
--- a/foundry.toml
+++ b/foundry.toml
@@ -2,11 +2,20 @@
src = 'src'
out = 'out'
libs = ['lib']
-fs_permissions = [{ access = "read-write", path = "./"}, { access = "read-write", path = "/var/folders"}]
+fs_permissions = [{ access = "read-write", path = "./"}]
+show_progress=true
gas_reports = ["*"]
# ignore upgrade testing in scripts by default
no_match_test = "queueUpgrade"
no_match_path = "script/releases/**/*.sol"
+remappings = [
+ "@openzeppelin/=lib/openzeppelin-contracts-v4.9.0/",
+ "@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable-v4.9.0/",
+ "ds-test/=lib/ds-test/src/",
+ "forge-std/=lib/forge-std/src/"
+]
+sparse_mode = true
+internal_expect_revert = true
# A list of ignored solc error codes
@@ -17,7 +26,7 @@ optimizer_runs = 200
# Whether or not to use the Yul intermediate representation compilation pipeline
via_ir = false
# Override the Solidity version (this overrides `auto_detect_solc`)
-solc_version = '0.8.12'
+solc_version = '0.8.27'
[rpc_endpoints]
mainnet = "${RPC_MAINNET}"
diff --git a/lib/forge-std b/lib/forge-std
index fc560fa34f..4f57c59f06 160000
--- a/lib/forge-std
+++ b/lib/forge-std
@@ -1 +1 @@
-Subproject commit fc560fa34fa12a335a50c35d92e55a6628ca467c
+Subproject commit 4f57c59f066a03d13de8c65bb34fca8247f5fcb2
diff --git a/lib/openzeppelin-contracts b/lib/openzeppelin-contracts
deleted file mode 160000
index 3b8b4ba82c..0000000000
--- a/lib/openzeppelin-contracts
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 3b8b4ba82c880c31cd3b96dd5e15741d7e26658e
diff --git a/lib/openzeppelin-contracts-upgradeable b/lib/openzeppelin-contracts-upgradeable
deleted file mode 160000
index 6b9807b063..0000000000
--- a/lib/openzeppelin-contracts-upgradeable
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 6b9807b0639e1dd75e07fa062e9432eb3f35dd8c
diff --git a/lib/zeus-templates b/lib/zeus-templates
index 51a667085a..2a69798c96 160000
--- a/lib/zeus-templates
+++ b/lib/zeus-templates
@@ -1 +1 @@
-Subproject commit 51a667085a4029a311156431c77b57f48f2cae9f
+Subproject commit 2a69798c961b20fc4832207bdfbfc60ce8672a7e
diff --git a/pkg/bindings/AVSDirectory/binding.go b/pkg/bindings/AVSDirectory/binding.go
index 0c982c9df7..a37af907a5 100644
--- a/pkg/bindings/AVSDirectory/binding.go
+++ b/pkg/bindings/AVSDirectory/binding.go
@@ -38,8 +38,8 @@ type ISignatureUtilsSignatureWithSaltAndExpiry struct {
// AVSDirectoryMetaData contains all meta data concerning the AVSDirectory contract.
var AVSDirectoryMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DOMAIN_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"OPERATOR_AVS_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsOperatorStatus\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIAVSDirectory.OperatorAVSRegistrationStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorAVSRegistrationDigestHash\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"cancelSalt\",\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorSaltIsSpent\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AVSMetadataURIUpdated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAVSRegistrationStatusUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIAVSDirectory.OperatorAVSRegistrationStatus\"}],\"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\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]",
- Bin: "0x60c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a2646970667358221220df16b0d1bc7a5c47860be50a74f424bc79695d88c2c061087dacd9f63c62d4f964736f6c634300080c0033",
+ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"OPERATOR_AVS_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"OPERATOR_SET_FORCE_DEREGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"OPERATOR_SET_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsOperatorStatus\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIAVSDirectoryTypes.OperatorAVSRegistrationStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorAVSRegistrationDigestHash\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"cancelSalt\",\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorSaltIsSpent\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"isSpent\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AVSMetadataURIUpdated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAVSRegistrationStatusUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumIAVSDirectoryTypes.OperatorAVSRegistrationStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorAlreadyRegisteredToAVS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotRegisteredToAVS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotRegisteredToEigenLayer\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SaltSpent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]}]",
+ Bin: "0x610100604052348015610010575f5ffd5b5060405161170438038061170483398101604081905261002f916101ed565b81816001600160a01b038116610058576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0524660c052610108604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b60e05261011361011a565b5050610225565b5f54610100900460ff16156101855760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff908116146101d4575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101ea575f5ffd5b50565b5f5f604083850312156101fe575f5ffd5b8251610209816101d6565b602084015190925061021a816101d6565b809150509250929050565b60805160a05160c05160e0516114906102745f395f610b7a01525f610aba01525f8181610340015261063d01525f818161021c015281816103d8015281816104ad0152610b9e01526114905ff3fe608060405234801561000f575f5ffd5b506004361061013d575f3560e01c8063a364f4da116100b4578063dce974b911610079578063dce974b914610314578063df5cf7231461033b578063ec76f44214610362578063f2fde38b14610395578063f698da25146103a8578063fabc1cbc146103b0575f5ffd5b8063a364f4da1461028d578063a98fb355146102a0578063c825fe68146102b3578063cd6dc687146102da578063d79aceab146102ed575f5ffd5b80635c975abb116101055780635c975abb146101fd578063715018a61461020f578063886f1195146102175780638da5cb5b146102565780639926ee7d14610267578063a1060c881461027a575f5ffd5b8063136439dd14610141578063374823b51461015657806349075da314610198578063595c6a67146101d25780635ac86ab7146101da575b5f5ffd5b61015461014f366004611075565b6103c3565b005b6101836101643660046110a0565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101c56101a63660046110ca565b609860209081525f928352604080842090915290825290205460ff1681565b60405161018f9190611115565b610154610498565b6101836101e836600461113b565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161018f565b610154610547565b61023e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161018f565b6033546001600160a01b031661023e565b6101546102753660046111d0565b610558565b6102016102883660046112bd565b610777565b61015461029b366004611300565b6107f6565b6101546102ae36600461131b565b6108db565b6102017f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b6101546102e83660046110a0565b610922565b6102017fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102017f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61023e7f000000000000000000000000000000000000000000000000000000000000000081565b610154610370366004611075565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b6101546103a3366004611300565b610a3e565b610201610ab7565b6101546103be366004611075565b610b9c565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610425573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104499190611389565b61046657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461048b5760405163c61dca5d60e01b815260040160405180910390fd5b61049482610cab565b5050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104fa573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051e9190611389565b61053b57604051631d77d47760e21b815260040160405180910390fd5b6105455f19610cab565b565b61054f610ce8565b6105455f610d42565b6066545f906001908116036105805760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156105b9576105b9611101565b036105d757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561061e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015610682573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a69190611389565b6106c357604051639f88c8af60e01b815260040160405180910390fd5b6106e7836106db853386602001518760400151610777565b84516040860151610d93565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161076a9190611115565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f906107ed9060c00160405160208183030381529060405280519060200120610deb565b95945050505050565b6066545f9060019081160361081e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff16600181111561085757610857611101565b14610875576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916108cf9190611115565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371383836040516109169291906113a8565b60405180910390a25050565b5f54610100900460ff161580801561094057505f54600160ff909116105b806109595750303b15801561095957505f5460ff166001145b6109c15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156109e2575f805461ff0019166101001790555b6109eb82610cab565b6109f483610d42565b8015610a39575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a46610ce8565b6001600160a01b038116610aab5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109b8565b610ab481610d42565b50565b5f7f00000000000000000000000000000000000000000000000000000000000000004614610b775750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1c91906113d6565b6001600160a01b0316336001600160a01b031614610c4d5760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c745760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610916565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6033546001600160a01b031633146105455760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109b8565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610db457604051630819bdcd60e01b815260040160405180910390fd5b610dc86001600160a01b0385168484610e31565b610de557604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610df4610ab7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f5f5f610e3e8585610e8f565b90925090505f816004811115610e5657610e56611101565b148015610e745750856001600160a01b0316826001600160a01b0316145b80610e855750610e85868686610ed1565b9695505050505050565b5f5f8251604103610ec3576020830151604084015160608501515f1a610eb787828585610fb8565b94509450505050610eca565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401610ef99291906113f1565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610f37919061142d565b5f60405180830381855afa9150503d805f8114610f6f576040519150601f19603f3d011682016040523d82523d5f602084013e610f74565b606091505b5091509150818015610f8857506020815110155b8015610e8557508051630b135d3f60e11b90610fad9083016020908101908401611443565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610fed57505f9050600361106c565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561103e573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611066575f6001925092505061106c565b91505f90505b94509492505050565b5f60208284031215611085575f5ffd5b5035919050565b6001600160a01b0381168114610ab4575f5ffd5b5f5f604083850312156110b1575f5ffd5b82356110bc8161108c565b946020939093013593505050565b5f5f604083850312156110db575f5ffd5b82356110e68161108c565b915060208301356110f68161108c565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061113557634e487b7160e01b5f52602160045260245ffd5b91905290565b5f6020828403121561114b575f5ffd5b813560ff8116811461115b575f5ffd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561119957611199611162565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156111c8576111c8611162565b604052919050565b5f5f604083850312156111e1575f5ffd5b82356111ec8161108c565b9150602083013567ffffffffffffffff811115611207575f5ffd5b830160608186031215611218575f5ffd5b611220611176565b813567ffffffffffffffff811115611236575f5ffd5b8201601f81018713611246575f5ffd5b803567ffffffffffffffff81111561126057611260611162565b611273601f8201601f191660200161119f565b818152886020838501011115611287575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f608085870312156112d0575f5ffd5b84356112db8161108c565b935060208501356112eb8161108c565b93969395505050506040820135916060013590565b5f60208284031215611310575f5ffd5b813561115b8161108c565b5f5f6020838503121561132c575f5ffd5b823567ffffffffffffffff811115611342575f5ffd5b8301601f81018513611352575f5ffd5b803567ffffffffffffffff811115611368575f5ffd5b856020828401011115611379575f5ffd5b6020919091019590945092505050565b5f60208284031215611399575f5ffd5b8151801515811461115b575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f602082840312156113e6575f5ffd5b815161115b8161108c565b828152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f82518060208501845e5f920191825250919050565b5f60208284031215611453575f5ffd5b505191905056fea2646970667358221220dac23420e90e0bd5ba6e8cdf6633661ff54956fb8326b8a2b164dca48bbf756964736f6c634300081b0033",
}
// AVSDirectoryABI is the input ABI used to generate the binding from.
@@ -51,7 +51,7 @@ var AVSDirectoryABI = AVSDirectoryMetaData.ABI
var AVSDirectoryBin = AVSDirectoryMetaData.Bin
// DeployAVSDirectory deploys a new Ethereum contract, binding an instance of AVSDirectory to it.
-func DeployAVSDirectory(auth *bind.TransactOpts, backend bind.ContractBackend, _delegation common.Address) (common.Address, *types.Transaction, *AVSDirectory, error) {
+func DeployAVSDirectory(auth *bind.TransactOpts, backend bind.ContractBackend, _delegation common.Address, _pauserRegistry common.Address) (common.Address, *types.Transaction, *AVSDirectory, error) {
parsed, err := AVSDirectoryMetaData.GetAbi()
if err != nil {
return common.Address{}, nil, nil, err
@@ -60,7 +60,7 @@ func DeployAVSDirectory(auth *bind.TransactOpts, backend bind.ContractBackend, _
return common.Address{}, nil, nil, errors.New("GetABI returned nil")
}
- address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AVSDirectoryBin), backend, _delegation)
+ address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AVSDirectoryBin), backend, _delegation, _pauserRegistry)
if err != nil {
return common.Address{}, nil, nil, err
}
@@ -209,12 +209,12 @@ func (_AVSDirectory *AVSDirectoryTransactorRaw) Transact(opts *bind.TransactOpts
return _AVSDirectory.Contract.contract.Transact(opts, method, params...)
}
-// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70.
+// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab.
//
-// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32)
-func (_AVSDirectory *AVSDirectoryCaller) DOMAINTYPEHASH(opts *bind.CallOpts) ([32]byte, error) {
+// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32)
+func (_AVSDirectory *AVSDirectoryCaller) OPERATORAVSREGISTRATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) {
var out []interface{}
- err := _AVSDirectory.contract.Call(opts, &out, "DOMAIN_TYPEHASH")
+ err := _AVSDirectory.contract.Call(opts, &out, "OPERATOR_AVS_REGISTRATION_TYPEHASH")
if err != nil {
return *new([32]byte), err
@@ -226,26 +226,26 @@ func (_AVSDirectory *AVSDirectoryCaller) DOMAINTYPEHASH(opts *bind.CallOpts) ([3
}
-// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70.
+// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab.
//
-// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32)
-func (_AVSDirectory *AVSDirectorySession) DOMAINTYPEHASH() ([32]byte, error) {
- return _AVSDirectory.Contract.DOMAINTYPEHASH(&_AVSDirectory.CallOpts)
+// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32)
+func (_AVSDirectory *AVSDirectorySession) OPERATORAVSREGISTRATIONTYPEHASH() ([32]byte, error) {
+ return _AVSDirectory.Contract.OPERATORAVSREGISTRATIONTYPEHASH(&_AVSDirectory.CallOpts)
}
-// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70.
+// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab.
//
-// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32)
-func (_AVSDirectory *AVSDirectoryCallerSession) DOMAINTYPEHASH() ([32]byte, error) {
- return _AVSDirectory.Contract.DOMAINTYPEHASH(&_AVSDirectory.CallOpts)
+// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32)
+func (_AVSDirectory *AVSDirectoryCallerSession) OPERATORAVSREGISTRATIONTYPEHASH() ([32]byte, error) {
+ return _AVSDirectory.Contract.OPERATORAVSREGISTRATIONTYPEHASH(&_AVSDirectory.CallOpts)
}
-// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab.
+// OPERATORSETFORCEDEREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xdce974b9.
//
-// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32)
-func (_AVSDirectory *AVSDirectoryCaller) OPERATORAVSREGISTRATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) {
+// Solidity: function OPERATOR_SET_FORCE_DEREGISTRATION_TYPEHASH() view returns(bytes32)
+func (_AVSDirectory *AVSDirectoryCaller) OPERATORSETFORCEDEREGISTRATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) {
var out []interface{}
- err := _AVSDirectory.contract.Call(opts, &out, "OPERATOR_AVS_REGISTRATION_TYPEHASH")
+ err := _AVSDirectory.contract.Call(opts, &out, "OPERATOR_SET_FORCE_DEREGISTRATION_TYPEHASH")
if err != nil {
return *new([32]byte), err
@@ -257,26 +257,57 @@ func (_AVSDirectory *AVSDirectoryCaller) OPERATORAVSREGISTRATIONTYPEHASH(opts *b
}
-// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab.
+// OPERATORSETFORCEDEREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xdce974b9.
//
-// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32)
-func (_AVSDirectory *AVSDirectorySession) OPERATORAVSREGISTRATIONTYPEHASH() ([32]byte, error) {
- return _AVSDirectory.Contract.OPERATORAVSREGISTRATIONTYPEHASH(&_AVSDirectory.CallOpts)
+// Solidity: function OPERATOR_SET_FORCE_DEREGISTRATION_TYPEHASH() view returns(bytes32)
+func (_AVSDirectory *AVSDirectorySession) OPERATORSETFORCEDEREGISTRATIONTYPEHASH() ([32]byte, error) {
+ return _AVSDirectory.Contract.OPERATORSETFORCEDEREGISTRATIONTYPEHASH(&_AVSDirectory.CallOpts)
}
-// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab.
+// OPERATORSETFORCEDEREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xdce974b9.
//
-// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32)
-func (_AVSDirectory *AVSDirectoryCallerSession) OPERATORAVSREGISTRATIONTYPEHASH() ([32]byte, error) {
- return _AVSDirectory.Contract.OPERATORAVSREGISTRATIONTYPEHASH(&_AVSDirectory.CallOpts)
+// Solidity: function OPERATOR_SET_FORCE_DEREGISTRATION_TYPEHASH() view returns(bytes32)
+func (_AVSDirectory *AVSDirectoryCallerSession) OPERATORSETFORCEDEREGISTRATIONTYPEHASH() ([32]byte, error) {
+ return _AVSDirectory.Contract.OPERATORSETFORCEDEREGISTRATIONTYPEHASH(&_AVSDirectory.CallOpts)
+}
+
+// OPERATORSETREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xc825fe68.
+//
+// Solidity: function OPERATOR_SET_REGISTRATION_TYPEHASH() view returns(bytes32)
+func (_AVSDirectory *AVSDirectoryCaller) OPERATORSETREGISTRATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) {
+ var out []interface{}
+ err := _AVSDirectory.contract.Call(opts, &out, "OPERATOR_SET_REGISTRATION_TYPEHASH")
+
+ if err != nil {
+ return *new([32]byte), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
+
+ return out0, err
+
+}
+
+// OPERATORSETREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xc825fe68.
+//
+// Solidity: function OPERATOR_SET_REGISTRATION_TYPEHASH() view returns(bytes32)
+func (_AVSDirectory *AVSDirectorySession) OPERATORSETREGISTRATIONTYPEHASH() ([32]byte, error) {
+ return _AVSDirectory.Contract.OPERATORSETREGISTRATIONTYPEHASH(&_AVSDirectory.CallOpts)
+}
+
+// OPERATORSETREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xc825fe68.
+//
+// Solidity: function OPERATOR_SET_REGISTRATION_TYPEHASH() view returns(bytes32)
+func (_AVSDirectory *AVSDirectoryCallerSession) OPERATORSETREGISTRATIONTYPEHASH() ([32]byte, error) {
+ return _AVSDirectory.Contract.OPERATORSETREGISTRATIONTYPEHASH(&_AVSDirectory.CallOpts)
}
// AvsOperatorStatus is a free data retrieval call binding the contract method 0x49075da3.
//
-// Solidity: function avsOperatorStatus(address , address ) view returns(uint8)
-func (_AVSDirectory *AVSDirectoryCaller) AvsOperatorStatus(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (uint8, error) {
+// Solidity: function avsOperatorStatus(address avs, address operator) view returns(uint8)
+func (_AVSDirectory *AVSDirectoryCaller) AvsOperatorStatus(opts *bind.CallOpts, avs common.Address, operator common.Address) (uint8, error) {
var out []interface{}
- err := _AVSDirectory.contract.Call(opts, &out, "avsOperatorStatus", arg0, arg1)
+ err := _AVSDirectory.contract.Call(opts, &out, "avsOperatorStatus", avs, operator)
if err != nil {
return *new(uint8), err
@@ -290,16 +321,16 @@ func (_AVSDirectory *AVSDirectoryCaller) AvsOperatorStatus(opts *bind.CallOpts,
// AvsOperatorStatus is a free data retrieval call binding the contract method 0x49075da3.
//
-// Solidity: function avsOperatorStatus(address , address ) view returns(uint8)
-func (_AVSDirectory *AVSDirectorySession) AvsOperatorStatus(arg0 common.Address, arg1 common.Address) (uint8, error) {
- return _AVSDirectory.Contract.AvsOperatorStatus(&_AVSDirectory.CallOpts, arg0, arg1)
+// Solidity: function avsOperatorStatus(address avs, address operator) view returns(uint8)
+func (_AVSDirectory *AVSDirectorySession) AvsOperatorStatus(avs common.Address, operator common.Address) (uint8, error) {
+ return _AVSDirectory.Contract.AvsOperatorStatus(&_AVSDirectory.CallOpts, avs, operator)
}
// AvsOperatorStatus is a free data retrieval call binding the contract method 0x49075da3.
//
-// Solidity: function avsOperatorStatus(address , address ) view returns(uint8)
-func (_AVSDirectory *AVSDirectoryCallerSession) AvsOperatorStatus(arg0 common.Address, arg1 common.Address) (uint8, error) {
- return _AVSDirectory.Contract.AvsOperatorStatus(&_AVSDirectory.CallOpts, arg0, arg1)
+// Solidity: function avsOperatorStatus(address avs, address operator) view returns(uint8)
+func (_AVSDirectory *AVSDirectoryCallerSession) AvsOperatorStatus(avs common.Address, operator common.Address) (uint8, error) {
+ return _AVSDirectory.Contract.AvsOperatorStatus(&_AVSDirectory.CallOpts, avs, operator)
}
// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88.
@@ -397,10 +428,10 @@ func (_AVSDirectory *AVSDirectoryCallerSession) DomainSeparator() ([32]byte, err
// OperatorSaltIsSpent is a free data retrieval call binding the contract method 0x374823b5.
//
-// Solidity: function operatorSaltIsSpent(address , bytes32 ) view returns(bool)
-func (_AVSDirectory *AVSDirectoryCaller) OperatorSaltIsSpent(opts *bind.CallOpts, arg0 common.Address, arg1 [32]byte) (bool, error) {
+// Solidity: function operatorSaltIsSpent(address operator, bytes32 salt) view returns(bool isSpent)
+func (_AVSDirectory *AVSDirectoryCaller) OperatorSaltIsSpent(opts *bind.CallOpts, operator common.Address, salt [32]byte) (bool, error) {
var out []interface{}
- err := _AVSDirectory.contract.Call(opts, &out, "operatorSaltIsSpent", arg0, arg1)
+ err := _AVSDirectory.contract.Call(opts, &out, "operatorSaltIsSpent", operator, salt)
if err != nil {
return *new(bool), err
@@ -414,16 +445,16 @@ func (_AVSDirectory *AVSDirectoryCaller) OperatorSaltIsSpent(opts *bind.CallOpts
// OperatorSaltIsSpent is a free data retrieval call binding the contract method 0x374823b5.
//
-// Solidity: function operatorSaltIsSpent(address , bytes32 ) view returns(bool)
-func (_AVSDirectory *AVSDirectorySession) OperatorSaltIsSpent(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _AVSDirectory.Contract.OperatorSaltIsSpent(&_AVSDirectory.CallOpts, arg0, arg1)
+// Solidity: function operatorSaltIsSpent(address operator, bytes32 salt) view returns(bool isSpent)
+func (_AVSDirectory *AVSDirectorySession) OperatorSaltIsSpent(operator common.Address, salt [32]byte) (bool, error) {
+ return _AVSDirectory.Contract.OperatorSaltIsSpent(&_AVSDirectory.CallOpts, operator, salt)
}
// OperatorSaltIsSpent is a free data retrieval call binding the contract method 0x374823b5.
//
-// Solidity: function operatorSaltIsSpent(address , bytes32 ) view returns(bool)
-func (_AVSDirectory *AVSDirectoryCallerSession) OperatorSaltIsSpent(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _AVSDirectory.Contract.OperatorSaltIsSpent(&_AVSDirectory.CallOpts, arg0, arg1)
+// Solidity: function operatorSaltIsSpent(address operator, bytes32 salt) view returns(bool isSpent)
+func (_AVSDirectory *AVSDirectoryCallerSession) OperatorSaltIsSpent(operator common.Address, salt [32]byte) (bool, error) {
+ return _AVSDirectory.Contract.OperatorSaltIsSpent(&_AVSDirectory.CallOpts, operator, salt)
}
// Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
@@ -592,25 +623,25 @@ func (_AVSDirectory *AVSDirectoryTransactorSession) DeregisterOperatorFromAVS(op
return _AVSDirectory.Contract.DeregisterOperatorFromAVS(&_AVSDirectory.TransactOpts, operator)
}
-// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c.
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
//
-// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus) returns()
-func (_AVSDirectory *AVSDirectoryTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
- return _AVSDirectory.contract.Transact(opts, "initialize", initialOwner, _pauserRegistry, initialPausedStatus)
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_AVSDirectory *AVSDirectoryTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _AVSDirectory.contract.Transact(opts, "initialize", initialOwner, initialPausedStatus)
}
-// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c.
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
//
-// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus) returns()
-func (_AVSDirectory *AVSDirectorySession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
- return _AVSDirectory.Contract.Initialize(&_AVSDirectory.TransactOpts, initialOwner, _pauserRegistry, initialPausedStatus)
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_AVSDirectory *AVSDirectorySession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _AVSDirectory.Contract.Initialize(&_AVSDirectory.TransactOpts, initialOwner, initialPausedStatus)
}
-// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c.
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
//
-// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus) returns()
-func (_AVSDirectory *AVSDirectoryTransactorSession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
- return _AVSDirectory.Contract.Initialize(&_AVSDirectory.TransactOpts, initialOwner, _pauserRegistry, initialPausedStatus)
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_AVSDirectory *AVSDirectoryTransactorSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _AVSDirectory.Contract.Initialize(&_AVSDirectory.TransactOpts, initialOwner, initialPausedStatus)
}
// Pause is a paid mutator transaction binding the contract method 0x136439dd.
@@ -697,27 +728,6 @@ func (_AVSDirectory *AVSDirectoryTransactorSession) RenounceOwnership() (*types.
return _AVSDirectory.Contract.RenounceOwnership(&_AVSDirectory.TransactOpts)
}
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_AVSDirectory *AVSDirectoryTransactor) SetPauserRegistry(opts *bind.TransactOpts, newPauserRegistry common.Address) (*types.Transaction, error) {
- return _AVSDirectory.contract.Transact(opts, "setPauserRegistry", newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_AVSDirectory *AVSDirectorySession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _AVSDirectory.Contract.SetPauserRegistry(&_AVSDirectory.TransactOpts, newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_AVSDirectory *AVSDirectoryTransactorSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _AVSDirectory.Contract.SetPauserRegistry(&_AVSDirectory.TransactOpts, newPauserRegistry)
-}
-
// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
//
// Solidity: function transferOwnership(address newOwner) returns()
@@ -1512,141 +1522,6 @@ func (_AVSDirectory *AVSDirectoryFilterer) ParsePaused(log types.Log) (*AVSDirec
return event, nil
}
-// AVSDirectoryPauserRegistrySetIterator is returned from FilterPauserRegistrySet and is used to iterate over the raw logs and unpacked data for PauserRegistrySet events raised by the AVSDirectory contract.
-type AVSDirectoryPauserRegistrySetIterator struct {
- Event *AVSDirectoryPauserRegistrySet // 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 *AVSDirectoryPauserRegistrySetIterator) 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(AVSDirectoryPauserRegistrySet)
- 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(AVSDirectoryPauserRegistrySet)
- 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 *AVSDirectoryPauserRegistrySetIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *AVSDirectoryPauserRegistrySetIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// AVSDirectoryPauserRegistrySet represents a PauserRegistrySet event raised by the AVSDirectory contract.
-type AVSDirectoryPauserRegistrySet struct {
- PauserRegistry common.Address
- NewPauserRegistry common.Address
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterPauserRegistrySet is a free log retrieval operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_AVSDirectory *AVSDirectoryFilterer) FilterPauserRegistrySet(opts *bind.FilterOpts) (*AVSDirectoryPauserRegistrySetIterator, error) {
-
- logs, sub, err := _AVSDirectory.contract.FilterLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return &AVSDirectoryPauserRegistrySetIterator{contract: _AVSDirectory.contract, event: "PauserRegistrySet", logs: logs, sub: sub}, nil
-}
-
-// WatchPauserRegistrySet is a free log subscription operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_AVSDirectory *AVSDirectoryFilterer) WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *AVSDirectoryPauserRegistrySet) (event.Subscription, error) {
-
- logs, sub, err := _AVSDirectory.contract.WatchLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(AVSDirectoryPauserRegistrySet)
- if err := _AVSDirectory.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return err
- }
- event.Raw = log
-
- select {
- case sink <- event:
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- }
- }), nil
-}
-
-// ParsePauserRegistrySet is a log parse operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_AVSDirectory *AVSDirectoryFilterer) ParsePauserRegistrySet(log types.Log) (*AVSDirectoryPauserRegistrySet, error) {
- event := new(AVSDirectoryPauserRegistrySet)
- if err := _AVSDirectory.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
// AVSDirectoryUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the AVSDirectory contract.
type AVSDirectoryUnpausedIterator struct {
Event *AVSDirectoryUnpaused // Event containing the contract specifics and raw log
diff --git a/pkg/bindings/AVSDirectoryStorage/binding.go b/pkg/bindings/AVSDirectoryStorage/binding.go
index 9de79fbc72..9ac3cb91bd 100644
--- a/pkg/bindings/AVSDirectoryStorage/binding.go
+++ b/pkg/bindings/AVSDirectoryStorage/binding.go
@@ -38,7 +38,7 @@ type ISignatureUtilsSignatureWithSaltAndExpiry struct {
// AVSDirectoryStorageMetaData contains all meta data concerning the AVSDirectoryStorage contract.
var AVSDirectoryStorageMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"function\",\"name\":\"DOMAIN_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"OPERATOR_AVS_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsOperatorStatus\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIAVSDirectory.OperatorAVSRegistrationStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorAVSRegistrationDigestHash\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"cancelSalt\",\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorSaltIsSpent\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"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\":\"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\":\"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}]",
+ ABI: "[{\"type\":\"function\",\"name\":\"OPERATOR_AVS_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"OPERATOR_SET_FORCE_DEREGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"OPERATOR_SET_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsOperatorStatus\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIAVSDirectoryTypes.OperatorAVSRegistrationStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorAVSRegistrationDigestHash\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"cancelSalt\",\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorSaltIsSpent\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"isSpent\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"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\":\"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\":\"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\":\"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\":[]}]",
}
// AVSDirectoryStorageABI is the input ABI used to generate the binding from.
@@ -187,12 +187,12 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageTransactorRaw) Transact(opts *bin
return _AVSDirectoryStorage.Contract.contract.Transact(opts, method, params...)
}
-// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70.
+// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab.
//
-// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32)
-func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) DOMAINTYPEHASH(opts *bind.CallOpts) ([32]byte, error) {
+// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32)
+func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) OPERATORAVSREGISTRATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) {
var out []interface{}
- err := _AVSDirectoryStorage.contract.Call(opts, &out, "DOMAIN_TYPEHASH")
+ err := _AVSDirectoryStorage.contract.Call(opts, &out, "OPERATOR_AVS_REGISTRATION_TYPEHASH")
if err != nil {
return *new([32]byte), err
@@ -204,26 +204,26 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) DOMAINTYPEHASH(opts *bind
}
-// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70.
+// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab.
//
-// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32)
-func (_AVSDirectoryStorage *AVSDirectoryStorageSession) DOMAINTYPEHASH() ([32]byte, error) {
- return _AVSDirectoryStorage.Contract.DOMAINTYPEHASH(&_AVSDirectoryStorage.CallOpts)
+// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32)
+func (_AVSDirectoryStorage *AVSDirectoryStorageSession) OPERATORAVSREGISTRATIONTYPEHASH() ([32]byte, error) {
+ return _AVSDirectoryStorage.Contract.OPERATORAVSREGISTRATIONTYPEHASH(&_AVSDirectoryStorage.CallOpts)
}
-// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70.
+// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab.
//
-// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32)
-func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) DOMAINTYPEHASH() ([32]byte, error) {
- return _AVSDirectoryStorage.Contract.DOMAINTYPEHASH(&_AVSDirectoryStorage.CallOpts)
+// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32)
+func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) OPERATORAVSREGISTRATIONTYPEHASH() ([32]byte, error) {
+ return _AVSDirectoryStorage.Contract.OPERATORAVSREGISTRATIONTYPEHASH(&_AVSDirectoryStorage.CallOpts)
}
-// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab.
+// OPERATORSETFORCEDEREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xdce974b9.
//
-// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32)
-func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) OPERATORAVSREGISTRATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) {
+// Solidity: function OPERATOR_SET_FORCE_DEREGISTRATION_TYPEHASH() view returns(bytes32)
+func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) OPERATORSETFORCEDEREGISTRATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) {
var out []interface{}
- err := _AVSDirectoryStorage.contract.Call(opts, &out, "OPERATOR_AVS_REGISTRATION_TYPEHASH")
+ err := _AVSDirectoryStorage.contract.Call(opts, &out, "OPERATOR_SET_FORCE_DEREGISTRATION_TYPEHASH")
if err != nil {
return *new([32]byte), err
@@ -235,26 +235,57 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) OPERATORAVSREGISTRATIONTY
}
-// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab.
+// OPERATORSETFORCEDEREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xdce974b9.
//
-// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32)
-func (_AVSDirectoryStorage *AVSDirectoryStorageSession) OPERATORAVSREGISTRATIONTYPEHASH() ([32]byte, error) {
- return _AVSDirectoryStorage.Contract.OPERATORAVSREGISTRATIONTYPEHASH(&_AVSDirectoryStorage.CallOpts)
+// Solidity: function OPERATOR_SET_FORCE_DEREGISTRATION_TYPEHASH() view returns(bytes32)
+func (_AVSDirectoryStorage *AVSDirectoryStorageSession) OPERATORSETFORCEDEREGISTRATIONTYPEHASH() ([32]byte, error) {
+ return _AVSDirectoryStorage.Contract.OPERATORSETFORCEDEREGISTRATIONTYPEHASH(&_AVSDirectoryStorage.CallOpts)
}
-// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab.
+// OPERATORSETFORCEDEREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xdce974b9.
//
-// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32)
-func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) OPERATORAVSREGISTRATIONTYPEHASH() ([32]byte, error) {
- return _AVSDirectoryStorage.Contract.OPERATORAVSREGISTRATIONTYPEHASH(&_AVSDirectoryStorage.CallOpts)
+// Solidity: function OPERATOR_SET_FORCE_DEREGISTRATION_TYPEHASH() view returns(bytes32)
+func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) OPERATORSETFORCEDEREGISTRATIONTYPEHASH() ([32]byte, error) {
+ return _AVSDirectoryStorage.Contract.OPERATORSETFORCEDEREGISTRATIONTYPEHASH(&_AVSDirectoryStorage.CallOpts)
+}
+
+// OPERATORSETREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xc825fe68.
+//
+// Solidity: function OPERATOR_SET_REGISTRATION_TYPEHASH() view returns(bytes32)
+func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) OPERATORSETREGISTRATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) {
+ var out []interface{}
+ err := _AVSDirectoryStorage.contract.Call(opts, &out, "OPERATOR_SET_REGISTRATION_TYPEHASH")
+
+ if err != nil {
+ return *new([32]byte), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
+
+ return out0, err
+
+}
+
+// OPERATORSETREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xc825fe68.
+//
+// Solidity: function OPERATOR_SET_REGISTRATION_TYPEHASH() view returns(bytes32)
+func (_AVSDirectoryStorage *AVSDirectoryStorageSession) OPERATORSETREGISTRATIONTYPEHASH() ([32]byte, error) {
+ return _AVSDirectoryStorage.Contract.OPERATORSETREGISTRATIONTYPEHASH(&_AVSDirectoryStorage.CallOpts)
+}
+
+// OPERATORSETREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xc825fe68.
+//
+// Solidity: function OPERATOR_SET_REGISTRATION_TYPEHASH() view returns(bytes32)
+func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) OPERATORSETREGISTRATIONTYPEHASH() ([32]byte, error) {
+ return _AVSDirectoryStorage.Contract.OPERATORSETREGISTRATIONTYPEHASH(&_AVSDirectoryStorage.CallOpts)
}
// AvsOperatorStatus is a free data retrieval call binding the contract method 0x49075da3.
//
-// Solidity: function avsOperatorStatus(address , address ) view returns(uint8)
-func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) AvsOperatorStatus(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (uint8, error) {
+// Solidity: function avsOperatorStatus(address avs, address operator) view returns(uint8)
+func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) AvsOperatorStatus(opts *bind.CallOpts, avs common.Address, operator common.Address) (uint8, error) {
var out []interface{}
- err := _AVSDirectoryStorage.contract.Call(opts, &out, "avsOperatorStatus", arg0, arg1)
+ err := _AVSDirectoryStorage.contract.Call(opts, &out, "avsOperatorStatus", avs, operator)
if err != nil {
return *new(uint8), err
@@ -268,16 +299,16 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) AvsOperatorStatus(opts *b
// AvsOperatorStatus is a free data retrieval call binding the contract method 0x49075da3.
//
-// Solidity: function avsOperatorStatus(address , address ) view returns(uint8)
-func (_AVSDirectoryStorage *AVSDirectoryStorageSession) AvsOperatorStatus(arg0 common.Address, arg1 common.Address) (uint8, error) {
- return _AVSDirectoryStorage.Contract.AvsOperatorStatus(&_AVSDirectoryStorage.CallOpts, arg0, arg1)
+// Solidity: function avsOperatorStatus(address avs, address operator) view returns(uint8)
+func (_AVSDirectoryStorage *AVSDirectoryStorageSession) AvsOperatorStatus(avs common.Address, operator common.Address) (uint8, error) {
+ return _AVSDirectoryStorage.Contract.AvsOperatorStatus(&_AVSDirectoryStorage.CallOpts, avs, operator)
}
// AvsOperatorStatus is a free data retrieval call binding the contract method 0x49075da3.
//
-// Solidity: function avsOperatorStatus(address , address ) view returns(uint8)
-func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) AvsOperatorStatus(arg0 common.Address, arg1 common.Address) (uint8, error) {
- return _AVSDirectoryStorage.Contract.AvsOperatorStatus(&_AVSDirectoryStorage.CallOpts, arg0, arg1)
+// Solidity: function avsOperatorStatus(address avs, address operator) view returns(uint8)
+func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) AvsOperatorStatus(avs common.Address, operator common.Address) (uint8, error) {
+ return _AVSDirectoryStorage.Contract.AvsOperatorStatus(&_AVSDirectoryStorage.CallOpts, avs, operator)
}
// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88.
@@ -342,43 +373,12 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) Delegation() (comm
return _AVSDirectoryStorage.Contract.Delegation(&_AVSDirectoryStorage.CallOpts)
}
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
-//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) {
- var out []interface{}
- err := _AVSDirectoryStorage.contract.Call(opts, &out, "domainSeparator")
-
- if err != nil {
- return *new([32]byte), err
- }
-
- out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
-
- return out0, err
-
-}
-
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
-//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_AVSDirectoryStorage *AVSDirectoryStorageSession) DomainSeparator() ([32]byte, error) {
- return _AVSDirectoryStorage.Contract.DomainSeparator(&_AVSDirectoryStorage.CallOpts)
-}
-
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
-//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) DomainSeparator() ([32]byte, error) {
- return _AVSDirectoryStorage.Contract.DomainSeparator(&_AVSDirectoryStorage.CallOpts)
-}
-
// OperatorSaltIsSpent is a free data retrieval call binding the contract method 0x374823b5.
//
-// Solidity: function operatorSaltIsSpent(address , bytes32 ) view returns(bool)
-func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) OperatorSaltIsSpent(opts *bind.CallOpts, arg0 common.Address, arg1 [32]byte) (bool, error) {
+// Solidity: function operatorSaltIsSpent(address operator, bytes32 salt) view returns(bool isSpent)
+func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) OperatorSaltIsSpent(opts *bind.CallOpts, operator common.Address, salt [32]byte) (bool, error) {
var out []interface{}
- err := _AVSDirectoryStorage.contract.Call(opts, &out, "operatorSaltIsSpent", arg0, arg1)
+ err := _AVSDirectoryStorage.contract.Call(opts, &out, "operatorSaltIsSpent", operator, salt)
if err != nil {
return *new(bool), err
@@ -392,16 +392,16 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) OperatorSaltIsSpent(opts
// OperatorSaltIsSpent is a free data retrieval call binding the contract method 0x374823b5.
//
-// Solidity: function operatorSaltIsSpent(address , bytes32 ) view returns(bool)
-func (_AVSDirectoryStorage *AVSDirectoryStorageSession) OperatorSaltIsSpent(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _AVSDirectoryStorage.Contract.OperatorSaltIsSpent(&_AVSDirectoryStorage.CallOpts, arg0, arg1)
+// Solidity: function operatorSaltIsSpent(address operator, bytes32 salt) view returns(bool isSpent)
+func (_AVSDirectoryStorage *AVSDirectoryStorageSession) OperatorSaltIsSpent(operator common.Address, salt [32]byte) (bool, error) {
+ return _AVSDirectoryStorage.Contract.OperatorSaltIsSpent(&_AVSDirectoryStorage.CallOpts, operator, salt)
}
// OperatorSaltIsSpent is a free data retrieval call binding the contract method 0x374823b5.
//
-// Solidity: function operatorSaltIsSpent(address , bytes32 ) view returns(bool)
-func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) OperatorSaltIsSpent(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _AVSDirectoryStorage.Contract.OperatorSaltIsSpent(&_AVSDirectoryStorage.CallOpts, arg0, arg1)
+// Solidity: function operatorSaltIsSpent(address operator, bytes32 salt) view returns(bool isSpent)
+func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) OperatorSaltIsSpent(operator common.Address, salt [32]byte) (bool, error) {
+ return _AVSDirectoryStorage.Contract.OperatorSaltIsSpent(&_AVSDirectoryStorage.CallOpts, operator, salt)
}
// CancelSalt is a paid mutator transaction binding the contract method 0xec76f442.
@@ -446,6 +446,27 @@ func (_AVSDirectoryStorage *AVSDirectoryStorageTransactorSession) DeregisterOper
return _AVSDirectoryStorage.Contract.DeregisterOperatorFromAVS(&_AVSDirectoryStorage.TransactOpts, operator)
}
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_AVSDirectoryStorage *AVSDirectoryStorageTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _AVSDirectoryStorage.contract.Transact(opts, "initialize", initialOwner, initialPausedStatus)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_AVSDirectoryStorage *AVSDirectoryStorageSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _AVSDirectoryStorage.Contract.Initialize(&_AVSDirectoryStorage.TransactOpts, initialOwner, initialPausedStatus)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_AVSDirectoryStorage *AVSDirectoryStorageTransactorSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _AVSDirectoryStorage.Contract.Initialize(&_AVSDirectoryStorage.TransactOpts, initialOwner, initialPausedStatus)
+}
+
// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d.
//
// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns()
diff --git a/pkg/bindings/AllocationManager/binding.go b/pkg/bindings/AllocationManager/binding.go
new file mode 100644
index 0000000000..626018f3ec
--- /dev/null
+++ b/pkg/bindings/AllocationManager/binding.go
@@ -0,0 +1,3807 @@
+// Code generated - DO NOT EDIT.
+// This file is a generated binding and any manual changes will be lost.
+
+package AllocationManager
+
+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
+)
+
+// IAllocationManagerTypesAllocateParams is an auto generated low-level Go binding around an user-defined struct.
+type IAllocationManagerTypesAllocateParams struct {
+ OperatorSet OperatorSet
+ Strategies []common.Address
+ NewMagnitudes []uint64
+}
+
+// IAllocationManagerTypesAllocation is an auto generated low-level Go binding around an user-defined struct.
+type IAllocationManagerTypesAllocation struct {
+ CurrentMagnitude uint64
+ PendingDiff *big.Int
+ EffectBlock uint32
+}
+
+// IAllocationManagerTypesCreateSetParams is an auto generated low-level Go binding around an user-defined struct.
+type IAllocationManagerTypesCreateSetParams struct {
+ OperatorSetId uint32
+ Strategies []common.Address
+}
+
+// IAllocationManagerTypesDeregisterParams is an auto generated low-level Go binding around an user-defined struct.
+type IAllocationManagerTypesDeregisterParams struct {
+ Operator common.Address
+ Avs common.Address
+ OperatorSetIds []uint32
+}
+
+// IAllocationManagerTypesRegisterParams is an auto generated low-level Go binding around an user-defined struct.
+type IAllocationManagerTypesRegisterParams struct {
+ Avs common.Address
+ OperatorSetIds []uint32
+ Data []byte
+}
+
+// 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
+ WadsToSlash []*big.Int
+ Description string
+}
+
+// OperatorSet is an auto generated low-level Go binding around an user-defined struct.
+type OperatorSet struct {
+ Avs common.Address
+ Id uint32
+}
+
+// AllocationManagerMetaData contains all meta data concerning the AllocationManager contract.
+var AllocationManagerMetaData = &bind.MetaData{
+ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_permissionController\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"},{\"name\":\"_DEALLOCATION_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_ALLOCATION_CONFIGURATION_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ALLOCATION_CONFIGURATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEALLOCATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addStrategiesToOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"clearDeallocationQueue\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"numToClear\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.CreateSetParams[]\",\"components\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterFromOperatorSets\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.DeregisterParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatableMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedStake\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocation\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.Allocation\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocations\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getEncumberedMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudesAtBlock\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMemberCount\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMembers\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinimumSlashableStake\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"futureBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"slashableStake\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetCount\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRegisteredSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategiesInOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategyAllocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isMemberOfOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSlashable\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyAllocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.AllocateParams[]\",\"components\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"newMagnitudes\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permissionController\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerForOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.RegisterParams\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slashOperator\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.SlashingParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadsToSlash\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AVSMetadataURIUpdated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AVSRegistrarSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIAVSRegistrar\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationDelaySet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"magnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EncumberedMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"encumberedMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"maxMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAddedToOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSlashed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadSlashed\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"description\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyAddedToOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AlreadyMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Empty\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPermissions\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSnapshotOrdering\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWadToSlash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ModificationAlreadyPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotSlashable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OutOfBounds\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SameMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategiesMustBeInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyAlreadyInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UninitializedAllocationDelay\",\"inputs\":[]}]",
+ Bin: "0x610120604052348015610010575f5ffd5b50604051615bc3380380615bc383398101604081905261002f91610180565b82858383876001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05263ffffffff91821660c0521660e052166101005261008b610095565b50505050506101e9565b5f54610100900460ff16156101005760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161461014f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610165575f5ffd5b50565b805163ffffffff8116811461017b575f5ffd5b919050565b5f5f5f5f5f60a08688031215610194575f5ffd5b855161019f81610151565b60208701519095506101b081610151565b60408701519094506101c181610151565b92506101cf60608701610168565b91506101dd60808701610168565b90509295509295909350565b60805160a05160c05160e0516101005161594961027a5f395f818161043501526133f701525f81816105840152613c4701525f818161034701528181611f37015261262501525f81816107030152818161146e01528181611ad401528181611b3e015281816128ec01526134d601525f81816105ab0152818161082901528181611be3015261306e01526159495ff3fe608060405234801561000f575f5ffd5b5060043610610297575f3560e01c80636e3492b511610161578063adc2e3d9116100ca578063cd6dc68711610084578063cd6dc687146106d8578063d3d96ff4146106eb578063df5cf723146106fe578063f2fde38b14610725578063f605ce0814610738578063fabc1cbc1461074b575f5ffd5b8063adc2e3d91461064a578063b2447af71461065d578063b66bd98914610670578063b9fbaed114610683578063ba1a84e5146106b2578063c221d8ae146106c5575f5ffd5b80638ce648541161011b5780638ce64854146105cd5780638da5cb5b146105ed57806394d7d00c146105fe578063952899ee14610611578063a9333ec814610624578063a982182114610637575f5ffd5b80636e3492b51461053e5780636e875dba14610551578063715018a61461056457806379ae50cd1461056c5780637bc1ef611461057f578063886f1195146105a6575f5ffd5b80634177a87c1161020357806356c483e6116101bd57806356c483e6146104b0578063595c6a67146104c35780635ac86ab7146104cb5780635c975abb146104ee578063670d3ba2146105005780636cfb448114610513575f5ffd5b80634177a87c146104105780634657e26a146104305780634a10ffe5146104575780634b5046ef1461047757806350feea201461048a578063547afb871461049d575f5ffd5b80632981eb77116102545780632981eb77146103425780632b453a9a1461037e5780632bab2c4a1461039e578063304c10cd146103b157806336352057146103dc57806340120dab146103ef575f5ffd5b806310e1b9b81461029b5780631352c3e6146102c4578063136439dd146102e757806315fe5028146102fc578063260dc7581461031c578063261f84e01461032f575b5f5ffd5b6102ae6102a936600461480d565b61075e565b6040516102bb9190614854565b60405180910390f35b6102d76102d2366004614887565b610799565b60405190151581526020016102bb565b6102fa6102f53660046148bb565b610814565b005b61030f61030a3660046148d2565b6108e9565b6040516102bb9190614950565b6102d761032a366004614962565b610a00565b6102fa61033d3660046149bc565b610a31565b6103697f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102bb565b61039161038c366004614aa1565b610cd4565b6040516102bb9190614b44565b6103916103ac366004614ba7565b610cea565b6103c46103bf3660046148d2565b610d89565b6040516001600160a01b0390911681526020016102bb565b6102fa6103ea366004614c2b565b610db8565b6104026103fd366004614c7d565b6115c2565b6040516102bb929190614d0a565b61042361041e366004614962565b61173d565b6040516102bb9190614d67565b6103c47f000000000000000000000000000000000000000000000000000000000000000081565b61046a610465366004614d79565b611761565b6040516102bb9190614dbc565b6102fa610485366004614e07565b611809565b6102fa610498366004614e87565b6118c3565b61046a6104ab366004614ee5565b611a21565b6102fa6104be366004614f27565b611ac9565b6102fa611bce565b6102d76104d9366004614f51565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102bb565b6102d761050e366004614887565b611c7d565b610526610521366004614c7d565b611c8e565b6040516001600160401b0390911681526020016102bb565b6102fa61054c366004614f87565b611ca3565b61042361055f366004614962565b612073565b6102fa612084565b61030f61057a3660046148d2565b612095565b6103697f000000000000000000000000000000000000000000000000000000000000000081565b6103c47f000000000000000000000000000000000000000000000000000000000000000081565b6105e06105db366004614fb8565b61216f565b6040516102bb9190614ffb565b6033546001600160a01b03166103c4565b61046a61060c36600461500d565b61222b565b6102fa61061f366004615068565b612317565b610526610632366004614c7d565b6127de565b6102fa610645366004615211565b61280d565b6102fa61065836600461528f565b61287d565b6104f261066b366004614962565b612bcc565b6102fa61067e366004614e87565b612bee565b6106966106913660046148d2565b612d48565b60408051921515835263ffffffff9091166020830152016102bb565b6104f26106c03660046148d2565b612de2565b6104236106d3366004614887565b612e02565b6102fa6106e63660046152d1565b612e2b565b6102fa6106f9366004614c7d565b612f48565b6103c47f000000000000000000000000000000000000000000000000000000000000000081565b6102fa6107333660046148d2565b612fe7565b610526610746366004614c7d565b613060565b6102fa6107593660046148bb565b61306c565b604080516060810182525f808252602082018190529181018290529061078d8561078786613182565b856131e5565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107bc85613182565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff169282019290925291508061080a5750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610876573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061089a91906152fb565b6108b757604051631d77d47760e21b815260040160405180910390fd5b60665481811681146108dc5760405163c61dca5d60e01b815260040160405180910390fd5b6108e582613351565b5050565b6001600160a01b0381165f908152609d602052604081206060919061090d9061338e565b90505f816001600160401b0381111561092857610928614731565b60405190808252806020026020018201604052801561096c57816020015b604080518082019091525f80825260208201528152602001906001900390816109465790505b5090505f5b828110156109f8576001600160a01b0385165f908152609d602052604090206109d39061099e9083613397565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b8282815181106109e5576109e561531a565b6020908102919091010152600101610971565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061080e9163ffffffff908116906133a216565b82610a3b816133b9565b610a585760405163932d94f760e01b815260040160405180910390fd5b5f5b82811015610ccd575f6040518060400160405280876001600160a01b03168152602001868685818110610a8f57610a8f61531a565b9050602002810190610aa1919061532e565b610aaf90602081019061534c565b63ffffffff168152509050610af9816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f2061346390919063ffffffff16565b610b1657604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610b6c9190615365565b60405180910390a15f610b7e82613182565b90505f5b868685818110610b9457610b9461531a565b9050602002810190610ba6919061532e565b610bb4906020810190615373565b9050811015610cc257610c2a878786818110610bd257610bd261531a565b9050602002810190610be4919061532e565b610bf2906020810190615373565b83818110610c0257610c0261531a565b9050602002016020810190610c1791906148d2565b5f8481526099602052604090209061346e565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610c5f57610c5f61531a565b9050602002810190610c71919061532e565b610c7f906020810190615373565b84818110610c8f57610c8f61531a565b9050602002016020810190610ca491906148d2565b604051610cb29291906153b8565b60405180910390a1600101610b82565b505050600101610a5a565b5050505050565b6060610ce284848443613482565b949350505050565b6060610cf885858585613482565b90505f5b8451811015610d8057610d28858281518110610d1a57610d1a61531a565b602002602001015187610799565b610d78575f5b8451811015610d76575f838381518110610d4a57610d4a61531a565b60200260200101518281518110610d6357610d6361531a565b6020908102919091010152600101610d2e565b505b600101610cfc565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610db15780610792565b5090919050565b606654600190600290811603610de15760405163840a48d560e01b815260040160405180910390fd5b82610deb816133b9565b610e085760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e36919061534c565b63ffffffff1690529050610e4d6060850185615373565b9050610e5c6040860186615373565b905014610e7c576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610eae9163ffffffff908116906133a216565b610ecb57604051631fb1705560e21b815260040160405180910390fd5b610ee1610edb60208601866148d2565b82610799565b610efe5760405163ebbff49760e01b815260040160405180910390fd5b5f610f0c6040860186615373565b90506001600160401b03811115610f2557610f25614731565b604051908082528060200260200182016040528015610f4e578160200160208202803683370190505b5090505f5b610f606040870187615373565b905081101561155457801580610ff35750610f7e6040870187615373565b610f896001846153f2565b818110610f9857610f9861531a565b9050602002016020810190610fad91906148d2565b6001600160a01b0316610fc36040880188615373565b83818110610fd357610fd361531a565b9050602002016020810190610fe891906148d2565b6001600160a01b0316115b61101057604051639f1c805360e01b815260040160405180910390fd5b61101d6060870187615373565b8281811061102d5761102d61531a565b905060200201355f10801561106d5750670de0b6b3a76400006110536060880188615373565b838181106110635761106361531a565b9050602002013511155b61108a57604051631353603160e01b815260040160405180910390fd5b6110e661109a6040880188615373565b838181106110aa576110aa61531a565b90506020020160208101906110bf91906148d2565b60995f6110cb87613182565b81526020019081526020015f2061376f90919063ffffffff16565b611103576040516331bc342760e11b815260040160405180910390fd5b5f8061115561111560208a018a6148d2565b61111e87613182565b61112b60408c018c615373565b8781811061113b5761113b61531a565b905060200201602081019061115091906148d2565b6131e5565b805191935091506001600160401b03165f0361117257505061154c565b5f6111ad61118360608b018b615373565b868181106111935761119361531a565b85516001600160401b031692602090910201359050613790565b83519091506111c86001600160401b038084169083166137a6565b8686815181106111da576111da61531a565b60200260200101818152505081835f018181516111f79190615405565b6001600160401b0316905250835182908590611214908390615405565b6001600160401b0316905250602084018051839190611234908390615405565b6001600160401b031690525060208301515f600f9190910b121561134c575f61129761126360608d018d615373565b888181106112735761127361531a565b90506020020135856020015161128890615424565b6001600160801b031690613790565b9050806001600160401b0316846020018181516112b49190615448565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd6112e860208d018d6148d2565b896112f660408f018f615373565b8a8181106113065761130661531a565b905060200201602081019061131b91906148d2565b61132c885f015189602001516137ba565b8860400151604051611342959493929190615475565b60405180910390a1505b61139e61135c60208c018c6148d2565b61136589613182565b61137260408e018e615373565b898181106113825761138261531a565b905060200201602081019061139791906148d2565b87876137ce565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd6113cc60208c018c6148d2565b886113da60408e018e615373565b898181106113ea576113ea61531a565b90506020020160208101906113ff91906148d2565b865160405161141394939291904390615475565b60405180910390a161146461142b60208c018c6148d2565b61143860408d018d615373565b888181106114485761144861531a565b905060200201602081019061145d91906148d2565b8651613a0e565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663601bb36f6114a060208d018d6148d2565b6114ad60408e018e615373565b898181106114bd576114bd61531a565b90506020020160208101906114d291906148d2565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611531575f5ffd5b505af1158015611543573d5f5f3e3d5ffd5b50505050505050505b600101610f53565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe561158360208701876148d2565b836115916040890189615373565b8561159f60808c018c6154c6565b6040516115b29796959493929190615530565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d6020526040812060609182916115e79061338e565b90505f816001600160401b0381111561160257611602614731565b60405190808252806020026020018201604052801561164657816020015b604080518082019091525f80825260208201528152602001906001900390816116205790505b5090505f826001600160401b0381111561166257611662614731565b6040519080825280602002602001820160405280156116ab57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116805790505b5090505f5b8381101561172e576001600160a01b0388165f908152609d602052604081206116dd9061099e9084613397565b9050808483815181106116f2576116f261531a565b602002602001018190525061170889828a61075e565b83838151811061171a5761171a61531a565b6020908102919091010152506001016116b0565b509093509150505b9250929050565b60605f61079260995f61174f86613182565b81526020019081526020015f20613a90565b60605f83516001600160401b0381111561177d5761177d614731565b6040519080825280602002602001820160405280156117a6578160200160208202803683370190505b5090505f5b84518110156109f8576117d78582815181106117c9576117c961531a565b6020026020010151856127de565b8282815181106117e9576117e961531a565b6001600160401b03909216602092830291909101909101526001016117ab565b6066545f906001908116036118315760405163840a48d560e01b815260040160405180910390fd5b838214611851576040516343714afd60e01b815260040160405180910390fd5b5f5b848110156118ba576118b2878787848181106118715761187161531a565b905060200201602081019061188691906148d2565b8686858181106118985761189861531a565b90506020020160208101906118ad91906155c6565b613a9c565b600101611853565b50505050505050565b836118cd816133b9565b6118ea5760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61191682613182565b9050611957826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f206133a290919063ffffffff16565b61197457604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a1757611993868683818110610c0257610c0261531a565b6119b05760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b838787848181106119e4576119e461531a565b90506020020160208101906119f991906148d2565b604051611a079291906153b8565b60405180910390a1600101611976565b5050505050505050565b60605f82516001600160401b03811115611a3d57611a3d614731565b604051908082528060200260200182016040528015611a66578160200160208202803683370190505b5090505f5b83518110156109f857611a9785858381518110611a8a57611a8a61531a565b60200260200101516127de565b828281518110611aa957611aa961531a565b6001600160401b0390921660209283029190910190910152600101611a6b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611bc457611b02826133b9565b611b1f576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611b83573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ba791906152fb565b611bc45760405163ccea9e6f60e01b815260040160405180910390fd5b6108e58282613ba0565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611c30573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c5491906152fb565b611c7157604051631d77d47760e21b815260040160405180910390fd5b611c7b5f19613351565b565b5f61079283609a5f6110cb86613182565b5f5f611c9a8484613d4c565b95945050505050565b606654600290600490811603611ccc5760405163840a48d560e01b815260040160405180910390fd5b611ce1611cdc60208401846148d2565b6133b9565b80611cfa5750611cfa611cdc60408401602085016148d2565b611d17576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611d266040840184615373565b9050811015611fe8575f6040518060400160405280856020016020810190611d4e91906148d2565b6001600160a01b03168152602001611d696040870187615373565b85818110611d7957611d7961531a565b9050602002016020810190611d8e919061534c565b63ffffffff168152509050611ddb816020015163ffffffff1660985f876020016020810190611dbd91906148d2565b6001600160a01b0316815260208101919091526040015f20906133a2565b611df857604051631fb1705560e21b815260040160405180910390fd5b609e5f611e0860208701876148d2565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611e3183613182565b815260208101919091526040015f205460ff16611e61576040516325131d4f60e01b815260040160405180910390fd5b611e9b611e6d82613182565b609c5f611e7d60208901896148d2565b6001600160a01b0316815260208101919091526040015f2090613ebb565b50611ed3611eac60208601866148d2565b609a5f611eb885613182565b81526020019081526020015f20613ec690919063ffffffff16565b50611ee160208501856148d2565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611f199190615365565b60405180910390a2604080518082019091525f815260208101611f5c7f0000000000000000000000000000000000000000000000000000000000000000436155e7565b63ffffffff169052609e5f611f7460208801886148d2565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611f9d84613182565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611d19565b50611ffc6103bf60408401602085016148d2565b6001600160a01b0316639d8e0c2361201760208501856148d2565b6120246040860186615373565b6040518463ffffffff1660e01b81526004016120429392919061563c565b5f604051808303815f87803b158015612059575f5ffd5b505af192505050801561206a575060015b156108e5575050565b606061080e609a5f61174f85613182565b61208c613eda565b611c7b5f613f34565b6001600160a01b0381165f908152609c60205260408120606091906120b99061338e565b90505f816001600160401b038111156120d4576120d4614731565b60405190808252806020026020018201604052801561211857816020015b604080518082019091525f80825260208201528152602001906001900390816120f25790505b5090505f5b828110156109f8576001600160a01b0385165f908152609c6020526040902061214a9061099e9083613397565b82828151811061215c5761215c61531a565b602090810291909101015260010161211d565b60605f84516001600160401b0381111561218b5761218b614731565b6040519080825280602002602001820160405280156121d457816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816121a95790505b5090505f5b8551811015610d80576122068682815181106121f7576121f761531a565b6020026020010151868661075e565b8282815181106122185761221861531a565b60209081029190910101526001016121d9565b60605f83516001600160401b0381111561224757612247614731565b604051908082528060200260200182016040528015612270578160200160208202803683370190505b5090505f5b8451811015610d80576001600160a01b0386165f90815260a16020526040812086516122e5928792918990869081106122b0576122b061531a565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f20613f8590919063ffffffff16565b8282815181106122f7576122f761531a565b6001600160401b0390921660209283029190910190910152600101612275565b6066545f9060019081160361233f5760405163840a48d560e01b815260040160405180910390fd5b612348836133b9565b612365576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61237186612d48565b91509150816123935760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610ccd578381815181106123b4576123b461531a565b602002602001015160400151518482815181106123d3576123d361531a565b60200260200101516020015151146123fe576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124115761241161531a565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124519163ffffffff908116906133a216565b61246e57604051631fb1705560e21b815260040160405180910390fd5b5f6124798783610799565b90505f5b86848151811061248f5761248f61531a565b602002602001015160200151518110156127d3575f8785815181106124b6576124b661531a565b60200260200101516020015182815181106124d3576124d361531a565b602002602001015190506124ea898261ffff613a9c565b5f5f6124f98b61078788613182565b915091508060200151600f0b5f1461252457604051630d8fcbe360e41b815260040160405180910390fd5b5f61253187858489613f99565b9050612576825f01518c8a8151811061254c5761254c61531a565b60200260200101516040015187815181106125695761256961531a565b6020026020010151613fcf565b600f0b602083018190525f0361259f57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b12156126e3578015612665576126206125c088613182565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b61264a7f0000000000000000000000000000000000000000000000000000000000000000436155e7565b6126559060016155e7565b63ffffffff166040830152612750565b612677836020015183602001516137ba565b6001600160401b031660208401528a518b90899081106126995761269961531a565b60200260200101516040015185815181106126b6576126b661531a565b6020908102919091018101516001600160401b031683525f9083015263ffffffff43166040830152612750565b5f8260200151600f0b131561275057612704836020015183602001516137ba565b6001600160401b03908116602085018190528451909116101561273a57604051636c9be0bf60e01b815260040160405180910390fd5b61274489436155e7565b63ffffffff1660408301525b6127658c61275d89613182565b8686866137ce565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c61279361099e8a613182565b866127a5865f015187602001516137ba565b86604001516040516127bb959493929190615475565b60405180910390a150506001909201915061247d9050565b505050600101612399565b6001600160a01b038083165f90815260a160209081526040808320938516835292905290812061079290613fe6565b82612817816133b9565b6128345760405163932d94f760e01b815260040160405180910390fd5b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713848460405161286f929190615660565b60405180910390a250505050565b6066546002906004908116036128a65760405163840a48d560e01b815260040160405180910390fd5b826128b0816133b9565b6128cd5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015612931573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061295591906152fb565b6129725760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b6129816020850185615373565b9050811015612b4957604080518082019091525f90806129a460208801886148d2565b6001600160a01b031681526020018680602001906129c29190615373565b858181106129d2576129d261531a565b90506020020160208101906129e7919061534c565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612a239291908116906133a216565b612a4057604051631fb1705560e21b815260040160405180910390fd5b612a4a8682610799565b15612a6857604051636c6c6e2760e11b815260040160405180910390fd5b612a91612a7482613182565b6001600160a01b0388165f908152609c6020526040902090613463565b50612abd86609a5f612aa285613182565b81526020019081526020015f2061346e90919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612af79190615365565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612b2284613182565b815260208101919091526040015f20805460ff191691151591909117905550600101612974565b50612b5a6103bf60208501856148d2565b6001600160a01b031663adcf73f785612b766020870187615373565b612b8360408901896154c6565b6040518663ffffffff1660e01b8152600401612ba3959493929190615673565b5f604051808303815f87803b158015612bba575f5ffd5b505af1158015611a17573d5f5f3e3d5ffd5b5f61080e609a5f612bdc85613182565b81526020019081526020015f2061338e565b83612bf8816133b9565b612c155760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612c5492916133a216565b612c7157604051631fb1705560e21b815260040160405180910390fd5b5f612c7b82613182565b90505f5b84811015611a1757612cc4868683818110612c9c57612c9c61531a565b9050602002016020810190612cb191906148d2565b5f84815260996020526040902090613ec6565b612ce1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612d1557612d1561531a565b9050602002016020810190612d2a91906148d2565b604051612d389291906153b8565b60405180910390a1600101612c7f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612dc95750826060015163ffffffff164310155b15612dd8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061080e9061338e565b6001600160a01b0382165f908152609f602052604081206060919061080a908261174f86613182565b5f54610100900460ff1615808015612e4957505f54600160ff909116105b80612e625750303b158015612e6257505f5460ff166001145b612eca5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612eeb575f805461ff0019166101001790555b612ef482613351565b612efd83613f34565b8015612f43575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b81612f52816133b9565b612f6f5760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf8583612fc781610d89565b604080516001600160a01b03938416815292909116602083015201612f3a565b612fef613eda565b6001600160a01b0381166130545760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612ec1565b61305d81613f34565b50565b5f5f610d808484613d4c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130ec91906156b6565b6001600160a01b0316336001600160a01b03161461311d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146131445760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff166040516020016131cd92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261080e906156d1565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a184528685209088168552909252938220929392819061324590613fe6565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff169181018290529192504310156132e7579092509050613349565b6132f8815f015182602001516137ba565b6001600160401b0316815260208101515f600f9190910b121561333657613327826020015182602001516137ba565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61080e825490565b5f6107928383613ff9565b5f8181526001830160205260408120541515610792565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af115801561343f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080e91906152fb565b5f610792838361401f565b5f610792836001600160a01b03841661401f565b606083516001600160401b0381111561349d5761349d614731565b6040519080825280602002602001820160405280156134d057816020015b60608152602001906001900390816134bb5790505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f0e0e67686866040518363ffffffff1660e01b81526004016135229291906156f4565b5f60405180830381865afa15801561353c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526135639190810190615718565b90505f5b8551811015613765575f8682815181106135835761358361531a565b6020026020010151905085516001600160401b038111156135a6576135a6614731565b6040519080825280602002602001820160405280156135cf578160200160208202803683370190505b508483815181106135e2576135e261531a565b60209081029190910101525f5b865181101561375b575f87828151811061360b5761360b61531a565b6020908102919091018101516001600160a01b038086165f90815260a184526040808220928416825291909352822090925061364690613fe6565b9050806001600160401b03165f0361365f575050613753565b5f61366b858d8561075e565b90508863ffffffff16816040015163ffffffff161115801561369357505f8160200151600f0b125b156136b5576136a9815f015182602001516137ba565b6001600160401b031681525b80515f906136d0906001600160401b039081169085166137a6565b9050613717818989815181106136e8576136e861531a565b602002602001015187815181106137015761370161531a565b602002602001015161406b90919063ffffffff16565b8988815181106137295761372961531a565b602002602001015186815181106137425761374261531a565b602002602001018181525050505050505b6001016135ef565b5050600101613567565b5050949350505050565b6001600160a01b0381165f9081526001830160205260408120541515610792565b5f6107928383670de0b6b3a7640000600161407f565b5f61079283670de0b6b3a7640000846140d8565b5f610792826001600160401b038516615448565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b0390811691161461389457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613976576001600160a01b0385165f908152609f60209081526040808320878452909152902061394e908461346e565b506001600160a01b0385165f908152609d602052604090206139709085613463565b50610ccd565b80516001600160401b03165f03610ccd576001600160a01b0385165f908152609f6020908152604080832087845290915290206139b39084613ec6565b506001600160a01b0385165f908152609f6020908152604080832087845290915290206139df9061338e565b5f03610ccd576001600160a01b0385165f908152609d60205260409020613a069085613ebb565b505050505050565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613a3d9043836141bd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c90606001612f3a565b60605f610792836141d1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613ae657508261ffff1682105b15610ccd576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613b1a9061422a565b90505f5f613b298884896131e5565b91509150806040015163ffffffff16431015613b4757505050610ccd565b613b5488848985856137ce565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613b819061427c565b50613b8b85615824565b9450613b968461583c565b9350505050613ad4565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613c1c5750806060015163ffffffff164310155b15613c3657604081015163ffffffff168152600160208201525b63ffffffff82166040820152613c6c7f0000000000000000000000000000000000000000000000000000000000000000436155e7565b613c779060016155e7565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db9101612f3a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b81811015613e77576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613ddf90836142f9565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff16918101829052919250431015613e5a575050613e77565b613e688682602001516137ba565b95505050806001019050613da7565b506001600160a01b038086165f90815260a1602090815260408083209388168352929052208390613ea790613fe6565b613eb19190615405565b9150509250929050565b5f6107928383614368565b5f610792836001600160a01b038416614368565b6033546001600160a01b03163314611c7b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612ec1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107928383670de0b6b3a764000061444b565b5f613faa8460995f6110cb89613182565b8015613fb35750815b8015611c9a57505090516001600160401b031615159392505050565b5f6107926001600160401b03808516908416615851565b5f61080e82670de0b6b3a76400006144a0565b5f825f01828154811061400e5761400e61531a565b905f5260205f200154905092915050565b5f81815260018301602052604081205461406457508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561080e565b505f61080e565b5f6107928383670de0b6b3a76400006140d8565b5f5f61408c8686866140d8565b905060018360028111156140a2576140a261587e565b1480156140be57505f84806140b9576140b9615892565b868809115b15611c9a576140ce6001826158a6565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f0361410f5783828161410557614105615892565b0492505050610792565b8084116141565760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612ec1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b612f4383836001600160401b0384166144d7565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561421e57602002820191905f5260205f20905b81548152602001906001019080831161420a575b50505050509050919050565b5f6142448254600f81810b600160801b909204900b131590565b1561426257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6142968254600f81810b600160801b909204900b131590565b156142b457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f5f61431b614307846145da565b85546143169190600f0b6158b9565b614647565b8454909150600160801b9004600f90810b9082900b1261434e57604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614442575f61438a6001836153f2565b85549091505f9061439d906001906153f2565b90508181146143fc575f865f0182815481106143bb576143bb61531a565b905f5260205f200154905080875f0184815481106143db576143db61531a565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061440d5761440d6158e0565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061080e565b5f91505061080e565b82545f908161445c868683856146b0565b9050801561449657614480866144736001846153f2565b5f91825260209091200190565b54600160201b90046001600160e01b031661078d565b5091949350505050565b81545f9080156144cf576144b9846144736001846153f2565b54600160201b90046001600160e01b031661080a565b509092915050565b8254801561458d575f6144ef856144736001856153f2565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156145415760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff80861691160361458b5782614562866144736001866153f2565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156146435760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612ec1565b5090565b80600f81900b81146146ab5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612ec1565b919050565b5f5b818310156109f8575f6146c58484614703565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156146ef578092506146fd565b6146fa8160016158a6565b93505b506146b2565b5f61471160028484186158f4565b610792908484166158a6565b6001600160a01b038116811461305d575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b038111828210171561476757614767614731565b60405290565b604051601f8201601f191681016001600160401b038111828210171561479557614795614731565b604052919050565b803563ffffffff811681146146ab575f5ffd5b5f604082840312156147c0575f5ffd5b604080519081016001600160401b03811182821017156147e2576147e2614731565b60405290508082356147f38161471d565b81526148016020840161479d565b60208201525092915050565b5f5f5f6080848603121561481f575f5ffd5b833561482a8161471d565b925061483985602086016147b0565b915060608401356148498161471d565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161080e565b5f5f60608385031215614898575f5ffd5b82356148a38161471d565b91506148b284602085016147b0565b90509250929050565b5f602082840312156148cb575f5ffd5b5035919050565b5f602082840312156148e2575f5ffd5b81356107928161471d565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614946576149308683516148ed565b604095909501946020919091019060010161491d565b5093949350505050565b602081525f610792602083018461490b565b5f60408284031215614972575f5ffd5b61079283836147b0565b5f5f83601f84011261498c575f5ffd5b5081356001600160401b038111156149a2575f5ffd5b6020830191508360208260051b8501011115611736575f5ffd5b5f5f5f604084860312156149ce575f5ffd5b83356149d98161471d565b925060208401356001600160401b038111156149f3575f5ffd5b6149ff8682870161497c565b9497909650939450505050565b5f6001600160401b03821115614a2457614a24614731565b5060051b60200190565b5f82601f830112614a3d575f5ffd5b8135614a50614a4b82614a0c565b61476d565b8082825260208201915060208360051b860101925085831115614a71575f5ffd5b602085015b83811015614a97578035614a898161471d565b835260209283019201614a76565b5095945050505050565b5f5f5f60808486031215614ab3575f5ffd5b614abd85856147b0565b925060408401356001600160401b03811115614ad7575f5ffd5b614ae386828701614a2e565b92505060608401356001600160401b03811115614afe575f5ffd5b614b0a86828701614a2e565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614946578151865260209586019590910190600101614b26565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614b9b57603f19878603018452614b86858351614b14565b94506020938401939190910190600101614b6a565b50929695505050505050565b5f5f5f5f60a08587031215614bba575f5ffd5b614bc486866147b0565b935060408501356001600160401b03811115614bde575f5ffd5b614bea87828801614a2e565b93505060608501356001600160401b03811115614c05575f5ffd5b614c1187828801614a2e565b925050614c206080860161479d565b905092959194509250565b5f5f60408385031215614c3c575f5ffd5b8235614c478161471d565b915060208301356001600160401b03811115614c61575f5ffd5b830160a08186031215614c72575f5ffd5b809150509250929050565b5f5f60408385031215614c8e575f5ffd5b8235614c998161471d565b91506020830135614c728161471d565b5f8151808452602084019350602083015f5b8281101561494657614cf486835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614cbb565b604081525f614d1c604083018561490b565b8281036020840152611c9a8185614ca9565b5f8151808452602084019350602083015f5b828110156149465781516001600160a01b0316865260209586019590910190600101614d40565b602081525f6107926020830184614d2e565b5f5f60408385031215614d8a575f5ffd5b82356001600160401b03811115614d9f575f5ffd5b614dab85828601614a2e565b9250506020830135614c728161471d565b602080825282518282018190525f918401906040840190835b81811015614dfc5783516001600160401b0316835260209384019390920191600101614dd5565b509095945050505050565b5f5f5f5f5f60608688031215614e1b575f5ffd5b8535614e268161471d565b945060208601356001600160401b03811115614e40575f5ffd5b614e4c8882890161497c565b90955093505060408601356001600160401b03811115614e6a575f5ffd5b614e768882890161497c565b969995985093965092949392505050565b5f5f5f5f60608587031215614e9a575f5ffd5b8435614ea58161471d565b9350614eb36020860161479d565b925060408501356001600160401b03811115614ecd575f5ffd5b614ed98782880161497c565b95989497509550505050565b5f5f60408385031215614ef6575f5ffd5b8235614f018161471d565b915060208301356001600160401b03811115614f1b575f5ffd5b613eb185828601614a2e565b5f5f60408385031215614f38575f5ffd5b8235614f438161471d565b91506148b26020840161479d565b5f60208284031215614f61575f5ffd5b813560ff81168114610792575f5ffd5b5f60608284031215614f81575f5ffd5b50919050565b5f60208284031215614f97575f5ffd5b81356001600160401b03811115614fac575f5ffd5b61080a84828501614f71565b5f5f5f60808486031215614fca575f5ffd5b83356001600160401b03811115614fdf575f5ffd5b614feb86828701614a2e565b93505061483985602086016147b0565b602081525f6107926020830184614ca9565b5f5f5f6060848603121561501f575f5ffd5b833561502a8161471d565b925060208401356001600160401b03811115615044575f5ffd5b61505086828701614a2e565b92505061505f6040850161479d565b90509250925092565b5f5f60408385031215615079575f5ffd5b82356150848161471d565b915060208301356001600160401b0381111561509e575f5ffd5b8301601f810185136150ae575f5ffd5b80356150bc614a4b82614a0c565b8082825260208201915060208360051b8501019250878311156150dd575f5ffd5b602084015b838110156152025780356001600160401b038111156150ff575f5ffd5b85016080818b03601f19011215615114575f5ffd5b61511c614745565b6151298b602084016147b0565b815260608201356001600160401b03811115615143575f5ffd5b6151528c602083860101614a2e565b60208301525060808201356001600160401b03811115615170575f5ffd5b6020818401019250508a601f830112615187575f5ffd5b8135615195614a4b82614a0c565b8082825260208201915060208360051b86010192508d8311156151b6575f5ffd5b6020850194505b828510156151ec5784356001600160401b03811681146151db575f5ffd5b8252602094850194909101906151bd565b60408401525050845250602092830192016150e2565b50809450505050509250929050565b5f5f5f60408486031215615223575f5ffd5b833561522e8161471d565b925060208401356001600160401b03811115615248575f5ffd5b8401601f81018613615258575f5ffd5b80356001600160401b0381111561526d575f5ffd5b86602082840101111561527e575f5ffd5b939660209190910195509293505050565b5f5f604083850312156152a0575f5ffd5b82356152ab8161471d565b915060208301356001600160401b038111156152c5575f5ffd5b613eb185828601614f71565b5f5f604083850312156152e2575f5ffd5b82356152ed8161471d565b946020939093013593505050565b5f6020828403121561530b575f5ffd5b81518015158114610792575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e19833603018112615342575f5ffd5b9190910192915050565b5f6020828403121561535c575f5ffd5b6107928261479d565b6040810161080e82846148ed565b5f5f8335601e19843603018112615388575f5ffd5b8301803591506001600160401b038211156153a1575f5ffd5b6020019150600581901b3603821315611736575f5ffd5b606081016153c682856148ed565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561080e5761080e6153de565b6001600160401b03828116828216039081111561080e5761080e6153de565b5f81600f0b60016001607f1b03198103615440576154406153de565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561080e5761080e6153de565b6001600160a01b038616815260c0810161549260208301876148ed565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e198436030181126154db575f5ffd5b8301803591506001600160401b038211156154f4575f5ffd5b602001915036819003821315611736575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c0820161554e602084018a6148ed565b60c060608401528690528660e083015f5b8881101561558f5782356155728161471d565b6001600160a01b031682526020928301929091019060010161555f565b5083810360808501526155a28188614b14565b91505082810360a08401526155b8818587615508565b9a9950505050505050505050565b5f602082840312156155d6575f5ffd5b813561ffff81168114610792575f5ffd5b63ffffffff818116838216019081111561080e5761080e6153de565b8183526020830192505f815f5b848110156149465763ffffffff6156268361479d565b1686526020958601959190910190600101615610565b6001600160a01b03841681526040602082018190525f90611c9a9083018486615603565b602081525f610ce2602083018486615508565b6001600160a01b03861681526060602082018190525f906156979083018688615603565b82810360408401526156aa818587615508565b98975050505050505050565b5f602082840312156156c6575f5ffd5b81516107928161471d565b80516020808301519190811015614f81575f1960209190910360031b1b16919050565b604081525f6157066040830185614d2e565b8281036020840152611c9a8185614d2e565b5f60208284031215615728575f5ffd5b81516001600160401b0381111561573d575f5ffd5b8201601f8101841361574d575f5ffd5b805161575b614a4b82614a0c565b8082825260208201915060208360051b85010192508683111561577c575f5ffd5b602084015b838110156158195780516001600160401b0381111561579e575f5ffd5b8501603f810189136157ae575f5ffd5b60208101516157bf614a4b82614a0c565b808282526020820191506020808460051b8601010192508b8311156157e2575f5ffd5b6040840193505b828410156158045783518252602093840193909101906157e9565b86525050602093840193919091019050615781565b509695505050505050565b5f60018201615835576158356153de565b5060010190565b5f8161584a5761584a6153de565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561080e5761080e6153de565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561080e5761080e6153de565b8082018281125f8312801582168215821617156158d8576158d86153de565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f8261590e57634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220e8ca7d40cd0cf27e53eb080873f06137efd0ae4dfd7443d78e87c38cd40c571d64736f6c634300081b0033",
+}
+
+// AllocationManagerABI is the input ABI used to generate the binding from.
+// Deprecated: Use AllocationManagerMetaData.ABI instead.
+var AllocationManagerABI = AllocationManagerMetaData.ABI
+
+// AllocationManagerBin is the compiled bytecode used for deploying new contracts.
+// Deprecated: Use AllocationManagerMetaData.Bin instead.
+var AllocationManagerBin = AllocationManagerMetaData.Bin
+
+// DeployAllocationManager deploys a new Ethereum contract, binding an instance of AllocationManager to it.
+func DeployAllocationManager(auth *bind.TransactOpts, backend bind.ContractBackend, _delegation common.Address, _pauserRegistry common.Address, _permissionController common.Address, _DEALLOCATION_DELAY uint32, _ALLOCATION_CONFIGURATION_DELAY uint32) (common.Address, *types.Transaction, *AllocationManager, error) {
+ parsed, err := AllocationManagerMetaData.GetAbi()
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ if parsed == nil {
+ return common.Address{}, nil, nil, errors.New("GetABI returned nil")
+ }
+
+ address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AllocationManagerBin), backend, _delegation, _pauserRegistry, _permissionController, _DEALLOCATION_DELAY, _ALLOCATION_CONFIGURATION_DELAY)
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ return address, tx, &AllocationManager{AllocationManagerCaller: AllocationManagerCaller{contract: contract}, AllocationManagerTransactor: AllocationManagerTransactor{contract: contract}, AllocationManagerFilterer: AllocationManagerFilterer{contract: contract}}, nil
+}
+
+// AllocationManager is an auto generated Go binding around an Ethereum contract.
+type AllocationManager struct {
+ AllocationManagerCaller // Read-only binding to the contract
+ AllocationManagerTransactor // Write-only binding to the contract
+ AllocationManagerFilterer // Log filterer for contract events
+}
+
+// AllocationManagerCaller is an auto generated read-only Go binding around an Ethereum contract.
+type AllocationManagerCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// AllocationManagerTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type AllocationManagerTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// AllocationManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
+type AllocationManagerFilterer struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// AllocationManagerSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type AllocationManagerSession struct {
+ Contract *AllocationManager // 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
+}
+
+// AllocationManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type AllocationManagerCallerSession struct {
+ Contract *AllocationManagerCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// AllocationManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type AllocationManagerTransactorSession struct {
+ Contract *AllocationManagerTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// AllocationManagerRaw is an auto generated low-level Go binding around an Ethereum contract.
+type AllocationManagerRaw struct {
+ Contract *AllocationManager // Generic contract binding to access the raw methods on
+}
+
+// AllocationManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type AllocationManagerCallerRaw struct {
+ Contract *AllocationManagerCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// AllocationManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type AllocationManagerTransactorRaw struct {
+ Contract *AllocationManagerTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewAllocationManager creates a new instance of AllocationManager, bound to a specific deployed contract.
+func NewAllocationManager(address common.Address, backend bind.ContractBackend) (*AllocationManager, error) {
+ contract, err := bindAllocationManager(address, backend, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManager{AllocationManagerCaller: AllocationManagerCaller{contract: contract}, AllocationManagerTransactor: AllocationManagerTransactor{contract: contract}, AllocationManagerFilterer: AllocationManagerFilterer{contract: contract}}, nil
+}
+
+// NewAllocationManagerCaller creates a new read-only instance of AllocationManager, bound to a specific deployed contract.
+func NewAllocationManagerCaller(address common.Address, caller bind.ContractCaller) (*AllocationManagerCaller, error) {
+ contract, err := bindAllocationManager(address, caller, nil, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerCaller{contract: contract}, nil
+}
+
+// NewAllocationManagerTransactor creates a new write-only instance of AllocationManager, bound to a specific deployed contract.
+func NewAllocationManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*AllocationManagerTransactor, error) {
+ contract, err := bindAllocationManager(address, nil, transactor, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerTransactor{contract: contract}, nil
+}
+
+// NewAllocationManagerFilterer creates a new log filterer instance of AllocationManager, bound to a specific deployed contract.
+func NewAllocationManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*AllocationManagerFilterer, error) {
+ contract, err := bindAllocationManager(address, nil, nil, filterer)
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerFilterer{contract: contract}, nil
+}
+
+// bindAllocationManager binds a generic wrapper to an already deployed contract.
+func bindAllocationManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
+ parsed, err := AllocationManagerMetaData.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 (_AllocationManager *AllocationManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _AllocationManager.Contract.AllocationManagerCaller.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 (_AllocationManager *AllocationManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _AllocationManager.Contract.AllocationManagerTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_AllocationManager *AllocationManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _AllocationManager.Contract.AllocationManagerTransactor.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 (_AllocationManager *AllocationManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _AllocationManager.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 (_AllocationManager *AllocationManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _AllocationManager.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_AllocationManager *AllocationManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _AllocationManager.Contract.contract.Transact(opts, method, params...)
+}
+
+// ALLOCATIONCONFIGURATIONDELAY is a free data retrieval call binding the contract method 0x7bc1ef61.
+//
+// Solidity: function ALLOCATION_CONFIGURATION_DELAY() view returns(uint32)
+func (_AllocationManager *AllocationManagerCaller) ALLOCATIONCONFIGURATIONDELAY(opts *bind.CallOpts) (uint32, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "ALLOCATION_CONFIGURATION_DELAY")
+
+ if err != nil {
+ return *new(uint32), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32)
+
+ return out0, err
+
+}
+
+// ALLOCATIONCONFIGURATIONDELAY is a free data retrieval call binding the contract method 0x7bc1ef61.
+//
+// Solidity: function ALLOCATION_CONFIGURATION_DELAY() view returns(uint32)
+func (_AllocationManager *AllocationManagerSession) ALLOCATIONCONFIGURATIONDELAY() (uint32, error) {
+ return _AllocationManager.Contract.ALLOCATIONCONFIGURATIONDELAY(&_AllocationManager.CallOpts)
+}
+
+// ALLOCATIONCONFIGURATIONDELAY is a free data retrieval call binding the contract method 0x7bc1ef61.
+//
+// Solidity: function ALLOCATION_CONFIGURATION_DELAY() view returns(uint32)
+func (_AllocationManager *AllocationManagerCallerSession) ALLOCATIONCONFIGURATIONDELAY() (uint32, error) {
+ return _AllocationManager.Contract.ALLOCATIONCONFIGURATIONDELAY(&_AllocationManager.CallOpts)
+}
+
+// DEALLOCATIONDELAY is a free data retrieval call binding the contract method 0x2981eb77.
+//
+// Solidity: function DEALLOCATION_DELAY() view returns(uint32)
+func (_AllocationManager *AllocationManagerCaller) DEALLOCATIONDELAY(opts *bind.CallOpts) (uint32, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "DEALLOCATION_DELAY")
+
+ if err != nil {
+ return *new(uint32), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32)
+
+ return out0, err
+
+}
+
+// DEALLOCATIONDELAY is a free data retrieval call binding the contract method 0x2981eb77.
+//
+// Solidity: function DEALLOCATION_DELAY() view returns(uint32)
+func (_AllocationManager *AllocationManagerSession) DEALLOCATIONDELAY() (uint32, error) {
+ return _AllocationManager.Contract.DEALLOCATIONDELAY(&_AllocationManager.CallOpts)
+}
+
+// DEALLOCATIONDELAY is a free data retrieval call binding the contract method 0x2981eb77.
+//
+// Solidity: function DEALLOCATION_DELAY() view returns(uint32)
+func (_AllocationManager *AllocationManagerCallerSession) DEALLOCATIONDELAY() (uint32, error) {
+ return _AllocationManager.Contract.DEALLOCATIONDELAY(&_AllocationManager.CallOpts)
+}
+
+// Delegation is a free data retrieval call binding the contract method 0xdf5cf723.
+//
+// Solidity: function delegation() view returns(address)
+func (_AllocationManager *AllocationManagerCaller) Delegation(opts *bind.CallOpts) (common.Address, error) {
+ var out []interface{}
+ err := _AllocationManager.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 (_AllocationManager *AllocationManagerSession) Delegation() (common.Address, error) {
+ return _AllocationManager.Contract.Delegation(&_AllocationManager.CallOpts)
+}
+
+// Delegation is a free data retrieval call binding the contract method 0xdf5cf723.
+//
+// Solidity: function delegation() view returns(address)
+func (_AllocationManager *AllocationManagerCallerSession) Delegation() (common.Address, error) {
+ return _AllocationManager.Contract.Delegation(&_AllocationManager.CallOpts)
+}
+
+// GetAVSRegistrar is a free data retrieval call binding the contract method 0x304c10cd.
+//
+// Solidity: function getAVSRegistrar(address avs) view returns(address)
+func (_AllocationManager *AllocationManagerCaller) GetAVSRegistrar(opts *bind.CallOpts, avs common.Address) (common.Address, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "getAVSRegistrar", avs)
+
+ if err != nil {
+ return *new(common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
+
+ return out0, err
+
+}
+
+// GetAVSRegistrar is a free data retrieval call binding the contract method 0x304c10cd.
+//
+// Solidity: function getAVSRegistrar(address avs) view returns(address)
+func (_AllocationManager *AllocationManagerSession) GetAVSRegistrar(avs common.Address) (common.Address, error) {
+ return _AllocationManager.Contract.GetAVSRegistrar(&_AllocationManager.CallOpts, avs)
+}
+
+// GetAVSRegistrar is a free data retrieval call binding the contract method 0x304c10cd.
+//
+// Solidity: function getAVSRegistrar(address avs) view returns(address)
+func (_AllocationManager *AllocationManagerCallerSession) GetAVSRegistrar(avs common.Address) (common.Address, error) {
+ return _AllocationManager.Contract.GetAVSRegistrar(&_AllocationManager.CallOpts, avs)
+}
+
+// GetAllocatableMagnitude is a free data retrieval call binding the contract method 0x6cfb4481.
+//
+// Solidity: function getAllocatableMagnitude(address operator, address strategy) view returns(uint64)
+func (_AllocationManager *AllocationManagerCaller) GetAllocatableMagnitude(opts *bind.CallOpts, operator common.Address, strategy common.Address) (uint64, error) {
+ var out []interface{}
+ err := _AllocationManager.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 (_AllocationManager *AllocationManagerSession) GetAllocatableMagnitude(operator common.Address, strategy common.Address) (uint64, error) {
+ return _AllocationManager.Contract.GetAllocatableMagnitude(&_AllocationManager.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 (_AllocationManager *AllocationManagerCallerSession) GetAllocatableMagnitude(operator common.Address, strategy common.Address) (uint64, error) {
+ return _AllocationManager.Contract.GetAllocatableMagnitude(&_AllocationManager.CallOpts, operator, strategy)
+}
+
+// GetAllocatedSets is a free data retrieval call binding the contract method 0x15fe5028.
+//
+// Solidity: function getAllocatedSets(address operator) view returns((address,uint32)[])
+func (_AllocationManager *AllocationManagerCaller) GetAllocatedSets(opts *bind.CallOpts, operator common.Address) ([]OperatorSet, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "getAllocatedSets", operator)
+
+ if err != nil {
+ return *new([]OperatorSet), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]OperatorSet)).(*[]OperatorSet)
+
+ return out0, err
+
+}
+
+// GetAllocatedSets is a free data retrieval call binding the contract method 0x15fe5028.
+//
+// Solidity: function getAllocatedSets(address operator) view returns((address,uint32)[])
+func (_AllocationManager *AllocationManagerSession) GetAllocatedSets(operator common.Address) ([]OperatorSet, error) {
+ return _AllocationManager.Contract.GetAllocatedSets(&_AllocationManager.CallOpts, operator)
+}
+
+// GetAllocatedSets is a free data retrieval call binding the contract method 0x15fe5028.
+//
+// Solidity: function getAllocatedSets(address operator) view returns((address,uint32)[])
+func (_AllocationManager *AllocationManagerCallerSession) GetAllocatedSets(operator common.Address) ([]OperatorSet, error) {
+ return _AllocationManager.Contract.GetAllocatedSets(&_AllocationManager.CallOpts, operator)
+}
+
+// GetAllocatedStake is a free data retrieval call binding the contract method 0x2b453a9a.
+//
+// Solidity: function getAllocatedStake((address,uint32) operatorSet, address[] operators, address[] strategies) view returns(uint256[][])
+func (_AllocationManager *AllocationManagerCaller) GetAllocatedStake(opts *bind.CallOpts, operatorSet OperatorSet, operators []common.Address, strategies []common.Address) ([][]*big.Int, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "getAllocatedStake", operatorSet, operators, strategies)
+
+ if err != nil {
+ return *new([][]*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([][]*big.Int)).(*[][]*big.Int)
+
+ return out0, err
+
+}
+
+// GetAllocatedStake is a free data retrieval call binding the contract method 0x2b453a9a.
+//
+// Solidity: function getAllocatedStake((address,uint32) operatorSet, address[] operators, address[] strategies) view returns(uint256[][])
+func (_AllocationManager *AllocationManagerSession) GetAllocatedStake(operatorSet OperatorSet, operators []common.Address, strategies []common.Address) ([][]*big.Int, error) {
+ return _AllocationManager.Contract.GetAllocatedStake(&_AllocationManager.CallOpts, operatorSet, operators, strategies)
+}
+
+// GetAllocatedStake is a free data retrieval call binding the contract method 0x2b453a9a.
+//
+// Solidity: function getAllocatedStake((address,uint32) operatorSet, address[] operators, address[] strategies) view returns(uint256[][])
+func (_AllocationManager *AllocationManagerCallerSession) GetAllocatedStake(operatorSet OperatorSet, operators []common.Address, strategies []common.Address) ([][]*big.Int, error) {
+ return _AllocationManager.Contract.GetAllocatedStake(&_AllocationManager.CallOpts, operatorSet, operators, strategies)
+}
+
+// GetAllocatedStrategies is a free data retrieval call binding the contract method 0xc221d8ae.
+//
+// Solidity: function getAllocatedStrategies(address operator, (address,uint32) operatorSet) view returns(address[])
+func (_AllocationManager *AllocationManagerCaller) GetAllocatedStrategies(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet) ([]common.Address, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "getAllocatedStrategies", operator, operatorSet)
+
+ if err != nil {
+ return *new([]common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
+
+ return out0, err
+
+}
+
+// GetAllocatedStrategies is a free data retrieval call binding the contract method 0xc221d8ae.
+//
+// Solidity: function getAllocatedStrategies(address operator, (address,uint32) operatorSet) view returns(address[])
+func (_AllocationManager *AllocationManagerSession) GetAllocatedStrategies(operator common.Address, operatorSet OperatorSet) ([]common.Address, error) {
+ return _AllocationManager.Contract.GetAllocatedStrategies(&_AllocationManager.CallOpts, operator, operatorSet)
+}
+
+// GetAllocatedStrategies is a free data retrieval call binding the contract method 0xc221d8ae.
+//
+// Solidity: function getAllocatedStrategies(address operator, (address,uint32) operatorSet) view returns(address[])
+func (_AllocationManager *AllocationManagerCallerSession) GetAllocatedStrategies(operator common.Address, operatorSet OperatorSet) ([]common.Address, error) {
+ return _AllocationManager.Contract.GetAllocatedStrategies(&_AllocationManager.CallOpts, operator, operatorSet)
+}
+
+// GetAllocation is a free data retrieval call binding the contract method 0x10e1b9b8.
+//
+// Solidity: function getAllocation(address operator, (address,uint32) operatorSet, address strategy) view returns((uint64,int128,uint32))
+func (_AllocationManager *AllocationManagerCaller) GetAllocation(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet, strategy common.Address) (IAllocationManagerTypesAllocation, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "getAllocation", operator, operatorSet, strategy)
+
+ if err != nil {
+ return *new(IAllocationManagerTypesAllocation), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(IAllocationManagerTypesAllocation)).(*IAllocationManagerTypesAllocation)
+
+ return out0, err
+
+}
+
+// GetAllocation is a free data retrieval call binding the contract method 0x10e1b9b8.
+//
+// Solidity: function getAllocation(address operator, (address,uint32) operatorSet, address strategy) view returns((uint64,int128,uint32))
+func (_AllocationManager *AllocationManagerSession) GetAllocation(operator common.Address, operatorSet OperatorSet, strategy common.Address) (IAllocationManagerTypesAllocation, error) {
+ return _AllocationManager.Contract.GetAllocation(&_AllocationManager.CallOpts, operator, operatorSet, strategy)
+}
+
+// GetAllocation is a free data retrieval call binding the contract method 0x10e1b9b8.
+//
+// Solidity: function getAllocation(address operator, (address,uint32) operatorSet, address strategy) view returns((uint64,int128,uint32))
+func (_AllocationManager *AllocationManagerCallerSession) GetAllocation(operator common.Address, operatorSet OperatorSet, strategy common.Address) (IAllocationManagerTypesAllocation, error) {
+ return _AllocationManager.Contract.GetAllocation(&_AllocationManager.CallOpts, operator, operatorSet, strategy)
+}
+
+// GetAllocationDelay is a free data retrieval call binding the contract method 0xb9fbaed1.
+//
+// Solidity: function getAllocationDelay(address operator) view returns(bool, uint32)
+func (_AllocationManager *AllocationManagerCaller) GetAllocationDelay(opts *bind.CallOpts, operator common.Address) (bool, uint32, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "getAllocationDelay", operator)
+
+ if err != nil {
+ return *new(bool), *new(uint32), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
+ out1 := *abi.ConvertType(out[1], new(uint32)).(*uint32)
+
+ return out0, out1, err
+
+}
+
+// GetAllocationDelay is a free data retrieval call binding the contract method 0xb9fbaed1.
+//
+// Solidity: function getAllocationDelay(address operator) view returns(bool, uint32)
+func (_AllocationManager *AllocationManagerSession) GetAllocationDelay(operator common.Address) (bool, uint32, error) {
+ return _AllocationManager.Contract.GetAllocationDelay(&_AllocationManager.CallOpts, operator)
+}
+
+// GetAllocationDelay is a free data retrieval call binding the contract method 0xb9fbaed1.
+//
+// Solidity: function getAllocationDelay(address operator) view returns(bool, uint32)
+func (_AllocationManager *AllocationManagerCallerSession) GetAllocationDelay(operator common.Address) (bool, uint32, error) {
+ return _AllocationManager.Contract.GetAllocationDelay(&_AllocationManager.CallOpts, operator)
+}
+
+// GetAllocations is a free data retrieval call binding the contract method 0x8ce64854.
+//
+// Solidity: function getAllocations(address[] operators, (address,uint32) operatorSet, address strategy) view returns((uint64,int128,uint32)[])
+func (_AllocationManager *AllocationManagerCaller) GetAllocations(opts *bind.CallOpts, operators []common.Address, operatorSet OperatorSet, strategy common.Address) ([]IAllocationManagerTypesAllocation, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "getAllocations", operators, operatorSet, strategy)
+
+ if err != nil {
+ return *new([]IAllocationManagerTypesAllocation), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]IAllocationManagerTypesAllocation)).(*[]IAllocationManagerTypesAllocation)
+
+ return out0, err
+
+}
+
+// GetAllocations is a free data retrieval call binding the contract method 0x8ce64854.
+//
+// Solidity: function getAllocations(address[] operators, (address,uint32) operatorSet, address strategy) view returns((uint64,int128,uint32)[])
+func (_AllocationManager *AllocationManagerSession) GetAllocations(operators []common.Address, operatorSet OperatorSet, strategy common.Address) ([]IAllocationManagerTypesAllocation, error) {
+ return _AllocationManager.Contract.GetAllocations(&_AllocationManager.CallOpts, operators, operatorSet, strategy)
+}
+
+// GetAllocations is a free data retrieval call binding the contract method 0x8ce64854.
+//
+// Solidity: function getAllocations(address[] operators, (address,uint32) operatorSet, address strategy) view returns((uint64,int128,uint32)[])
+func (_AllocationManager *AllocationManagerCallerSession) GetAllocations(operators []common.Address, operatorSet OperatorSet, strategy common.Address) ([]IAllocationManagerTypesAllocation, error) {
+ return _AllocationManager.Contract.GetAllocations(&_AllocationManager.CallOpts, operators, operatorSet, strategy)
+}
+
+// GetEncumberedMagnitude is a free data retrieval call binding the contract method 0xf605ce08.
+//
+// Solidity: function getEncumberedMagnitude(address operator, address strategy) view returns(uint64)
+func (_AllocationManager *AllocationManagerCaller) GetEncumberedMagnitude(opts *bind.CallOpts, operator common.Address, strategy common.Address) (uint64, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "getEncumberedMagnitude", operator, strategy)
+
+ if err != nil {
+ return *new(uint64), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64)
+
+ return out0, err
+
+}
+
+// GetEncumberedMagnitude is a free data retrieval call binding the contract method 0xf605ce08.
+//
+// Solidity: function getEncumberedMagnitude(address operator, address strategy) view returns(uint64)
+func (_AllocationManager *AllocationManagerSession) GetEncumberedMagnitude(operator common.Address, strategy common.Address) (uint64, error) {
+ return _AllocationManager.Contract.GetEncumberedMagnitude(&_AllocationManager.CallOpts, operator, strategy)
+}
+
+// GetEncumberedMagnitude is a free data retrieval call binding the contract method 0xf605ce08.
+//
+// Solidity: function getEncumberedMagnitude(address operator, address strategy) view returns(uint64)
+func (_AllocationManager *AllocationManagerCallerSession) GetEncumberedMagnitude(operator common.Address, strategy common.Address) (uint64, error) {
+ return _AllocationManager.Contract.GetEncumberedMagnitude(&_AllocationManager.CallOpts, operator, strategy)
+}
+
+// GetMaxMagnitude is a free data retrieval call binding the contract method 0xa9333ec8.
+//
+// Solidity: function getMaxMagnitude(address operator, address strategy) view returns(uint64)
+func (_AllocationManager *AllocationManagerCaller) GetMaxMagnitude(opts *bind.CallOpts, operator common.Address, strategy common.Address) (uint64, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "getMaxMagnitude", operator, strategy)
+
+ if err != nil {
+ return *new(uint64), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64)
+
+ return out0, err
+
+}
+
+// GetMaxMagnitude is a free data retrieval call binding the contract method 0xa9333ec8.
+//
+// Solidity: function getMaxMagnitude(address operator, address strategy) view returns(uint64)
+func (_AllocationManager *AllocationManagerSession) GetMaxMagnitude(operator common.Address, strategy common.Address) (uint64, error) {
+ return _AllocationManager.Contract.GetMaxMagnitude(&_AllocationManager.CallOpts, operator, strategy)
+}
+
+// GetMaxMagnitude is a free data retrieval call binding the contract method 0xa9333ec8.
+//
+// Solidity: function getMaxMagnitude(address operator, address strategy) view returns(uint64)
+func (_AllocationManager *AllocationManagerCallerSession) GetMaxMagnitude(operator common.Address, strategy common.Address) (uint64, error) {
+ return _AllocationManager.Contract.GetMaxMagnitude(&_AllocationManager.CallOpts, operator, strategy)
+}
+
+// GetMaxMagnitudes is a free data retrieval call binding the contract method 0x4a10ffe5.
+//
+// Solidity: function getMaxMagnitudes(address[] operators, address strategy) view returns(uint64[])
+func (_AllocationManager *AllocationManagerCaller) GetMaxMagnitudes(opts *bind.CallOpts, operators []common.Address, strategy common.Address) ([]uint64, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "getMaxMagnitudes", operators, strategy)
+
+ 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 0x4a10ffe5.
+//
+// Solidity: function getMaxMagnitudes(address[] operators, address strategy) view returns(uint64[])
+func (_AllocationManager *AllocationManagerSession) GetMaxMagnitudes(operators []common.Address, strategy common.Address) ([]uint64, error) {
+ return _AllocationManager.Contract.GetMaxMagnitudes(&_AllocationManager.CallOpts, operators, strategy)
+}
+
+// GetMaxMagnitudes is a free data retrieval call binding the contract method 0x4a10ffe5.
+//
+// Solidity: function getMaxMagnitudes(address[] operators, address strategy) view returns(uint64[])
+func (_AllocationManager *AllocationManagerCallerSession) GetMaxMagnitudes(operators []common.Address, strategy common.Address) ([]uint64, error) {
+ return _AllocationManager.Contract.GetMaxMagnitudes(&_AllocationManager.CallOpts, operators, strategy)
+}
+
+// GetMaxMagnitudes0 is a free data retrieval call binding the contract method 0x547afb87.
+//
+// Solidity: function getMaxMagnitudes(address operator, address[] strategies) view returns(uint64[])
+func (_AllocationManager *AllocationManagerCaller) GetMaxMagnitudes0(opts *bind.CallOpts, operator common.Address, strategies []common.Address) ([]uint64, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "getMaxMagnitudes0", operator, strategies)
+
+ if err != nil {
+ return *new([]uint64), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]uint64)).(*[]uint64)
+
+ return out0, err
+
+}
+
+// GetMaxMagnitudes0 is a free data retrieval call binding the contract method 0x547afb87.
+//
+// Solidity: function getMaxMagnitudes(address operator, address[] strategies) view returns(uint64[])
+func (_AllocationManager *AllocationManagerSession) GetMaxMagnitudes0(operator common.Address, strategies []common.Address) ([]uint64, error) {
+ return _AllocationManager.Contract.GetMaxMagnitudes0(&_AllocationManager.CallOpts, operator, strategies)
+}
+
+// GetMaxMagnitudes0 is a free data retrieval call binding the contract method 0x547afb87.
+//
+// Solidity: function getMaxMagnitudes(address operator, address[] strategies) view returns(uint64[])
+func (_AllocationManager *AllocationManagerCallerSession) GetMaxMagnitudes0(operator common.Address, strategies []common.Address) ([]uint64, error) {
+ return _AllocationManager.Contract.GetMaxMagnitudes0(&_AllocationManager.CallOpts, operator, strategies)
+}
+
+// GetMaxMagnitudesAtBlock is a free data retrieval call binding the contract method 0x94d7d00c.
+//
+// Solidity: function getMaxMagnitudesAtBlock(address operator, address[] strategies, uint32 blockNumber) view returns(uint64[])
+func (_AllocationManager *AllocationManagerCaller) GetMaxMagnitudesAtBlock(opts *bind.CallOpts, operator common.Address, strategies []common.Address, blockNumber uint32) ([]uint64, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "getMaxMagnitudesAtBlock", operator, strategies, blockNumber)
+
+ if err != nil {
+ return *new([]uint64), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]uint64)).(*[]uint64)
+
+ return out0, err
+
+}
+
+// GetMaxMagnitudesAtBlock is a free data retrieval call binding the contract method 0x94d7d00c.
+//
+// Solidity: function getMaxMagnitudesAtBlock(address operator, address[] strategies, uint32 blockNumber) view returns(uint64[])
+func (_AllocationManager *AllocationManagerSession) GetMaxMagnitudesAtBlock(operator common.Address, strategies []common.Address, blockNumber uint32) ([]uint64, error) {
+ return _AllocationManager.Contract.GetMaxMagnitudesAtBlock(&_AllocationManager.CallOpts, operator, strategies, blockNumber)
+}
+
+// GetMaxMagnitudesAtBlock is a free data retrieval call binding the contract method 0x94d7d00c.
+//
+// Solidity: function getMaxMagnitudesAtBlock(address operator, address[] strategies, uint32 blockNumber) view returns(uint64[])
+func (_AllocationManager *AllocationManagerCallerSession) GetMaxMagnitudesAtBlock(operator common.Address, strategies []common.Address, blockNumber uint32) ([]uint64, error) {
+ return _AllocationManager.Contract.GetMaxMagnitudesAtBlock(&_AllocationManager.CallOpts, operator, strategies, blockNumber)
+}
+
+// GetMemberCount is a free data retrieval call binding the contract method 0xb2447af7.
+//
+// Solidity: function getMemberCount((address,uint32) operatorSet) view returns(uint256)
+func (_AllocationManager *AllocationManagerCaller) GetMemberCount(opts *bind.CallOpts, operatorSet OperatorSet) (*big.Int, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "getMemberCount", operatorSet)
+
+ if err != nil {
+ return *new(*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+
+ return out0, err
+
+}
+
+// GetMemberCount is a free data retrieval call binding the contract method 0xb2447af7.
+//
+// Solidity: function getMemberCount((address,uint32) operatorSet) view returns(uint256)
+func (_AllocationManager *AllocationManagerSession) GetMemberCount(operatorSet OperatorSet) (*big.Int, error) {
+ return _AllocationManager.Contract.GetMemberCount(&_AllocationManager.CallOpts, operatorSet)
+}
+
+// GetMemberCount is a free data retrieval call binding the contract method 0xb2447af7.
+//
+// Solidity: function getMemberCount((address,uint32) operatorSet) view returns(uint256)
+func (_AllocationManager *AllocationManagerCallerSession) GetMemberCount(operatorSet OperatorSet) (*big.Int, error) {
+ return _AllocationManager.Contract.GetMemberCount(&_AllocationManager.CallOpts, operatorSet)
+}
+
+// GetMembers is a free data retrieval call binding the contract method 0x6e875dba.
+//
+// Solidity: function getMembers((address,uint32) operatorSet) view returns(address[])
+func (_AllocationManager *AllocationManagerCaller) GetMembers(opts *bind.CallOpts, operatorSet OperatorSet) ([]common.Address, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "getMembers", operatorSet)
+
+ if err != nil {
+ return *new([]common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
+
+ return out0, err
+
+}
+
+// GetMembers is a free data retrieval call binding the contract method 0x6e875dba.
+//
+// Solidity: function getMembers((address,uint32) operatorSet) view returns(address[])
+func (_AllocationManager *AllocationManagerSession) GetMembers(operatorSet OperatorSet) ([]common.Address, error) {
+ return _AllocationManager.Contract.GetMembers(&_AllocationManager.CallOpts, operatorSet)
+}
+
+// GetMembers is a free data retrieval call binding the contract method 0x6e875dba.
+//
+// Solidity: function getMembers((address,uint32) operatorSet) view returns(address[])
+func (_AllocationManager *AllocationManagerCallerSession) GetMembers(operatorSet OperatorSet) ([]common.Address, error) {
+ return _AllocationManager.Contract.GetMembers(&_AllocationManager.CallOpts, operatorSet)
+}
+
+// GetMinimumSlashableStake is a free data retrieval call binding the contract method 0x2bab2c4a.
+//
+// Solidity: function getMinimumSlashableStake((address,uint32) operatorSet, address[] operators, address[] strategies, uint32 futureBlock) view returns(uint256[][] slashableStake)
+func (_AllocationManager *AllocationManagerCaller) GetMinimumSlashableStake(opts *bind.CallOpts, operatorSet OperatorSet, operators []common.Address, strategies []common.Address, futureBlock uint32) ([][]*big.Int, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "getMinimumSlashableStake", operatorSet, operators, strategies, futureBlock)
+
+ if err != nil {
+ return *new([][]*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([][]*big.Int)).(*[][]*big.Int)
+
+ return out0, err
+
+}
+
+// GetMinimumSlashableStake is a free data retrieval call binding the contract method 0x2bab2c4a.
+//
+// Solidity: function getMinimumSlashableStake((address,uint32) operatorSet, address[] operators, address[] strategies, uint32 futureBlock) view returns(uint256[][] slashableStake)
+func (_AllocationManager *AllocationManagerSession) GetMinimumSlashableStake(operatorSet OperatorSet, operators []common.Address, strategies []common.Address, futureBlock uint32) ([][]*big.Int, error) {
+ return _AllocationManager.Contract.GetMinimumSlashableStake(&_AllocationManager.CallOpts, operatorSet, operators, strategies, futureBlock)
+}
+
+// GetMinimumSlashableStake is a free data retrieval call binding the contract method 0x2bab2c4a.
+//
+// Solidity: function getMinimumSlashableStake((address,uint32) operatorSet, address[] operators, address[] strategies, uint32 futureBlock) view returns(uint256[][] slashableStake)
+func (_AllocationManager *AllocationManagerCallerSession) GetMinimumSlashableStake(operatorSet OperatorSet, operators []common.Address, strategies []common.Address, futureBlock uint32) ([][]*big.Int, error) {
+ return _AllocationManager.Contract.GetMinimumSlashableStake(&_AllocationManager.CallOpts, operatorSet, operators, strategies, futureBlock)
+}
+
+// GetOperatorSetCount is a free data retrieval call binding the contract method 0xba1a84e5.
+//
+// Solidity: function getOperatorSetCount(address avs) view returns(uint256)
+func (_AllocationManager *AllocationManagerCaller) GetOperatorSetCount(opts *bind.CallOpts, avs common.Address) (*big.Int, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "getOperatorSetCount", avs)
+
+ if err != nil {
+ return *new(*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+
+ return out0, err
+
+}
+
+// GetOperatorSetCount is a free data retrieval call binding the contract method 0xba1a84e5.
+//
+// Solidity: function getOperatorSetCount(address avs) view returns(uint256)
+func (_AllocationManager *AllocationManagerSession) GetOperatorSetCount(avs common.Address) (*big.Int, error) {
+ return _AllocationManager.Contract.GetOperatorSetCount(&_AllocationManager.CallOpts, avs)
+}
+
+// GetOperatorSetCount is a free data retrieval call binding the contract method 0xba1a84e5.
+//
+// Solidity: function getOperatorSetCount(address avs) view returns(uint256)
+func (_AllocationManager *AllocationManagerCallerSession) GetOperatorSetCount(avs common.Address) (*big.Int, error) {
+ return _AllocationManager.Contract.GetOperatorSetCount(&_AllocationManager.CallOpts, avs)
+}
+
+// GetRegisteredSets is a free data retrieval call binding the contract method 0x79ae50cd.
+//
+// Solidity: function getRegisteredSets(address operator) view returns((address,uint32)[])
+func (_AllocationManager *AllocationManagerCaller) GetRegisteredSets(opts *bind.CallOpts, operator common.Address) ([]OperatorSet, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "getRegisteredSets", operator)
+
+ if err != nil {
+ return *new([]OperatorSet), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]OperatorSet)).(*[]OperatorSet)
+
+ return out0, err
+
+}
+
+// GetRegisteredSets is a free data retrieval call binding the contract method 0x79ae50cd.
+//
+// Solidity: function getRegisteredSets(address operator) view returns((address,uint32)[])
+func (_AllocationManager *AllocationManagerSession) GetRegisteredSets(operator common.Address) ([]OperatorSet, error) {
+ return _AllocationManager.Contract.GetRegisteredSets(&_AllocationManager.CallOpts, operator)
+}
+
+// GetRegisteredSets is a free data retrieval call binding the contract method 0x79ae50cd.
+//
+// Solidity: function getRegisteredSets(address operator) view returns((address,uint32)[])
+func (_AllocationManager *AllocationManagerCallerSession) GetRegisteredSets(operator common.Address) ([]OperatorSet, error) {
+ return _AllocationManager.Contract.GetRegisteredSets(&_AllocationManager.CallOpts, operator)
+}
+
+// GetStrategiesInOperatorSet is a free data retrieval call binding the contract method 0x4177a87c.
+//
+// Solidity: function getStrategiesInOperatorSet((address,uint32) operatorSet) view returns(address[])
+func (_AllocationManager *AllocationManagerCaller) GetStrategiesInOperatorSet(opts *bind.CallOpts, operatorSet OperatorSet) ([]common.Address, error) {
+ var out []interface{}
+ err := _AllocationManager.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[])
+func (_AllocationManager *AllocationManagerSession) GetStrategiesInOperatorSet(operatorSet OperatorSet) ([]common.Address, error) {
+ return _AllocationManager.Contract.GetStrategiesInOperatorSet(&_AllocationManager.CallOpts, operatorSet)
+}
+
+// GetStrategiesInOperatorSet is a free data retrieval call binding the contract method 0x4177a87c.
+//
+// Solidity: function getStrategiesInOperatorSet((address,uint32) operatorSet) view returns(address[])
+func (_AllocationManager *AllocationManagerCallerSession) GetStrategiesInOperatorSet(operatorSet OperatorSet) ([]common.Address, error) {
+ return _AllocationManager.Contract.GetStrategiesInOperatorSet(&_AllocationManager.CallOpts, operatorSet)
+}
+
+// GetStrategyAllocations is a free data retrieval call binding the contract method 0x40120dab.
+//
+// Solidity: function getStrategyAllocations(address operator, address strategy) view returns((address,uint32)[], (uint64,int128,uint32)[])
+func (_AllocationManager *AllocationManagerCaller) GetStrategyAllocations(opts *bind.CallOpts, operator common.Address, strategy common.Address) ([]OperatorSet, []IAllocationManagerTypesAllocation, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "getStrategyAllocations", operator, strategy)
+
+ if err != nil {
+ return *new([]OperatorSet), *new([]IAllocationManagerTypesAllocation), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]OperatorSet)).(*[]OperatorSet)
+ out1 := *abi.ConvertType(out[1], new([]IAllocationManagerTypesAllocation)).(*[]IAllocationManagerTypesAllocation)
+
+ return out0, out1, err
+
+}
+
+// GetStrategyAllocations is a free data retrieval call binding the contract method 0x40120dab.
+//
+// Solidity: function getStrategyAllocations(address operator, address strategy) view returns((address,uint32)[], (uint64,int128,uint32)[])
+func (_AllocationManager *AllocationManagerSession) GetStrategyAllocations(operator common.Address, strategy common.Address) ([]OperatorSet, []IAllocationManagerTypesAllocation, error) {
+ return _AllocationManager.Contract.GetStrategyAllocations(&_AllocationManager.CallOpts, operator, strategy)
+}
+
+// GetStrategyAllocations is a free data retrieval call binding the contract method 0x40120dab.
+//
+// Solidity: function getStrategyAllocations(address operator, address strategy) view returns((address,uint32)[], (uint64,int128,uint32)[])
+func (_AllocationManager *AllocationManagerCallerSession) GetStrategyAllocations(operator common.Address, strategy common.Address) ([]OperatorSet, []IAllocationManagerTypesAllocation, error) {
+ return _AllocationManager.Contract.GetStrategyAllocations(&_AllocationManager.CallOpts, operator, strategy)
+}
+
+// IsMemberOfOperatorSet is a free data retrieval call binding the contract method 0x670d3ba2.
+//
+// Solidity: function isMemberOfOperatorSet(address operator, (address,uint32) operatorSet) view returns(bool)
+func (_AllocationManager *AllocationManagerCaller) IsMemberOfOperatorSet(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet) (bool, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "isMemberOfOperatorSet", operator, operatorSet)
+
+ if err != nil {
+ return *new(bool), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
+
+ return out0, err
+
+}
+
+// IsMemberOfOperatorSet is a free data retrieval call binding the contract method 0x670d3ba2.
+//
+// Solidity: function isMemberOfOperatorSet(address operator, (address,uint32) operatorSet) view returns(bool)
+func (_AllocationManager *AllocationManagerSession) IsMemberOfOperatorSet(operator common.Address, operatorSet OperatorSet) (bool, error) {
+ return _AllocationManager.Contract.IsMemberOfOperatorSet(&_AllocationManager.CallOpts, operator, operatorSet)
+}
+
+// IsMemberOfOperatorSet is a free data retrieval call binding the contract method 0x670d3ba2.
+//
+// Solidity: function isMemberOfOperatorSet(address operator, (address,uint32) operatorSet) view returns(bool)
+func (_AllocationManager *AllocationManagerCallerSession) IsMemberOfOperatorSet(operator common.Address, operatorSet OperatorSet) (bool, error) {
+ return _AllocationManager.Contract.IsMemberOfOperatorSet(&_AllocationManager.CallOpts, operator, operatorSet)
+}
+
+// IsOperatorSet is a free data retrieval call binding the contract method 0x260dc758.
+//
+// Solidity: function isOperatorSet((address,uint32) operatorSet) view returns(bool)
+func (_AllocationManager *AllocationManagerCaller) IsOperatorSet(opts *bind.CallOpts, operatorSet OperatorSet) (bool, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "isOperatorSet", operatorSet)
+
+ if err != nil {
+ return *new(bool), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
+
+ return out0, err
+
+}
+
+// IsOperatorSet is a free data retrieval call binding the contract method 0x260dc758.
+//
+// Solidity: function isOperatorSet((address,uint32) operatorSet) view returns(bool)
+func (_AllocationManager *AllocationManagerSession) IsOperatorSet(operatorSet OperatorSet) (bool, error) {
+ return _AllocationManager.Contract.IsOperatorSet(&_AllocationManager.CallOpts, operatorSet)
+}
+
+// IsOperatorSet is a free data retrieval call binding the contract method 0x260dc758.
+//
+// Solidity: function isOperatorSet((address,uint32) operatorSet) view returns(bool)
+func (_AllocationManager *AllocationManagerCallerSession) IsOperatorSet(operatorSet OperatorSet) (bool, error) {
+ return _AllocationManager.Contract.IsOperatorSet(&_AllocationManager.CallOpts, 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 (_AllocationManager *AllocationManagerCaller) IsOperatorSlashable(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet) (bool, error) {
+ var out []interface{}
+ err := _AllocationManager.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 (_AllocationManager *AllocationManagerSession) IsOperatorSlashable(operator common.Address, operatorSet OperatorSet) (bool, error) {
+ return _AllocationManager.Contract.IsOperatorSlashable(&_AllocationManager.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 (_AllocationManager *AllocationManagerCallerSession) IsOperatorSlashable(operator common.Address, operatorSet OperatorSet) (bool, error) {
+ return _AllocationManager.Contract.IsOperatorSlashable(&_AllocationManager.CallOpts, operator, operatorSet)
+}
+
+// Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
+//
+// Solidity: function owner() view returns(address)
+func (_AllocationManager *AllocationManagerCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "owner")
+
+ if err != nil {
+ return *new(common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
+
+ return out0, err
+
+}
+
+// Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
+//
+// Solidity: function owner() view returns(address)
+func (_AllocationManager *AllocationManagerSession) Owner() (common.Address, error) {
+ return _AllocationManager.Contract.Owner(&_AllocationManager.CallOpts)
+}
+
+// Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
+//
+// Solidity: function owner() view returns(address)
+func (_AllocationManager *AllocationManagerCallerSession) Owner() (common.Address, error) {
+ return _AllocationManager.Contract.Owner(&_AllocationManager.CallOpts)
+}
+
+// Paused is a free data retrieval call binding the contract method 0x5ac86ab7.
+//
+// Solidity: function paused(uint8 index) view returns(bool)
+func (_AllocationManager *AllocationManagerCaller) Paused(opts *bind.CallOpts, index uint8) (bool, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "paused", index)
+
+ if err != nil {
+ return *new(bool), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
+
+ return out0, err
+
+}
+
+// Paused is a free data retrieval call binding the contract method 0x5ac86ab7.
+//
+// Solidity: function paused(uint8 index) view returns(bool)
+func (_AllocationManager *AllocationManagerSession) Paused(index uint8) (bool, error) {
+ return _AllocationManager.Contract.Paused(&_AllocationManager.CallOpts, index)
+}
+
+// Paused is a free data retrieval call binding the contract method 0x5ac86ab7.
+//
+// Solidity: function paused(uint8 index) view returns(bool)
+func (_AllocationManager *AllocationManagerCallerSession) Paused(index uint8) (bool, error) {
+ return _AllocationManager.Contract.Paused(&_AllocationManager.CallOpts, index)
+}
+
+// Paused0 is a free data retrieval call binding the contract method 0x5c975abb.
+//
+// Solidity: function paused() view returns(uint256)
+func (_AllocationManager *AllocationManagerCaller) Paused0(opts *bind.CallOpts) (*big.Int, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "paused0")
+
+ if err != nil {
+ return *new(*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+
+ return out0, err
+
+}
+
+// Paused0 is a free data retrieval call binding the contract method 0x5c975abb.
+//
+// Solidity: function paused() view returns(uint256)
+func (_AllocationManager *AllocationManagerSession) Paused0() (*big.Int, error) {
+ return _AllocationManager.Contract.Paused0(&_AllocationManager.CallOpts)
+}
+
+// Paused0 is a free data retrieval call binding the contract method 0x5c975abb.
+//
+// Solidity: function paused() view returns(uint256)
+func (_AllocationManager *AllocationManagerCallerSession) Paused0() (*big.Int, error) {
+ return _AllocationManager.Contract.Paused0(&_AllocationManager.CallOpts)
+}
+
+// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195.
+//
+// Solidity: function pauserRegistry() view returns(address)
+func (_AllocationManager *AllocationManagerCaller) PauserRegistry(opts *bind.CallOpts) (common.Address, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "pauserRegistry")
+
+ if err != nil {
+ return *new(common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
+
+ return out0, err
+
+}
+
+// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195.
+//
+// Solidity: function pauserRegistry() view returns(address)
+func (_AllocationManager *AllocationManagerSession) PauserRegistry() (common.Address, error) {
+ return _AllocationManager.Contract.PauserRegistry(&_AllocationManager.CallOpts)
+}
+
+// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195.
+//
+// Solidity: function pauserRegistry() view returns(address)
+func (_AllocationManager *AllocationManagerCallerSession) PauserRegistry() (common.Address, error) {
+ return _AllocationManager.Contract.PauserRegistry(&_AllocationManager.CallOpts)
+}
+
+// PermissionController is a free data retrieval call binding the contract method 0x4657e26a.
+//
+// Solidity: function permissionController() view returns(address)
+func (_AllocationManager *AllocationManagerCaller) PermissionController(opts *bind.CallOpts) (common.Address, error) {
+ var out []interface{}
+ err := _AllocationManager.contract.Call(opts, &out, "permissionController")
+
+ if err != nil {
+ return *new(common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
+
+ return out0, err
+
+}
+
+// PermissionController is a free data retrieval call binding the contract method 0x4657e26a.
+//
+// Solidity: function permissionController() view returns(address)
+func (_AllocationManager *AllocationManagerSession) PermissionController() (common.Address, error) {
+ return _AllocationManager.Contract.PermissionController(&_AllocationManager.CallOpts)
+}
+
+// PermissionController is a free data retrieval call binding the contract method 0x4657e26a.
+//
+// Solidity: function permissionController() view returns(address)
+func (_AllocationManager *AllocationManagerCallerSession) PermissionController() (common.Address, error) {
+ return _AllocationManager.Contract.PermissionController(&_AllocationManager.CallOpts)
+}
+
+// AddStrategiesToOperatorSet is a paid mutator transaction binding the contract method 0x50feea20.
+//
+// Solidity: function addStrategiesToOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns()
+func (_AllocationManager *AllocationManagerTransactor) AddStrategiesToOperatorSet(opts *bind.TransactOpts, avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) {
+ return _AllocationManager.contract.Transact(opts, "addStrategiesToOperatorSet", avs, operatorSetId, strategies)
+}
+
+// AddStrategiesToOperatorSet is a paid mutator transaction binding the contract method 0x50feea20.
+//
+// Solidity: function addStrategiesToOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns()
+func (_AllocationManager *AllocationManagerSession) AddStrategiesToOperatorSet(avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) {
+ return _AllocationManager.Contract.AddStrategiesToOperatorSet(&_AllocationManager.TransactOpts, avs, operatorSetId, strategies)
+}
+
+// AddStrategiesToOperatorSet is a paid mutator transaction binding the contract method 0x50feea20.
+//
+// Solidity: function addStrategiesToOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns()
+func (_AllocationManager *AllocationManagerTransactorSession) AddStrategiesToOperatorSet(avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) {
+ return _AllocationManager.Contract.AddStrategiesToOperatorSet(&_AllocationManager.TransactOpts, avs, operatorSetId, strategies)
+}
+
+// ClearDeallocationQueue is a paid mutator transaction binding the contract method 0x4b5046ef.
+//
+// Solidity: function clearDeallocationQueue(address operator, address[] strategies, uint16[] numToClear) returns()
+func (_AllocationManager *AllocationManagerTransactor) ClearDeallocationQueue(opts *bind.TransactOpts, operator common.Address, strategies []common.Address, numToClear []uint16) (*types.Transaction, error) {
+ return _AllocationManager.contract.Transact(opts, "clearDeallocationQueue", operator, strategies, numToClear)
+}
+
+// ClearDeallocationQueue is a paid mutator transaction binding the contract method 0x4b5046ef.
+//
+// Solidity: function clearDeallocationQueue(address operator, address[] strategies, uint16[] numToClear) returns()
+func (_AllocationManager *AllocationManagerSession) ClearDeallocationQueue(operator common.Address, strategies []common.Address, numToClear []uint16) (*types.Transaction, error) {
+ return _AllocationManager.Contract.ClearDeallocationQueue(&_AllocationManager.TransactOpts, operator, strategies, numToClear)
+}
+
+// ClearDeallocationQueue is a paid mutator transaction binding the contract method 0x4b5046ef.
+//
+// Solidity: function clearDeallocationQueue(address operator, address[] strategies, uint16[] numToClear) returns()
+func (_AllocationManager *AllocationManagerTransactorSession) ClearDeallocationQueue(operator common.Address, strategies []common.Address, numToClear []uint16) (*types.Transaction, error) {
+ return _AllocationManager.Contract.ClearDeallocationQueue(&_AllocationManager.TransactOpts, operator, strategies, numToClear)
+}
+
+// CreateOperatorSets is a paid mutator transaction binding the contract method 0x261f84e0.
+//
+// Solidity: function createOperatorSets(address avs, (uint32,address[])[] params) returns()
+func (_AllocationManager *AllocationManagerTransactor) CreateOperatorSets(opts *bind.TransactOpts, avs common.Address, params []IAllocationManagerTypesCreateSetParams) (*types.Transaction, error) {
+ return _AllocationManager.contract.Transact(opts, "createOperatorSets", avs, params)
+}
+
+// CreateOperatorSets is a paid mutator transaction binding the contract method 0x261f84e0.
+//
+// Solidity: function createOperatorSets(address avs, (uint32,address[])[] params) returns()
+func (_AllocationManager *AllocationManagerSession) CreateOperatorSets(avs common.Address, params []IAllocationManagerTypesCreateSetParams) (*types.Transaction, error) {
+ return _AllocationManager.Contract.CreateOperatorSets(&_AllocationManager.TransactOpts, avs, params)
+}
+
+// CreateOperatorSets is a paid mutator transaction binding the contract method 0x261f84e0.
+//
+// Solidity: function createOperatorSets(address avs, (uint32,address[])[] params) returns()
+func (_AllocationManager *AllocationManagerTransactorSession) CreateOperatorSets(avs common.Address, params []IAllocationManagerTypesCreateSetParams) (*types.Transaction, error) {
+ return _AllocationManager.Contract.CreateOperatorSets(&_AllocationManager.TransactOpts, avs, params)
+}
+
+// DeregisterFromOperatorSets is a paid mutator transaction binding the contract method 0x6e3492b5.
+//
+// Solidity: function deregisterFromOperatorSets((address,address,uint32[]) params) returns()
+func (_AllocationManager *AllocationManagerTransactor) DeregisterFromOperatorSets(opts *bind.TransactOpts, params IAllocationManagerTypesDeregisterParams) (*types.Transaction, error) {
+ return _AllocationManager.contract.Transact(opts, "deregisterFromOperatorSets", params)
+}
+
+// DeregisterFromOperatorSets is a paid mutator transaction binding the contract method 0x6e3492b5.
+//
+// Solidity: function deregisterFromOperatorSets((address,address,uint32[]) params) returns()
+func (_AllocationManager *AllocationManagerSession) DeregisterFromOperatorSets(params IAllocationManagerTypesDeregisterParams) (*types.Transaction, error) {
+ return _AllocationManager.Contract.DeregisterFromOperatorSets(&_AllocationManager.TransactOpts, params)
+}
+
+// DeregisterFromOperatorSets is a paid mutator transaction binding the contract method 0x6e3492b5.
+//
+// Solidity: function deregisterFromOperatorSets((address,address,uint32[]) params) returns()
+func (_AllocationManager *AllocationManagerTransactorSession) DeregisterFromOperatorSets(params IAllocationManagerTypesDeregisterParams) (*types.Transaction, error) {
+ return _AllocationManager.Contract.DeregisterFromOperatorSets(&_AllocationManager.TransactOpts, params)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_AllocationManager *AllocationManagerTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _AllocationManager.contract.Transact(opts, "initialize", initialOwner, initialPausedStatus)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_AllocationManager *AllocationManagerSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _AllocationManager.Contract.Initialize(&_AllocationManager.TransactOpts, initialOwner, initialPausedStatus)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_AllocationManager *AllocationManagerTransactorSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _AllocationManager.Contract.Initialize(&_AllocationManager.TransactOpts, initialOwner, initialPausedStatus)
+}
+
+// ModifyAllocations is a paid mutator transaction binding the contract method 0x952899ee.
+//
+// Solidity: function modifyAllocations(address operator, ((address,uint32),address[],uint64[])[] params) returns()
+func (_AllocationManager *AllocationManagerTransactor) ModifyAllocations(opts *bind.TransactOpts, operator common.Address, params []IAllocationManagerTypesAllocateParams) (*types.Transaction, error) {
+ return _AllocationManager.contract.Transact(opts, "modifyAllocations", operator, params)
+}
+
+// ModifyAllocations is a paid mutator transaction binding the contract method 0x952899ee.
+//
+// Solidity: function modifyAllocations(address operator, ((address,uint32),address[],uint64[])[] params) returns()
+func (_AllocationManager *AllocationManagerSession) ModifyAllocations(operator common.Address, params []IAllocationManagerTypesAllocateParams) (*types.Transaction, error) {
+ return _AllocationManager.Contract.ModifyAllocations(&_AllocationManager.TransactOpts, operator, params)
+}
+
+// ModifyAllocations is a paid mutator transaction binding the contract method 0x952899ee.
+//
+// Solidity: function modifyAllocations(address operator, ((address,uint32),address[],uint64[])[] params) returns()
+func (_AllocationManager *AllocationManagerTransactorSession) ModifyAllocations(operator common.Address, params []IAllocationManagerTypesAllocateParams) (*types.Transaction, error) {
+ return _AllocationManager.Contract.ModifyAllocations(&_AllocationManager.TransactOpts, operator, params)
+}
+
+// Pause is a paid mutator transaction binding the contract method 0x136439dd.
+//
+// Solidity: function pause(uint256 newPausedStatus) returns()
+func (_AllocationManager *AllocationManagerTransactor) Pause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) {
+ return _AllocationManager.contract.Transact(opts, "pause", newPausedStatus)
+}
+
+// Pause is a paid mutator transaction binding the contract method 0x136439dd.
+//
+// Solidity: function pause(uint256 newPausedStatus) returns()
+func (_AllocationManager *AllocationManagerSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) {
+ return _AllocationManager.Contract.Pause(&_AllocationManager.TransactOpts, newPausedStatus)
+}
+
+// Pause is a paid mutator transaction binding the contract method 0x136439dd.
+//
+// Solidity: function pause(uint256 newPausedStatus) returns()
+func (_AllocationManager *AllocationManagerTransactorSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) {
+ return _AllocationManager.Contract.Pause(&_AllocationManager.TransactOpts, newPausedStatus)
+}
+
+// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67.
+//
+// Solidity: function pauseAll() returns()
+func (_AllocationManager *AllocationManagerTransactor) PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _AllocationManager.contract.Transact(opts, "pauseAll")
+}
+
+// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67.
+//
+// Solidity: function pauseAll() returns()
+func (_AllocationManager *AllocationManagerSession) PauseAll() (*types.Transaction, error) {
+ return _AllocationManager.Contract.PauseAll(&_AllocationManager.TransactOpts)
+}
+
+// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67.
+//
+// Solidity: function pauseAll() returns()
+func (_AllocationManager *AllocationManagerTransactorSession) PauseAll() (*types.Transaction, error) {
+ return _AllocationManager.Contract.PauseAll(&_AllocationManager.TransactOpts)
+}
+
+// RegisterForOperatorSets is a paid mutator transaction binding the contract method 0xadc2e3d9.
+//
+// Solidity: function registerForOperatorSets(address operator, (address,uint32[],bytes) params) returns()
+func (_AllocationManager *AllocationManagerTransactor) RegisterForOperatorSets(opts *bind.TransactOpts, operator common.Address, params IAllocationManagerTypesRegisterParams) (*types.Transaction, error) {
+ return _AllocationManager.contract.Transact(opts, "registerForOperatorSets", operator, params)
+}
+
+// RegisterForOperatorSets is a paid mutator transaction binding the contract method 0xadc2e3d9.
+//
+// Solidity: function registerForOperatorSets(address operator, (address,uint32[],bytes) params) returns()
+func (_AllocationManager *AllocationManagerSession) RegisterForOperatorSets(operator common.Address, params IAllocationManagerTypesRegisterParams) (*types.Transaction, error) {
+ return _AllocationManager.Contract.RegisterForOperatorSets(&_AllocationManager.TransactOpts, operator, params)
+}
+
+// RegisterForOperatorSets is a paid mutator transaction binding the contract method 0xadc2e3d9.
+//
+// Solidity: function registerForOperatorSets(address operator, (address,uint32[],bytes) params) returns()
+func (_AllocationManager *AllocationManagerTransactorSession) RegisterForOperatorSets(operator common.Address, params IAllocationManagerTypesRegisterParams) (*types.Transaction, error) {
+ return _AllocationManager.Contract.RegisterForOperatorSets(&_AllocationManager.TransactOpts, operator, params)
+}
+
+// RemoveStrategiesFromOperatorSet is a paid mutator transaction binding the contract method 0xb66bd989.
+//
+// Solidity: function removeStrategiesFromOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns()
+func (_AllocationManager *AllocationManagerTransactor) RemoveStrategiesFromOperatorSet(opts *bind.TransactOpts, avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) {
+ return _AllocationManager.contract.Transact(opts, "removeStrategiesFromOperatorSet", avs, operatorSetId, strategies)
+}
+
+// RemoveStrategiesFromOperatorSet is a paid mutator transaction binding the contract method 0xb66bd989.
+//
+// Solidity: function removeStrategiesFromOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns()
+func (_AllocationManager *AllocationManagerSession) RemoveStrategiesFromOperatorSet(avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) {
+ return _AllocationManager.Contract.RemoveStrategiesFromOperatorSet(&_AllocationManager.TransactOpts, avs, operatorSetId, strategies)
+}
+
+// RemoveStrategiesFromOperatorSet is a paid mutator transaction binding the contract method 0xb66bd989.
+//
+// Solidity: function removeStrategiesFromOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns()
+func (_AllocationManager *AllocationManagerTransactorSession) RemoveStrategiesFromOperatorSet(avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) {
+ return _AllocationManager.Contract.RemoveStrategiesFromOperatorSet(&_AllocationManager.TransactOpts, avs, operatorSetId, strategies)
+}
+
+// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
+//
+// Solidity: function renounceOwnership() returns()
+func (_AllocationManager *AllocationManagerTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _AllocationManager.contract.Transact(opts, "renounceOwnership")
+}
+
+// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
+//
+// Solidity: function renounceOwnership() returns()
+func (_AllocationManager *AllocationManagerSession) RenounceOwnership() (*types.Transaction, error) {
+ return _AllocationManager.Contract.RenounceOwnership(&_AllocationManager.TransactOpts)
+}
+
+// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
+//
+// Solidity: function renounceOwnership() returns()
+func (_AllocationManager *AllocationManagerTransactorSession) RenounceOwnership() (*types.Transaction, error) {
+ return _AllocationManager.Contract.RenounceOwnership(&_AllocationManager.TransactOpts)
+}
+
+// SetAVSRegistrar is a paid mutator transaction binding the contract method 0xd3d96ff4.
+//
+// Solidity: function setAVSRegistrar(address avs, address registrar) returns()
+func (_AllocationManager *AllocationManagerTransactor) SetAVSRegistrar(opts *bind.TransactOpts, avs common.Address, registrar common.Address) (*types.Transaction, error) {
+ return _AllocationManager.contract.Transact(opts, "setAVSRegistrar", avs, registrar)
+}
+
+// SetAVSRegistrar is a paid mutator transaction binding the contract method 0xd3d96ff4.
+//
+// Solidity: function setAVSRegistrar(address avs, address registrar) returns()
+func (_AllocationManager *AllocationManagerSession) SetAVSRegistrar(avs common.Address, registrar common.Address) (*types.Transaction, error) {
+ return _AllocationManager.Contract.SetAVSRegistrar(&_AllocationManager.TransactOpts, avs, registrar)
+}
+
+// SetAVSRegistrar is a paid mutator transaction binding the contract method 0xd3d96ff4.
+//
+// Solidity: function setAVSRegistrar(address avs, address registrar) returns()
+func (_AllocationManager *AllocationManagerTransactorSession) SetAVSRegistrar(avs common.Address, registrar common.Address) (*types.Transaction, error) {
+ return _AllocationManager.Contract.SetAVSRegistrar(&_AllocationManager.TransactOpts, avs, registrar)
+}
+
+// SetAllocationDelay is a paid mutator transaction binding the contract method 0x56c483e6.
+//
+// Solidity: function setAllocationDelay(address operator, uint32 delay) returns()
+func (_AllocationManager *AllocationManagerTransactor) SetAllocationDelay(opts *bind.TransactOpts, operator common.Address, delay uint32) (*types.Transaction, error) {
+ return _AllocationManager.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 (_AllocationManager *AllocationManagerSession) SetAllocationDelay(operator common.Address, delay uint32) (*types.Transaction, error) {
+ return _AllocationManager.Contract.SetAllocationDelay(&_AllocationManager.TransactOpts, operator, delay)
+}
+
+// SetAllocationDelay is a paid mutator transaction binding the contract method 0x56c483e6.
+//
+// Solidity: function setAllocationDelay(address operator, uint32 delay) returns()
+func (_AllocationManager *AllocationManagerTransactorSession) SetAllocationDelay(operator common.Address, delay uint32) (*types.Transaction, error) {
+ return _AllocationManager.Contract.SetAllocationDelay(&_AllocationManager.TransactOpts, operator, delay)
+}
+
+// SlashOperator is a paid mutator transaction binding the contract method 0x36352057.
+//
+// Solidity: function slashOperator(address avs, (address,uint32,address[],uint256[],string) params) returns()
+func (_AllocationManager *AllocationManagerTransactor) SlashOperator(opts *bind.TransactOpts, avs common.Address, params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) {
+ return _AllocationManager.contract.Transact(opts, "slashOperator", avs, params)
+}
+
+// SlashOperator is a paid mutator transaction binding the contract method 0x36352057.
+//
+// Solidity: function slashOperator(address avs, (address,uint32,address[],uint256[],string) params) returns()
+func (_AllocationManager *AllocationManagerSession) SlashOperator(avs common.Address, params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) {
+ return _AllocationManager.Contract.SlashOperator(&_AllocationManager.TransactOpts, avs, params)
+}
+
+// SlashOperator is a paid mutator transaction binding the contract method 0x36352057.
+//
+// Solidity: function slashOperator(address avs, (address,uint32,address[],uint256[],string) params) returns()
+func (_AllocationManager *AllocationManagerTransactorSession) SlashOperator(avs common.Address, params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) {
+ return _AllocationManager.Contract.SlashOperator(&_AllocationManager.TransactOpts, avs, params)
+}
+
+// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
+//
+// Solidity: function transferOwnership(address newOwner) returns()
+func (_AllocationManager *AllocationManagerTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
+ return _AllocationManager.contract.Transact(opts, "transferOwnership", newOwner)
+}
+
+// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
+//
+// Solidity: function transferOwnership(address newOwner) returns()
+func (_AllocationManager *AllocationManagerSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
+ return _AllocationManager.Contract.TransferOwnership(&_AllocationManager.TransactOpts, newOwner)
+}
+
+// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
+//
+// Solidity: function transferOwnership(address newOwner) returns()
+func (_AllocationManager *AllocationManagerTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
+ return _AllocationManager.Contract.TransferOwnership(&_AllocationManager.TransactOpts, newOwner)
+}
+
+// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc.
+//
+// Solidity: function unpause(uint256 newPausedStatus) returns()
+func (_AllocationManager *AllocationManagerTransactor) Unpause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) {
+ return _AllocationManager.contract.Transact(opts, "unpause", newPausedStatus)
+}
+
+// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc.
+//
+// Solidity: function unpause(uint256 newPausedStatus) returns()
+func (_AllocationManager *AllocationManagerSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) {
+ return _AllocationManager.Contract.Unpause(&_AllocationManager.TransactOpts, newPausedStatus)
+}
+
+// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc.
+//
+// Solidity: function unpause(uint256 newPausedStatus) returns()
+func (_AllocationManager *AllocationManagerTransactorSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) {
+ return _AllocationManager.Contract.Unpause(&_AllocationManager.TransactOpts, newPausedStatus)
+}
+
+// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa9821821.
+//
+// Solidity: function updateAVSMetadataURI(address avs, string metadataURI) returns()
+func (_AllocationManager *AllocationManagerTransactor) UpdateAVSMetadataURI(opts *bind.TransactOpts, avs common.Address, metadataURI string) (*types.Transaction, error) {
+ return _AllocationManager.contract.Transact(opts, "updateAVSMetadataURI", avs, metadataURI)
+}
+
+// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa9821821.
+//
+// Solidity: function updateAVSMetadataURI(address avs, string metadataURI) returns()
+func (_AllocationManager *AllocationManagerSession) UpdateAVSMetadataURI(avs common.Address, metadataURI string) (*types.Transaction, error) {
+ return _AllocationManager.Contract.UpdateAVSMetadataURI(&_AllocationManager.TransactOpts, avs, metadataURI)
+}
+
+// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa9821821.
+//
+// Solidity: function updateAVSMetadataURI(address avs, string metadataURI) returns()
+func (_AllocationManager *AllocationManagerTransactorSession) UpdateAVSMetadataURI(avs common.Address, metadataURI string) (*types.Transaction, error) {
+ return _AllocationManager.Contract.UpdateAVSMetadataURI(&_AllocationManager.TransactOpts, avs, metadataURI)
+}
+
+// AllocationManagerAVSMetadataURIUpdatedIterator is returned from FilterAVSMetadataURIUpdated and is used to iterate over the raw logs and unpacked data for AVSMetadataURIUpdated events raised by the AllocationManager contract.
+type AllocationManagerAVSMetadataURIUpdatedIterator struct {
+ Event *AllocationManagerAVSMetadataURIUpdated // 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 *AllocationManagerAVSMetadataURIUpdatedIterator) 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(AllocationManagerAVSMetadataURIUpdated)
+ 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(AllocationManagerAVSMetadataURIUpdated)
+ 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 *AllocationManagerAVSMetadataURIUpdatedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerAVSMetadataURIUpdatedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerAVSMetadataURIUpdated represents a AVSMetadataURIUpdated event raised by the AllocationManager contract.
+type AllocationManagerAVSMetadataURIUpdated struct {
+ Avs common.Address
+ MetadataURI string
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAVSMetadataURIUpdated is a free log retrieval operation binding the contract event 0xa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713.
+//
+// Solidity: event AVSMetadataURIUpdated(address indexed avs, string metadataURI)
+func (_AllocationManager *AllocationManagerFilterer) FilterAVSMetadataURIUpdated(opts *bind.FilterOpts, avs []common.Address) (*AllocationManagerAVSMetadataURIUpdatedIterator, error) {
+
+ var avsRule []interface{}
+ for _, avsItem := range avs {
+ avsRule = append(avsRule, avsItem)
+ }
+
+ logs, sub, err := _AllocationManager.contract.FilterLogs(opts, "AVSMetadataURIUpdated", avsRule)
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerAVSMetadataURIUpdatedIterator{contract: _AllocationManager.contract, event: "AVSMetadataURIUpdated", logs: logs, sub: sub}, nil
+}
+
+// WatchAVSMetadataURIUpdated is a free log subscription operation binding the contract event 0xa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713.
+//
+// Solidity: event AVSMetadataURIUpdated(address indexed avs, string metadataURI)
+func (_AllocationManager *AllocationManagerFilterer) WatchAVSMetadataURIUpdated(opts *bind.WatchOpts, sink chan<- *AllocationManagerAVSMetadataURIUpdated, avs []common.Address) (event.Subscription, error) {
+
+ var avsRule []interface{}
+ for _, avsItem := range avs {
+ avsRule = append(avsRule, avsItem)
+ }
+
+ logs, sub, err := _AllocationManager.contract.WatchLogs(opts, "AVSMetadataURIUpdated", avsRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(AllocationManagerAVSMetadataURIUpdated)
+ if err := _AllocationManager.contract.UnpackLog(event, "AVSMetadataURIUpdated", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParseAVSMetadataURIUpdated is a log parse operation binding the contract event 0xa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713.
+//
+// Solidity: event AVSMetadataURIUpdated(address indexed avs, string metadataURI)
+func (_AllocationManager *AllocationManagerFilterer) ParseAVSMetadataURIUpdated(log types.Log) (*AllocationManagerAVSMetadataURIUpdated, error) {
+ event := new(AllocationManagerAVSMetadataURIUpdated)
+ if err := _AllocationManager.contract.UnpackLog(event, "AVSMetadataURIUpdated", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerAVSRegistrarSetIterator is returned from FilterAVSRegistrarSet and is used to iterate over the raw logs and unpacked data for AVSRegistrarSet events raised by the AllocationManager contract.
+type AllocationManagerAVSRegistrarSetIterator struct {
+ Event *AllocationManagerAVSRegistrarSet // 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 *AllocationManagerAVSRegistrarSetIterator) 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(AllocationManagerAVSRegistrarSet)
+ 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(AllocationManagerAVSRegistrarSet)
+ 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 *AllocationManagerAVSRegistrarSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerAVSRegistrarSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerAVSRegistrarSet represents a AVSRegistrarSet event raised by the AllocationManager contract.
+type AllocationManagerAVSRegistrarSet struct {
+ Avs common.Address
+ Registrar common.Address
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAVSRegistrarSet is a free log retrieval operation binding the contract event 0x2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf85.
+//
+// Solidity: event AVSRegistrarSet(address avs, address registrar)
+func (_AllocationManager *AllocationManagerFilterer) FilterAVSRegistrarSet(opts *bind.FilterOpts) (*AllocationManagerAVSRegistrarSetIterator, error) {
+
+ logs, sub, err := _AllocationManager.contract.FilterLogs(opts, "AVSRegistrarSet")
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerAVSRegistrarSetIterator{contract: _AllocationManager.contract, event: "AVSRegistrarSet", logs: logs, sub: sub}, nil
+}
+
+// WatchAVSRegistrarSet is a free log subscription operation binding the contract event 0x2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf85.
+//
+// Solidity: event AVSRegistrarSet(address avs, address registrar)
+func (_AllocationManager *AllocationManagerFilterer) WatchAVSRegistrarSet(opts *bind.WatchOpts, sink chan<- *AllocationManagerAVSRegistrarSet) (event.Subscription, error) {
+
+ logs, sub, err := _AllocationManager.contract.WatchLogs(opts, "AVSRegistrarSet")
+ 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(AllocationManagerAVSRegistrarSet)
+ if err := _AllocationManager.contract.UnpackLog(event, "AVSRegistrarSet", 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
+}
+
+// ParseAVSRegistrarSet is a log parse operation binding the contract event 0x2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf85.
+//
+// Solidity: event AVSRegistrarSet(address avs, address registrar)
+func (_AllocationManager *AllocationManagerFilterer) ParseAVSRegistrarSet(log types.Log) (*AllocationManagerAVSRegistrarSet, error) {
+ event := new(AllocationManagerAVSRegistrarSet)
+ if err := _AllocationManager.contract.UnpackLog(event, "AVSRegistrarSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerAllocationDelaySetIterator is returned from FilterAllocationDelaySet and is used to iterate over the raw logs and unpacked data for AllocationDelaySet events raised by the AllocationManager contract.
+type AllocationManagerAllocationDelaySetIterator struct {
+ Event *AllocationManagerAllocationDelaySet // 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 *AllocationManagerAllocationDelaySetIterator) 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(AllocationManagerAllocationDelaySet)
+ 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(AllocationManagerAllocationDelaySet)
+ 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 *AllocationManagerAllocationDelaySetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerAllocationDelaySetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerAllocationDelaySet represents a AllocationDelaySet event raised by the AllocationManager contract.
+type AllocationManagerAllocationDelaySet struct {
+ Operator common.Address
+ Delay uint32
+ EffectBlock 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 effectBlock)
+func (_AllocationManager *AllocationManagerFilterer) FilterAllocationDelaySet(opts *bind.FilterOpts) (*AllocationManagerAllocationDelaySetIterator, error) {
+
+ logs, sub, err := _AllocationManager.contract.FilterLogs(opts, "AllocationDelaySet")
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerAllocationDelaySetIterator{contract: _AllocationManager.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 effectBlock)
+func (_AllocationManager *AllocationManagerFilterer) WatchAllocationDelaySet(opts *bind.WatchOpts, sink chan<- *AllocationManagerAllocationDelaySet) (event.Subscription, error) {
+
+ logs, sub, err := _AllocationManager.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(AllocationManagerAllocationDelaySet)
+ if err := _AllocationManager.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 effectBlock)
+func (_AllocationManager *AllocationManagerFilterer) ParseAllocationDelaySet(log types.Log) (*AllocationManagerAllocationDelaySet, error) {
+ event := new(AllocationManagerAllocationDelaySet)
+ if err := _AllocationManager.contract.UnpackLog(event, "AllocationDelaySet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerAllocationUpdatedIterator is returned from FilterAllocationUpdated and is used to iterate over the raw logs and unpacked data for AllocationUpdated events raised by the AllocationManager contract.
+type AllocationManagerAllocationUpdatedIterator struct {
+ Event *AllocationManagerAllocationUpdated // 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 *AllocationManagerAllocationUpdatedIterator) 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(AllocationManagerAllocationUpdated)
+ 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(AllocationManagerAllocationUpdated)
+ 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 *AllocationManagerAllocationUpdatedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerAllocationUpdatedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerAllocationUpdated represents a AllocationUpdated event raised by the AllocationManager contract.
+type AllocationManagerAllocationUpdated struct {
+ Operator common.Address
+ OperatorSet OperatorSet
+ Strategy common.Address
+ Magnitude uint64
+ EffectBlock uint32
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAllocationUpdated is a free log retrieval operation binding the contract event 0x1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd.
+//
+// Solidity: event AllocationUpdated(address operator, (address,uint32) operatorSet, address strategy, uint64 magnitude, uint32 effectBlock)
+func (_AllocationManager *AllocationManagerFilterer) FilterAllocationUpdated(opts *bind.FilterOpts) (*AllocationManagerAllocationUpdatedIterator, error) {
+
+ logs, sub, err := _AllocationManager.contract.FilterLogs(opts, "AllocationUpdated")
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerAllocationUpdatedIterator{contract: _AllocationManager.contract, event: "AllocationUpdated", logs: logs, sub: sub}, nil
+}
+
+// WatchAllocationUpdated is a free log subscription operation binding the contract event 0x1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd.
+//
+// Solidity: event AllocationUpdated(address operator, (address,uint32) operatorSet, address strategy, uint64 magnitude, uint32 effectBlock)
+func (_AllocationManager *AllocationManagerFilterer) WatchAllocationUpdated(opts *bind.WatchOpts, sink chan<- *AllocationManagerAllocationUpdated) (event.Subscription, error) {
+
+ logs, sub, err := _AllocationManager.contract.WatchLogs(opts, "AllocationUpdated")
+ 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(AllocationManagerAllocationUpdated)
+ if err := _AllocationManager.contract.UnpackLog(event, "AllocationUpdated", 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
+}
+
+// ParseAllocationUpdated is a log parse operation binding the contract event 0x1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd.
+//
+// Solidity: event AllocationUpdated(address operator, (address,uint32) operatorSet, address strategy, uint64 magnitude, uint32 effectBlock)
+func (_AllocationManager *AllocationManagerFilterer) ParseAllocationUpdated(log types.Log) (*AllocationManagerAllocationUpdated, error) {
+ event := new(AllocationManagerAllocationUpdated)
+ if err := _AllocationManager.contract.UnpackLog(event, "AllocationUpdated", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerEncumberedMagnitudeUpdatedIterator is returned from FilterEncumberedMagnitudeUpdated and is used to iterate over the raw logs and unpacked data for EncumberedMagnitudeUpdated events raised by the AllocationManager contract.
+type AllocationManagerEncumberedMagnitudeUpdatedIterator struct {
+ Event *AllocationManagerEncumberedMagnitudeUpdated // 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 *AllocationManagerEncumberedMagnitudeUpdatedIterator) 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(AllocationManagerEncumberedMagnitudeUpdated)
+ 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(AllocationManagerEncumberedMagnitudeUpdated)
+ 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 *AllocationManagerEncumberedMagnitudeUpdatedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerEncumberedMagnitudeUpdatedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerEncumberedMagnitudeUpdated represents a EncumberedMagnitudeUpdated event raised by the AllocationManager contract.
+type AllocationManagerEncumberedMagnitudeUpdated 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 (_AllocationManager *AllocationManagerFilterer) FilterEncumberedMagnitudeUpdated(opts *bind.FilterOpts) (*AllocationManagerEncumberedMagnitudeUpdatedIterator, error) {
+
+ logs, sub, err := _AllocationManager.contract.FilterLogs(opts, "EncumberedMagnitudeUpdated")
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerEncumberedMagnitudeUpdatedIterator{contract: _AllocationManager.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 (_AllocationManager *AllocationManagerFilterer) WatchEncumberedMagnitudeUpdated(opts *bind.WatchOpts, sink chan<- *AllocationManagerEncumberedMagnitudeUpdated) (event.Subscription, error) {
+
+ logs, sub, err := _AllocationManager.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(AllocationManagerEncumberedMagnitudeUpdated)
+ if err := _AllocationManager.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 (_AllocationManager *AllocationManagerFilterer) ParseEncumberedMagnitudeUpdated(log types.Log) (*AllocationManagerEncumberedMagnitudeUpdated, error) {
+ event := new(AllocationManagerEncumberedMagnitudeUpdated)
+ if err := _AllocationManager.contract.UnpackLog(event, "EncumberedMagnitudeUpdated", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the AllocationManager contract.
+type AllocationManagerInitializedIterator struct {
+ Event *AllocationManagerInitialized // 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 *AllocationManagerInitializedIterator) 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(AllocationManagerInitialized)
+ 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(AllocationManagerInitialized)
+ 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 *AllocationManagerInitializedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerInitializedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerInitialized represents a Initialized event raised by the AllocationManager contract.
+type AllocationManagerInitialized struct {
+ Version uint8
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498.
+//
+// Solidity: event Initialized(uint8 version)
+func (_AllocationManager *AllocationManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*AllocationManagerInitializedIterator, error) {
+
+ logs, sub, err := _AllocationManager.contract.FilterLogs(opts, "Initialized")
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerInitializedIterator{contract: _AllocationManager.contract, event: "Initialized", logs: logs, sub: sub}, nil
+}
+
+// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498.
+//
+// Solidity: event Initialized(uint8 version)
+func (_AllocationManager *AllocationManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *AllocationManagerInitialized) (event.Subscription, error) {
+
+ logs, sub, err := _AllocationManager.contract.WatchLogs(opts, "Initialized")
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(AllocationManagerInitialized)
+ if err := _AllocationManager.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 (_AllocationManager *AllocationManagerFilterer) ParseInitialized(log types.Log) (*AllocationManagerInitialized, error) {
+ event := new(AllocationManagerInitialized)
+ if err := _AllocationManager.contract.UnpackLog(event, "Initialized", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerMaxMagnitudeUpdatedIterator is returned from FilterMaxMagnitudeUpdated and is used to iterate over the raw logs and unpacked data for MaxMagnitudeUpdated events raised by the AllocationManager contract.
+type AllocationManagerMaxMagnitudeUpdatedIterator struct {
+ Event *AllocationManagerMaxMagnitudeUpdated // 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 *AllocationManagerMaxMagnitudeUpdatedIterator) 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(AllocationManagerMaxMagnitudeUpdated)
+ 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(AllocationManagerMaxMagnitudeUpdated)
+ 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 *AllocationManagerMaxMagnitudeUpdatedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerMaxMagnitudeUpdatedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerMaxMagnitudeUpdated represents a MaxMagnitudeUpdated event raised by the AllocationManager contract.
+type AllocationManagerMaxMagnitudeUpdated struct {
+ Operator common.Address
+ Strategy common.Address
+ MaxMagnitude 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 maxMagnitude)
+func (_AllocationManager *AllocationManagerFilterer) FilterMaxMagnitudeUpdated(opts *bind.FilterOpts) (*AllocationManagerMaxMagnitudeUpdatedIterator, error) {
+
+ logs, sub, err := _AllocationManager.contract.FilterLogs(opts, "MaxMagnitudeUpdated")
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerMaxMagnitudeUpdatedIterator{contract: _AllocationManager.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 maxMagnitude)
+func (_AllocationManager *AllocationManagerFilterer) WatchMaxMagnitudeUpdated(opts *bind.WatchOpts, sink chan<- *AllocationManagerMaxMagnitudeUpdated) (event.Subscription, error) {
+
+ logs, sub, err := _AllocationManager.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(AllocationManagerMaxMagnitudeUpdated)
+ if err := _AllocationManager.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 maxMagnitude)
+func (_AllocationManager *AllocationManagerFilterer) ParseMaxMagnitudeUpdated(log types.Log) (*AllocationManagerMaxMagnitudeUpdated, error) {
+ event := new(AllocationManagerMaxMagnitudeUpdated)
+ if err := _AllocationManager.contract.UnpackLog(event, "MaxMagnitudeUpdated", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerOperatorAddedToOperatorSetIterator is returned from FilterOperatorAddedToOperatorSet and is used to iterate over the raw logs and unpacked data for OperatorAddedToOperatorSet events raised by the AllocationManager contract.
+type AllocationManagerOperatorAddedToOperatorSetIterator struct {
+ Event *AllocationManagerOperatorAddedToOperatorSet // 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 *AllocationManagerOperatorAddedToOperatorSetIterator) 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(AllocationManagerOperatorAddedToOperatorSet)
+ 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(AllocationManagerOperatorAddedToOperatorSet)
+ 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 *AllocationManagerOperatorAddedToOperatorSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerOperatorAddedToOperatorSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerOperatorAddedToOperatorSet represents a OperatorAddedToOperatorSet event raised by the AllocationManager contract.
+type AllocationManagerOperatorAddedToOperatorSet struct {
+ Operator common.Address
+ OperatorSet OperatorSet
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterOperatorAddedToOperatorSet is a free log retrieval operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e.
+//
+// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet)
+func (_AllocationManager *AllocationManagerFilterer) FilterOperatorAddedToOperatorSet(opts *bind.FilterOpts, operator []common.Address) (*AllocationManagerOperatorAddedToOperatorSetIterator, error) {
+
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
+
+ logs, sub, err := _AllocationManager.contract.FilterLogs(opts, "OperatorAddedToOperatorSet", operatorRule)
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerOperatorAddedToOperatorSetIterator{contract: _AllocationManager.contract, event: "OperatorAddedToOperatorSet", logs: logs, sub: sub}, nil
+}
+
+// WatchOperatorAddedToOperatorSet is a free log subscription operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e.
+//
+// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet)
+func (_AllocationManager *AllocationManagerFilterer) WatchOperatorAddedToOperatorSet(opts *bind.WatchOpts, sink chan<- *AllocationManagerOperatorAddedToOperatorSet, operator []common.Address) (event.Subscription, error) {
+
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
+
+ logs, sub, err := _AllocationManager.contract.WatchLogs(opts, "OperatorAddedToOperatorSet", 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(AllocationManagerOperatorAddedToOperatorSet)
+ if err := _AllocationManager.contract.UnpackLog(event, "OperatorAddedToOperatorSet", 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
+}
+
+// ParseOperatorAddedToOperatorSet is a log parse operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e.
+//
+// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet)
+func (_AllocationManager *AllocationManagerFilterer) ParseOperatorAddedToOperatorSet(log types.Log) (*AllocationManagerOperatorAddedToOperatorSet, error) {
+ event := new(AllocationManagerOperatorAddedToOperatorSet)
+ if err := _AllocationManager.contract.UnpackLog(event, "OperatorAddedToOperatorSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerOperatorRemovedFromOperatorSetIterator is returned from FilterOperatorRemovedFromOperatorSet and is used to iterate over the raw logs and unpacked data for OperatorRemovedFromOperatorSet events raised by the AllocationManager contract.
+type AllocationManagerOperatorRemovedFromOperatorSetIterator struct {
+ Event *AllocationManagerOperatorRemovedFromOperatorSet // 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 *AllocationManagerOperatorRemovedFromOperatorSetIterator) 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(AllocationManagerOperatorRemovedFromOperatorSet)
+ 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(AllocationManagerOperatorRemovedFromOperatorSet)
+ 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 *AllocationManagerOperatorRemovedFromOperatorSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerOperatorRemovedFromOperatorSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerOperatorRemovedFromOperatorSet represents a OperatorRemovedFromOperatorSet event raised by the AllocationManager contract.
+type AllocationManagerOperatorRemovedFromOperatorSet struct {
+ Operator common.Address
+ OperatorSet OperatorSet
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterOperatorRemovedFromOperatorSet is a free log retrieval operation binding the contract event 0xad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe.
+//
+// Solidity: event OperatorRemovedFromOperatorSet(address indexed operator, (address,uint32) operatorSet)
+func (_AllocationManager *AllocationManagerFilterer) FilterOperatorRemovedFromOperatorSet(opts *bind.FilterOpts, operator []common.Address) (*AllocationManagerOperatorRemovedFromOperatorSetIterator, error) {
+
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
+
+ logs, sub, err := _AllocationManager.contract.FilterLogs(opts, "OperatorRemovedFromOperatorSet", operatorRule)
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerOperatorRemovedFromOperatorSetIterator{contract: _AllocationManager.contract, event: "OperatorRemovedFromOperatorSet", logs: logs, sub: sub}, nil
+}
+
+// WatchOperatorRemovedFromOperatorSet is a free log subscription operation binding the contract event 0xad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe.
+//
+// Solidity: event OperatorRemovedFromOperatorSet(address indexed operator, (address,uint32) operatorSet)
+func (_AllocationManager *AllocationManagerFilterer) WatchOperatorRemovedFromOperatorSet(opts *bind.WatchOpts, sink chan<- *AllocationManagerOperatorRemovedFromOperatorSet, operator []common.Address) (event.Subscription, error) {
+
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
+
+ logs, sub, err := _AllocationManager.contract.WatchLogs(opts, "OperatorRemovedFromOperatorSet", 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(AllocationManagerOperatorRemovedFromOperatorSet)
+ if err := _AllocationManager.contract.UnpackLog(event, "OperatorRemovedFromOperatorSet", 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
+}
+
+// ParseOperatorRemovedFromOperatorSet is a log parse operation binding the contract event 0xad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe.
+//
+// Solidity: event OperatorRemovedFromOperatorSet(address indexed operator, (address,uint32) operatorSet)
+func (_AllocationManager *AllocationManagerFilterer) ParseOperatorRemovedFromOperatorSet(log types.Log) (*AllocationManagerOperatorRemovedFromOperatorSet, error) {
+ event := new(AllocationManagerOperatorRemovedFromOperatorSet)
+ if err := _AllocationManager.contract.UnpackLog(event, "OperatorRemovedFromOperatorSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerOperatorSetCreatedIterator is returned from FilterOperatorSetCreated and is used to iterate over the raw logs and unpacked data for OperatorSetCreated events raised by the AllocationManager contract.
+type AllocationManagerOperatorSetCreatedIterator struct {
+ Event *AllocationManagerOperatorSetCreated // 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 *AllocationManagerOperatorSetCreatedIterator) 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(AllocationManagerOperatorSetCreated)
+ 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(AllocationManagerOperatorSetCreated)
+ 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 *AllocationManagerOperatorSetCreatedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerOperatorSetCreatedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerOperatorSetCreated represents a OperatorSetCreated event raised by the AllocationManager contract.
+type AllocationManagerOperatorSetCreated struct {
+ OperatorSet OperatorSet
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterOperatorSetCreated is a free log retrieval operation binding the contract event 0x31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c.
+//
+// Solidity: event OperatorSetCreated((address,uint32) operatorSet)
+func (_AllocationManager *AllocationManagerFilterer) FilterOperatorSetCreated(opts *bind.FilterOpts) (*AllocationManagerOperatorSetCreatedIterator, error) {
+
+ logs, sub, err := _AllocationManager.contract.FilterLogs(opts, "OperatorSetCreated")
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerOperatorSetCreatedIterator{contract: _AllocationManager.contract, event: "OperatorSetCreated", logs: logs, sub: sub}, nil
+}
+
+// WatchOperatorSetCreated is a free log subscription operation binding the contract event 0x31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c.
+//
+// Solidity: event OperatorSetCreated((address,uint32) operatorSet)
+func (_AllocationManager *AllocationManagerFilterer) WatchOperatorSetCreated(opts *bind.WatchOpts, sink chan<- *AllocationManagerOperatorSetCreated) (event.Subscription, error) {
+
+ logs, sub, err := _AllocationManager.contract.WatchLogs(opts, "OperatorSetCreated")
+ 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(AllocationManagerOperatorSetCreated)
+ if err := _AllocationManager.contract.UnpackLog(event, "OperatorSetCreated", 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
+}
+
+// ParseOperatorSetCreated is a log parse operation binding the contract event 0x31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c.
+//
+// Solidity: event OperatorSetCreated((address,uint32) operatorSet)
+func (_AllocationManager *AllocationManagerFilterer) ParseOperatorSetCreated(log types.Log) (*AllocationManagerOperatorSetCreated, error) {
+ event := new(AllocationManagerOperatorSetCreated)
+ if err := _AllocationManager.contract.UnpackLog(event, "OperatorSetCreated", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerOperatorSlashedIterator is returned from FilterOperatorSlashed and is used to iterate over the raw logs and unpacked data for OperatorSlashed events raised by the AllocationManager contract.
+type AllocationManagerOperatorSlashedIterator struct {
+ Event *AllocationManagerOperatorSlashed // 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 *AllocationManagerOperatorSlashedIterator) 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(AllocationManagerOperatorSlashed)
+ 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(AllocationManagerOperatorSlashed)
+ 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 *AllocationManagerOperatorSlashedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerOperatorSlashedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerOperatorSlashed represents a OperatorSlashed event raised by the AllocationManager contract.
+type AllocationManagerOperatorSlashed 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 (_AllocationManager *AllocationManagerFilterer) FilterOperatorSlashed(opts *bind.FilterOpts) (*AllocationManagerOperatorSlashedIterator, error) {
+
+ logs, sub, err := _AllocationManager.contract.FilterLogs(opts, "OperatorSlashed")
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerOperatorSlashedIterator{contract: _AllocationManager.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 (_AllocationManager *AllocationManagerFilterer) WatchOperatorSlashed(opts *bind.WatchOpts, sink chan<- *AllocationManagerOperatorSlashed) (event.Subscription, error) {
+
+ logs, sub, err := _AllocationManager.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(AllocationManagerOperatorSlashed)
+ if err := _AllocationManager.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 (_AllocationManager *AllocationManagerFilterer) ParseOperatorSlashed(log types.Log) (*AllocationManagerOperatorSlashed, error) {
+ event := new(AllocationManagerOperatorSlashed)
+ if err := _AllocationManager.contract.UnpackLog(event, "OperatorSlashed", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the AllocationManager contract.
+type AllocationManagerOwnershipTransferredIterator struct {
+ Event *AllocationManagerOwnershipTransferred // 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 *AllocationManagerOwnershipTransferredIterator) 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(AllocationManagerOwnershipTransferred)
+ 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(AllocationManagerOwnershipTransferred)
+ 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 *AllocationManagerOwnershipTransferredIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerOwnershipTransferredIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerOwnershipTransferred represents a OwnershipTransferred event raised by the AllocationManager contract.
+type AllocationManagerOwnershipTransferred struct {
+ PreviousOwner common.Address
+ NewOwner common.Address
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
+//
+// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
+func (_AllocationManager *AllocationManagerFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*AllocationManagerOwnershipTransferredIterator, error) {
+
+ var previousOwnerRule []interface{}
+ for _, previousOwnerItem := range previousOwner {
+ previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
+ }
+ var newOwnerRule []interface{}
+ for _, newOwnerItem := range newOwner {
+ newOwnerRule = append(newOwnerRule, newOwnerItem)
+ }
+
+ logs, sub, err := _AllocationManager.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerOwnershipTransferredIterator{contract: _AllocationManager.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
+}
+
+// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
+//
+// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
+func (_AllocationManager *AllocationManagerFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *AllocationManagerOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
+
+ var previousOwnerRule []interface{}
+ for _, previousOwnerItem := range previousOwner {
+ previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
+ }
+ var newOwnerRule []interface{}
+ for _, newOwnerItem := range newOwner {
+ newOwnerRule = append(newOwnerRule, newOwnerItem)
+ }
+
+ logs, sub, err := _AllocationManager.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(AllocationManagerOwnershipTransferred)
+ if err := _AllocationManager.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
+//
+// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
+func (_AllocationManager *AllocationManagerFilterer) ParseOwnershipTransferred(log types.Log) (*AllocationManagerOwnershipTransferred, error) {
+ event := new(AllocationManagerOwnershipTransferred)
+ if err := _AllocationManager.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the AllocationManager contract.
+type AllocationManagerPausedIterator struct {
+ Event *AllocationManagerPaused // 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 *AllocationManagerPausedIterator) 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(AllocationManagerPaused)
+ 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(AllocationManagerPaused)
+ 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 *AllocationManagerPausedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerPausedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerPaused represents a Paused event raised by the AllocationManager contract.
+type AllocationManagerPaused struct {
+ Account common.Address
+ NewPausedStatus *big.Int
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterPaused is a free log retrieval operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d.
+//
+// Solidity: event Paused(address indexed account, uint256 newPausedStatus)
+func (_AllocationManager *AllocationManagerFilterer) FilterPaused(opts *bind.FilterOpts, account []common.Address) (*AllocationManagerPausedIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _AllocationManager.contract.FilterLogs(opts, "Paused", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerPausedIterator{contract: _AllocationManager.contract, event: "Paused", logs: logs, sub: sub}, nil
+}
+
+// WatchPaused is a free log subscription operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d.
+//
+// Solidity: event Paused(address indexed account, uint256 newPausedStatus)
+func (_AllocationManager *AllocationManagerFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *AllocationManagerPaused, account []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _AllocationManager.contract.WatchLogs(opts, "Paused", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(AllocationManagerPaused)
+ if err := _AllocationManager.contract.UnpackLog(event, "Paused", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParsePaused is a log parse operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d.
+//
+// Solidity: event Paused(address indexed account, uint256 newPausedStatus)
+func (_AllocationManager *AllocationManagerFilterer) ParsePaused(log types.Log) (*AllocationManagerPaused, error) {
+ event := new(AllocationManagerPaused)
+ if err := _AllocationManager.contract.UnpackLog(event, "Paused", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerStrategyAddedToOperatorSetIterator is returned from FilterStrategyAddedToOperatorSet and is used to iterate over the raw logs and unpacked data for StrategyAddedToOperatorSet events raised by the AllocationManager contract.
+type AllocationManagerStrategyAddedToOperatorSetIterator struct {
+ Event *AllocationManagerStrategyAddedToOperatorSet // 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 *AllocationManagerStrategyAddedToOperatorSetIterator) 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(AllocationManagerStrategyAddedToOperatorSet)
+ 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(AllocationManagerStrategyAddedToOperatorSet)
+ 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 *AllocationManagerStrategyAddedToOperatorSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerStrategyAddedToOperatorSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerStrategyAddedToOperatorSet represents a StrategyAddedToOperatorSet event raised by the AllocationManager contract.
+type AllocationManagerStrategyAddedToOperatorSet 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 (_AllocationManager *AllocationManagerFilterer) FilterStrategyAddedToOperatorSet(opts *bind.FilterOpts) (*AllocationManagerStrategyAddedToOperatorSetIterator, error) {
+
+ logs, sub, err := _AllocationManager.contract.FilterLogs(opts, "StrategyAddedToOperatorSet")
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerStrategyAddedToOperatorSetIterator{contract: _AllocationManager.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 (_AllocationManager *AllocationManagerFilterer) WatchStrategyAddedToOperatorSet(opts *bind.WatchOpts, sink chan<- *AllocationManagerStrategyAddedToOperatorSet) (event.Subscription, error) {
+
+ logs, sub, err := _AllocationManager.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(AllocationManagerStrategyAddedToOperatorSet)
+ if err := _AllocationManager.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 (_AllocationManager *AllocationManagerFilterer) ParseStrategyAddedToOperatorSet(log types.Log) (*AllocationManagerStrategyAddedToOperatorSet, error) {
+ event := new(AllocationManagerStrategyAddedToOperatorSet)
+ if err := _AllocationManager.contract.UnpackLog(event, "StrategyAddedToOperatorSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerStrategyRemovedFromOperatorSetIterator is returned from FilterStrategyRemovedFromOperatorSet and is used to iterate over the raw logs and unpacked data for StrategyRemovedFromOperatorSet events raised by the AllocationManager contract.
+type AllocationManagerStrategyRemovedFromOperatorSetIterator struct {
+ Event *AllocationManagerStrategyRemovedFromOperatorSet // 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 *AllocationManagerStrategyRemovedFromOperatorSetIterator) 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(AllocationManagerStrategyRemovedFromOperatorSet)
+ 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(AllocationManagerStrategyRemovedFromOperatorSet)
+ 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 *AllocationManagerStrategyRemovedFromOperatorSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerStrategyRemovedFromOperatorSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerStrategyRemovedFromOperatorSet represents a StrategyRemovedFromOperatorSet event raised by the AllocationManager contract.
+type AllocationManagerStrategyRemovedFromOperatorSet 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 (_AllocationManager *AllocationManagerFilterer) FilterStrategyRemovedFromOperatorSet(opts *bind.FilterOpts) (*AllocationManagerStrategyRemovedFromOperatorSetIterator, error) {
+
+ logs, sub, err := _AllocationManager.contract.FilterLogs(opts, "StrategyRemovedFromOperatorSet")
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerStrategyRemovedFromOperatorSetIterator{contract: _AllocationManager.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 (_AllocationManager *AllocationManagerFilterer) WatchStrategyRemovedFromOperatorSet(opts *bind.WatchOpts, sink chan<- *AllocationManagerStrategyRemovedFromOperatorSet) (event.Subscription, error) {
+
+ logs, sub, err := _AllocationManager.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(AllocationManagerStrategyRemovedFromOperatorSet)
+ if err := _AllocationManager.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 (_AllocationManager *AllocationManagerFilterer) ParseStrategyRemovedFromOperatorSet(log types.Log) (*AllocationManagerStrategyRemovedFromOperatorSet, error) {
+ event := new(AllocationManagerStrategyRemovedFromOperatorSet)
+ if err := _AllocationManager.contract.UnpackLog(event, "StrategyRemovedFromOperatorSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the AllocationManager contract.
+type AllocationManagerUnpausedIterator struct {
+ Event *AllocationManagerUnpaused // 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 *AllocationManagerUnpausedIterator) 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(AllocationManagerUnpaused)
+ 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(AllocationManagerUnpaused)
+ 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 *AllocationManagerUnpausedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerUnpausedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerUnpaused represents a Unpaused event raised by the AllocationManager contract.
+type AllocationManagerUnpaused struct {
+ Account common.Address
+ NewPausedStatus *big.Int
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterUnpaused is a free log retrieval operation binding the contract event 0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c.
+//
+// Solidity: event Unpaused(address indexed account, uint256 newPausedStatus)
+func (_AllocationManager *AllocationManagerFilterer) FilterUnpaused(opts *bind.FilterOpts, account []common.Address) (*AllocationManagerUnpausedIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _AllocationManager.contract.FilterLogs(opts, "Unpaused", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerUnpausedIterator{contract: _AllocationManager.contract, event: "Unpaused", logs: logs, sub: sub}, nil
+}
+
+// WatchUnpaused is a free log subscription operation binding the contract event 0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c.
+//
+// Solidity: event Unpaused(address indexed account, uint256 newPausedStatus)
+func (_AllocationManager *AllocationManagerFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *AllocationManagerUnpaused, account []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _AllocationManager.contract.WatchLogs(opts, "Unpaused", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(AllocationManagerUnpaused)
+ if err := _AllocationManager.contract.UnpackLog(event, "Unpaused", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParseUnpaused is a log parse operation binding the contract event 0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c.
+//
+// Solidity: event Unpaused(address indexed account, uint256 newPausedStatus)
+func (_AllocationManager *AllocationManagerFilterer) ParseUnpaused(log types.Log) (*AllocationManagerUnpaused, error) {
+ event := new(AllocationManagerUnpaused)
+ if err := _AllocationManager.contract.UnpackLog(event, "Unpaused", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
diff --git a/pkg/bindings/AllocationManagerStorage/binding.go b/pkg/bindings/AllocationManagerStorage/binding.go
new file mode 100644
index 0000000000..d7168bcaa5
--- /dev/null
+++ b/pkg/bindings/AllocationManagerStorage/binding.go
@@ -0,0 +1,2961 @@
+// Code generated - DO NOT EDIT.
+// This file is a generated binding and any manual changes will be lost.
+
+package AllocationManagerStorage
+
+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
+)
+
+// IAllocationManagerTypesAllocateParams is an auto generated low-level Go binding around an user-defined struct.
+type IAllocationManagerTypesAllocateParams struct {
+ OperatorSet OperatorSet
+ Strategies []common.Address
+ NewMagnitudes []uint64
+}
+
+// IAllocationManagerTypesAllocation is an auto generated low-level Go binding around an user-defined struct.
+type IAllocationManagerTypesAllocation struct {
+ CurrentMagnitude uint64
+ PendingDiff *big.Int
+ EffectBlock uint32
+}
+
+// IAllocationManagerTypesCreateSetParams is an auto generated low-level Go binding around an user-defined struct.
+type IAllocationManagerTypesCreateSetParams struct {
+ OperatorSetId uint32
+ Strategies []common.Address
+}
+
+// IAllocationManagerTypesDeregisterParams is an auto generated low-level Go binding around an user-defined struct.
+type IAllocationManagerTypesDeregisterParams struct {
+ Operator common.Address
+ Avs common.Address
+ OperatorSetIds []uint32
+}
+
+// IAllocationManagerTypesRegisterParams is an auto generated low-level Go binding around an user-defined struct.
+type IAllocationManagerTypesRegisterParams struct {
+ Avs common.Address
+ OperatorSetIds []uint32
+ Data []byte
+}
+
+// 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
+ WadsToSlash []*big.Int
+ Description string
+}
+
+// OperatorSet is an auto generated low-level Go binding around an user-defined struct.
+type OperatorSet struct {
+ Avs common.Address
+ Id uint32
+}
+
+// AllocationManagerStorageMetaData contains all meta data concerning the AllocationManagerStorage contract.
+var AllocationManagerStorageMetaData = &bind.MetaData{
+ ABI: "[{\"type\":\"function\",\"name\":\"ALLOCATION_CONFIGURATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEALLOCATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addStrategiesToOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"clearDeallocationQueue\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"numToClear\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.CreateSetParams[]\",\"components\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterFromOperatorSets\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.DeregisterParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatableMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedStake\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"slashableStake\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocation\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.Allocation\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"isSet\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"delay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocations\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getEncumberedMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudesAtBlock\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMemberCount\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMembers\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinimumSlashableStake\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"futureBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"slashableStake\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetCount\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRegisteredSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategiesInOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategyAllocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isMemberOfOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSlashable\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyAllocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.AllocateParams[]\",\"components\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"newMagnitudes\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerForOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.RegisterParams\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slashOperator\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.SlashingParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadsToSlash\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AVSMetadataURIUpdated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AVSRegistrarSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIAVSRegistrar\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationDelaySet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"magnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EncumberedMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"encumberedMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"maxMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAddedToOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSlashed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadSlashed\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"description\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyAddedToOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AlreadyMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWadToSlash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ModificationAlreadyPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotSlashable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SameMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategiesMustBeInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyAlreadyInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UninitializedAllocationDelay\",\"inputs\":[]}]",
+}
+
+// AllocationManagerStorageABI is the input ABI used to generate the binding from.
+// Deprecated: Use AllocationManagerStorageMetaData.ABI instead.
+var AllocationManagerStorageABI = AllocationManagerStorageMetaData.ABI
+
+// AllocationManagerStorage is an auto generated Go binding around an Ethereum contract.
+type AllocationManagerStorage struct {
+ AllocationManagerStorageCaller // Read-only binding to the contract
+ AllocationManagerStorageTransactor // Write-only binding to the contract
+ AllocationManagerStorageFilterer // Log filterer for contract events
+}
+
+// AllocationManagerStorageCaller is an auto generated read-only Go binding around an Ethereum contract.
+type AllocationManagerStorageCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// AllocationManagerStorageTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type AllocationManagerStorageTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// AllocationManagerStorageFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
+type AllocationManagerStorageFilterer struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// AllocationManagerStorageSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type AllocationManagerStorageSession struct {
+ Contract *AllocationManagerStorage // 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
+}
+
+// AllocationManagerStorageCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type AllocationManagerStorageCallerSession struct {
+ Contract *AllocationManagerStorageCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// AllocationManagerStorageTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type AllocationManagerStorageTransactorSession struct {
+ Contract *AllocationManagerStorageTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// AllocationManagerStorageRaw is an auto generated low-level Go binding around an Ethereum contract.
+type AllocationManagerStorageRaw struct {
+ Contract *AllocationManagerStorage // Generic contract binding to access the raw methods on
+}
+
+// AllocationManagerStorageCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type AllocationManagerStorageCallerRaw struct {
+ Contract *AllocationManagerStorageCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// AllocationManagerStorageTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type AllocationManagerStorageTransactorRaw struct {
+ Contract *AllocationManagerStorageTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewAllocationManagerStorage creates a new instance of AllocationManagerStorage, bound to a specific deployed contract.
+func NewAllocationManagerStorage(address common.Address, backend bind.ContractBackend) (*AllocationManagerStorage, error) {
+ contract, err := bindAllocationManagerStorage(address, backend, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerStorage{AllocationManagerStorageCaller: AllocationManagerStorageCaller{contract: contract}, AllocationManagerStorageTransactor: AllocationManagerStorageTransactor{contract: contract}, AllocationManagerStorageFilterer: AllocationManagerStorageFilterer{contract: contract}}, nil
+}
+
+// NewAllocationManagerStorageCaller creates a new read-only instance of AllocationManagerStorage, bound to a specific deployed contract.
+func NewAllocationManagerStorageCaller(address common.Address, caller bind.ContractCaller) (*AllocationManagerStorageCaller, error) {
+ contract, err := bindAllocationManagerStorage(address, caller, nil, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerStorageCaller{contract: contract}, nil
+}
+
+// NewAllocationManagerStorageTransactor creates a new write-only instance of AllocationManagerStorage, bound to a specific deployed contract.
+func NewAllocationManagerStorageTransactor(address common.Address, transactor bind.ContractTransactor) (*AllocationManagerStorageTransactor, error) {
+ contract, err := bindAllocationManagerStorage(address, nil, transactor, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerStorageTransactor{contract: contract}, nil
+}
+
+// NewAllocationManagerStorageFilterer creates a new log filterer instance of AllocationManagerStorage, bound to a specific deployed contract.
+func NewAllocationManagerStorageFilterer(address common.Address, filterer bind.ContractFilterer) (*AllocationManagerStorageFilterer, error) {
+ contract, err := bindAllocationManagerStorage(address, nil, nil, filterer)
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerStorageFilterer{contract: contract}, nil
+}
+
+// bindAllocationManagerStorage binds a generic wrapper to an already deployed contract.
+func bindAllocationManagerStorage(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
+ parsed, err := AllocationManagerStorageMetaData.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 (_AllocationManagerStorage *AllocationManagerStorageRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _AllocationManagerStorage.Contract.AllocationManagerStorageCaller.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 (_AllocationManagerStorage *AllocationManagerStorageRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.AllocationManagerStorageTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_AllocationManagerStorage *AllocationManagerStorageRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.AllocationManagerStorageTransactor.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 (_AllocationManagerStorage *AllocationManagerStorageCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _AllocationManagerStorage.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 (_AllocationManagerStorage *AllocationManagerStorageTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_AllocationManagerStorage *AllocationManagerStorageTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.contract.Transact(opts, method, params...)
+}
+
+// ALLOCATIONCONFIGURATIONDELAY is a free data retrieval call binding the contract method 0x7bc1ef61.
+//
+// Solidity: function ALLOCATION_CONFIGURATION_DELAY() view returns(uint32)
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) ALLOCATIONCONFIGURATIONDELAY(opts *bind.CallOpts) (uint32, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "ALLOCATION_CONFIGURATION_DELAY")
+
+ if err != nil {
+ return *new(uint32), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32)
+
+ return out0, err
+
+}
+
+// ALLOCATIONCONFIGURATIONDELAY is a free data retrieval call binding the contract method 0x7bc1ef61.
+//
+// Solidity: function ALLOCATION_CONFIGURATION_DELAY() view returns(uint32)
+func (_AllocationManagerStorage *AllocationManagerStorageSession) ALLOCATIONCONFIGURATIONDELAY() (uint32, error) {
+ return _AllocationManagerStorage.Contract.ALLOCATIONCONFIGURATIONDELAY(&_AllocationManagerStorage.CallOpts)
+}
+
+// ALLOCATIONCONFIGURATIONDELAY is a free data retrieval call binding the contract method 0x7bc1ef61.
+//
+// Solidity: function ALLOCATION_CONFIGURATION_DELAY() view returns(uint32)
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) ALLOCATIONCONFIGURATIONDELAY() (uint32, error) {
+ return _AllocationManagerStorage.Contract.ALLOCATIONCONFIGURATIONDELAY(&_AllocationManagerStorage.CallOpts)
+}
+
+// DEALLOCATIONDELAY is a free data retrieval call binding the contract method 0x2981eb77.
+//
+// Solidity: function DEALLOCATION_DELAY() view returns(uint32)
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) DEALLOCATIONDELAY(opts *bind.CallOpts) (uint32, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "DEALLOCATION_DELAY")
+
+ if err != nil {
+ return *new(uint32), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32)
+
+ return out0, err
+
+}
+
+// DEALLOCATIONDELAY is a free data retrieval call binding the contract method 0x2981eb77.
+//
+// Solidity: function DEALLOCATION_DELAY() view returns(uint32)
+func (_AllocationManagerStorage *AllocationManagerStorageSession) DEALLOCATIONDELAY() (uint32, error) {
+ return _AllocationManagerStorage.Contract.DEALLOCATIONDELAY(&_AllocationManagerStorage.CallOpts)
+}
+
+// DEALLOCATIONDELAY is a free data retrieval call binding the contract method 0x2981eb77.
+//
+// Solidity: function DEALLOCATION_DELAY() view returns(uint32)
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) DEALLOCATIONDELAY() (uint32, error) {
+ return _AllocationManagerStorage.Contract.DEALLOCATIONDELAY(&_AllocationManagerStorage.CallOpts)
+}
+
+// Delegation is a free data retrieval call binding the contract method 0xdf5cf723.
+//
+// Solidity: function delegation() view returns(address)
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) Delegation(opts *bind.CallOpts) (common.Address, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.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 (_AllocationManagerStorage *AllocationManagerStorageSession) Delegation() (common.Address, error) {
+ return _AllocationManagerStorage.Contract.Delegation(&_AllocationManagerStorage.CallOpts)
+}
+
+// Delegation is a free data retrieval call binding the contract method 0xdf5cf723.
+//
+// Solidity: function delegation() view returns(address)
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) Delegation() (common.Address, error) {
+ return _AllocationManagerStorage.Contract.Delegation(&_AllocationManagerStorage.CallOpts)
+}
+
+// GetAVSRegistrar is a free data retrieval call binding the contract method 0x304c10cd.
+//
+// Solidity: function getAVSRegistrar(address avs) view returns(address)
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) GetAVSRegistrar(opts *bind.CallOpts, avs common.Address) (common.Address, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "getAVSRegistrar", avs)
+
+ if err != nil {
+ return *new(common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
+
+ return out0, err
+
+}
+
+// GetAVSRegistrar is a free data retrieval call binding the contract method 0x304c10cd.
+//
+// Solidity: function getAVSRegistrar(address avs) view returns(address)
+func (_AllocationManagerStorage *AllocationManagerStorageSession) GetAVSRegistrar(avs common.Address) (common.Address, error) {
+ return _AllocationManagerStorage.Contract.GetAVSRegistrar(&_AllocationManagerStorage.CallOpts, avs)
+}
+
+// GetAVSRegistrar is a free data retrieval call binding the contract method 0x304c10cd.
+//
+// Solidity: function getAVSRegistrar(address avs) view returns(address)
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetAVSRegistrar(avs common.Address) (common.Address, error) {
+ return _AllocationManagerStorage.Contract.GetAVSRegistrar(&_AllocationManagerStorage.CallOpts, avs)
+}
+
+// GetAllocatableMagnitude is a free data retrieval call binding the contract method 0x6cfb4481.
+//
+// Solidity: function getAllocatableMagnitude(address operator, address strategy) view returns(uint64)
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) GetAllocatableMagnitude(opts *bind.CallOpts, operator common.Address, strategy common.Address) (uint64, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.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 (_AllocationManagerStorage *AllocationManagerStorageSession) GetAllocatableMagnitude(operator common.Address, strategy common.Address) (uint64, error) {
+ return _AllocationManagerStorage.Contract.GetAllocatableMagnitude(&_AllocationManagerStorage.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 (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetAllocatableMagnitude(operator common.Address, strategy common.Address) (uint64, error) {
+ return _AllocationManagerStorage.Contract.GetAllocatableMagnitude(&_AllocationManagerStorage.CallOpts, operator, strategy)
+}
+
+// GetAllocatedSets is a free data retrieval call binding the contract method 0x15fe5028.
+//
+// Solidity: function getAllocatedSets(address operator) view returns((address,uint32)[])
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) GetAllocatedSets(opts *bind.CallOpts, operator common.Address) ([]OperatorSet, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "getAllocatedSets", operator)
+
+ if err != nil {
+ return *new([]OperatorSet), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]OperatorSet)).(*[]OperatorSet)
+
+ return out0, err
+
+}
+
+// GetAllocatedSets is a free data retrieval call binding the contract method 0x15fe5028.
+//
+// Solidity: function getAllocatedSets(address operator) view returns((address,uint32)[])
+func (_AllocationManagerStorage *AllocationManagerStorageSession) GetAllocatedSets(operator common.Address) ([]OperatorSet, error) {
+ return _AllocationManagerStorage.Contract.GetAllocatedSets(&_AllocationManagerStorage.CallOpts, operator)
+}
+
+// GetAllocatedSets is a free data retrieval call binding the contract method 0x15fe5028.
+//
+// Solidity: function getAllocatedSets(address operator) view returns((address,uint32)[])
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetAllocatedSets(operator common.Address) ([]OperatorSet, error) {
+ return _AllocationManagerStorage.Contract.GetAllocatedSets(&_AllocationManagerStorage.CallOpts, operator)
+}
+
+// GetAllocatedStake is a free data retrieval call binding the contract method 0x2b453a9a.
+//
+// Solidity: function getAllocatedStake((address,uint32) operatorSet, address[] operators, address[] strategies) view returns(uint256[][] slashableStake)
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) GetAllocatedStake(opts *bind.CallOpts, operatorSet OperatorSet, operators []common.Address, strategies []common.Address) ([][]*big.Int, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "getAllocatedStake", operatorSet, operators, strategies)
+
+ if err != nil {
+ return *new([][]*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([][]*big.Int)).(*[][]*big.Int)
+
+ return out0, err
+
+}
+
+// GetAllocatedStake is a free data retrieval call binding the contract method 0x2b453a9a.
+//
+// Solidity: function getAllocatedStake((address,uint32) operatorSet, address[] operators, address[] strategies) view returns(uint256[][] slashableStake)
+func (_AllocationManagerStorage *AllocationManagerStorageSession) GetAllocatedStake(operatorSet OperatorSet, operators []common.Address, strategies []common.Address) ([][]*big.Int, error) {
+ return _AllocationManagerStorage.Contract.GetAllocatedStake(&_AllocationManagerStorage.CallOpts, operatorSet, operators, strategies)
+}
+
+// GetAllocatedStake is a free data retrieval call binding the contract method 0x2b453a9a.
+//
+// Solidity: function getAllocatedStake((address,uint32) operatorSet, address[] operators, address[] strategies) view returns(uint256[][] slashableStake)
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetAllocatedStake(operatorSet OperatorSet, operators []common.Address, strategies []common.Address) ([][]*big.Int, error) {
+ return _AllocationManagerStorage.Contract.GetAllocatedStake(&_AllocationManagerStorage.CallOpts, operatorSet, operators, strategies)
+}
+
+// GetAllocatedStrategies is a free data retrieval call binding the contract method 0xc221d8ae.
+//
+// Solidity: function getAllocatedStrategies(address operator, (address,uint32) operatorSet) view returns(address[])
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) GetAllocatedStrategies(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet) ([]common.Address, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "getAllocatedStrategies", operator, operatorSet)
+
+ if err != nil {
+ return *new([]common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
+
+ return out0, err
+
+}
+
+// GetAllocatedStrategies is a free data retrieval call binding the contract method 0xc221d8ae.
+//
+// Solidity: function getAllocatedStrategies(address operator, (address,uint32) operatorSet) view returns(address[])
+func (_AllocationManagerStorage *AllocationManagerStorageSession) GetAllocatedStrategies(operator common.Address, operatorSet OperatorSet) ([]common.Address, error) {
+ return _AllocationManagerStorage.Contract.GetAllocatedStrategies(&_AllocationManagerStorage.CallOpts, operator, operatorSet)
+}
+
+// GetAllocatedStrategies is a free data retrieval call binding the contract method 0xc221d8ae.
+//
+// Solidity: function getAllocatedStrategies(address operator, (address,uint32) operatorSet) view returns(address[])
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetAllocatedStrategies(operator common.Address, operatorSet OperatorSet) ([]common.Address, error) {
+ return _AllocationManagerStorage.Contract.GetAllocatedStrategies(&_AllocationManagerStorage.CallOpts, operator, operatorSet)
+}
+
+// GetAllocation is a free data retrieval call binding the contract method 0x10e1b9b8.
+//
+// Solidity: function getAllocation(address operator, (address,uint32) operatorSet, address strategy) view returns((uint64,int128,uint32))
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) GetAllocation(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet, strategy common.Address) (IAllocationManagerTypesAllocation, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "getAllocation", operator, operatorSet, strategy)
+
+ if err != nil {
+ return *new(IAllocationManagerTypesAllocation), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(IAllocationManagerTypesAllocation)).(*IAllocationManagerTypesAllocation)
+
+ return out0, err
+
+}
+
+// GetAllocation is a free data retrieval call binding the contract method 0x10e1b9b8.
+//
+// Solidity: function getAllocation(address operator, (address,uint32) operatorSet, address strategy) view returns((uint64,int128,uint32))
+func (_AllocationManagerStorage *AllocationManagerStorageSession) GetAllocation(operator common.Address, operatorSet OperatorSet, strategy common.Address) (IAllocationManagerTypesAllocation, error) {
+ return _AllocationManagerStorage.Contract.GetAllocation(&_AllocationManagerStorage.CallOpts, operator, operatorSet, strategy)
+}
+
+// GetAllocation is a free data retrieval call binding the contract method 0x10e1b9b8.
+//
+// Solidity: function getAllocation(address operator, (address,uint32) operatorSet, address strategy) view returns((uint64,int128,uint32))
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetAllocation(operator common.Address, operatorSet OperatorSet, strategy common.Address) (IAllocationManagerTypesAllocation, error) {
+ return _AllocationManagerStorage.Contract.GetAllocation(&_AllocationManagerStorage.CallOpts, operator, operatorSet, 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 (_AllocationManagerStorage *AllocationManagerStorageCaller) GetAllocationDelay(opts *bind.CallOpts, operator common.Address) (struct {
+ IsSet bool
+ Delay uint32
+}, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.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 (_AllocationManagerStorage *AllocationManagerStorageSession) GetAllocationDelay(operator common.Address) (struct {
+ IsSet bool
+ Delay uint32
+}, error) {
+ return _AllocationManagerStorage.Contract.GetAllocationDelay(&_AllocationManagerStorage.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 (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetAllocationDelay(operator common.Address) (struct {
+ IsSet bool
+ Delay uint32
+}, error) {
+ return _AllocationManagerStorage.Contract.GetAllocationDelay(&_AllocationManagerStorage.CallOpts, operator)
+}
+
+// GetAllocations is a free data retrieval call binding the contract method 0x8ce64854.
+//
+// Solidity: function getAllocations(address[] operators, (address,uint32) operatorSet, address strategy) view returns((uint64,int128,uint32)[])
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) GetAllocations(opts *bind.CallOpts, operators []common.Address, operatorSet OperatorSet, strategy common.Address) ([]IAllocationManagerTypesAllocation, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "getAllocations", operators, operatorSet, strategy)
+
+ if err != nil {
+ return *new([]IAllocationManagerTypesAllocation), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]IAllocationManagerTypesAllocation)).(*[]IAllocationManagerTypesAllocation)
+
+ return out0, err
+
+}
+
+// GetAllocations is a free data retrieval call binding the contract method 0x8ce64854.
+//
+// Solidity: function getAllocations(address[] operators, (address,uint32) operatorSet, address strategy) view returns((uint64,int128,uint32)[])
+func (_AllocationManagerStorage *AllocationManagerStorageSession) GetAllocations(operators []common.Address, operatorSet OperatorSet, strategy common.Address) ([]IAllocationManagerTypesAllocation, error) {
+ return _AllocationManagerStorage.Contract.GetAllocations(&_AllocationManagerStorage.CallOpts, operators, operatorSet, strategy)
+}
+
+// GetAllocations is a free data retrieval call binding the contract method 0x8ce64854.
+//
+// Solidity: function getAllocations(address[] operators, (address,uint32) operatorSet, address strategy) view returns((uint64,int128,uint32)[])
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetAllocations(operators []common.Address, operatorSet OperatorSet, strategy common.Address) ([]IAllocationManagerTypesAllocation, error) {
+ return _AllocationManagerStorage.Contract.GetAllocations(&_AllocationManagerStorage.CallOpts, operators, operatorSet, strategy)
+}
+
+// GetEncumberedMagnitude is a free data retrieval call binding the contract method 0xf605ce08.
+//
+// Solidity: function getEncumberedMagnitude(address operator, address strategy) view returns(uint64)
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) GetEncumberedMagnitude(opts *bind.CallOpts, operator common.Address, strategy common.Address) (uint64, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "getEncumberedMagnitude", operator, strategy)
+
+ if err != nil {
+ return *new(uint64), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64)
+
+ return out0, err
+
+}
+
+// GetEncumberedMagnitude is a free data retrieval call binding the contract method 0xf605ce08.
+//
+// Solidity: function getEncumberedMagnitude(address operator, address strategy) view returns(uint64)
+func (_AllocationManagerStorage *AllocationManagerStorageSession) GetEncumberedMagnitude(operator common.Address, strategy common.Address) (uint64, error) {
+ return _AllocationManagerStorage.Contract.GetEncumberedMagnitude(&_AllocationManagerStorage.CallOpts, operator, strategy)
+}
+
+// GetEncumberedMagnitude is a free data retrieval call binding the contract method 0xf605ce08.
+//
+// Solidity: function getEncumberedMagnitude(address operator, address strategy) view returns(uint64)
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetEncumberedMagnitude(operator common.Address, strategy common.Address) (uint64, error) {
+ return _AllocationManagerStorage.Contract.GetEncumberedMagnitude(&_AllocationManagerStorage.CallOpts, operator, strategy)
+}
+
+// GetMaxMagnitude is a free data retrieval call binding the contract method 0xa9333ec8.
+//
+// Solidity: function getMaxMagnitude(address operator, address strategy) view returns(uint64)
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) GetMaxMagnitude(opts *bind.CallOpts, operator common.Address, strategy common.Address) (uint64, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "getMaxMagnitude", operator, strategy)
+
+ if err != nil {
+ return *new(uint64), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64)
+
+ return out0, err
+
+}
+
+// GetMaxMagnitude is a free data retrieval call binding the contract method 0xa9333ec8.
+//
+// Solidity: function getMaxMagnitude(address operator, address strategy) view returns(uint64)
+func (_AllocationManagerStorage *AllocationManagerStorageSession) GetMaxMagnitude(operator common.Address, strategy common.Address) (uint64, error) {
+ return _AllocationManagerStorage.Contract.GetMaxMagnitude(&_AllocationManagerStorage.CallOpts, operator, strategy)
+}
+
+// GetMaxMagnitude is a free data retrieval call binding the contract method 0xa9333ec8.
+//
+// Solidity: function getMaxMagnitude(address operator, address strategy) view returns(uint64)
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetMaxMagnitude(operator common.Address, strategy common.Address) (uint64, error) {
+ return _AllocationManagerStorage.Contract.GetMaxMagnitude(&_AllocationManagerStorage.CallOpts, operator, strategy)
+}
+
+// GetMaxMagnitudes is a free data retrieval call binding the contract method 0x4a10ffe5.
+//
+// Solidity: function getMaxMagnitudes(address[] operators, address strategy) view returns(uint64[])
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) GetMaxMagnitudes(opts *bind.CallOpts, operators []common.Address, strategy common.Address) ([]uint64, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "getMaxMagnitudes", operators, strategy)
+
+ 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 0x4a10ffe5.
+//
+// Solidity: function getMaxMagnitudes(address[] operators, address strategy) view returns(uint64[])
+func (_AllocationManagerStorage *AllocationManagerStorageSession) GetMaxMagnitudes(operators []common.Address, strategy common.Address) ([]uint64, error) {
+ return _AllocationManagerStorage.Contract.GetMaxMagnitudes(&_AllocationManagerStorage.CallOpts, operators, strategy)
+}
+
+// GetMaxMagnitudes is a free data retrieval call binding the contract method 0x4a10ffe5.
+//
+// Solidity: function getMaxMagnitudes(address[] operators, address strategy) view returns(uint64[])
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetMaxMagnitudes(operators []common.Address, strategy common.Address) ([]uint64, error) {
+ return _AllocationManagerStorage.Contract.GetMaxMagnitudes(&_AllocationManagerStorage.CallOpts, operators, strategy)
+}
+
+// GetMaxMagnitudes0 is a free data retrieval call binding the contract method 0x547afb87.
+//
+// Solidity: function getMaxMagnitudes(address operator, address[] strategies) view returns(uint64[])
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) GetMaxMagnitudes0(opts *bind.CallOpts, operator common.Address, strategies []common.Address) ([]uint64, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "getMaxMagnitudes0", operator, strategies)
+
+ if err != nil {
+ return *new([]uint64), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]uint64)).(*[]uint64)
+
+ return out0, err
+
+}
+
+// GetMaxMagnitudes0 is a free data retrieval call binding the contract method 0x547afb87.
+//
+// Solidity: function getMaxMagnitudes(address operator, address[] strategies) view returns(uint64[])
+func (_AllocationManagerStorage *AllocationManagerStorageSession) GetMaxMagnitudes0(operator common.Address, strategies []common.Address) ([]uint64, error) {
+ return _AllocationManagerStorage.Contract.GetMaxMagnitudes0(&_AllocationManagerStorage.CallOpts, operator, strategies)
+}
+
+// GetMaxMagnitudes0 is a free data retrieval call binding the contract method 0x547afb87.
+//
+// Solidity: function getMaxMagnitudes(address operator, address[] strategies) view returns(uint64[])
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetMaxMagnitudes0(operator common.Address, strategies []common.Address) ([]uint64, error) {
+ return _AllocationManagerStorage.Contract.GetMaxMagnitudes0(&_AllocationManagerStorage.CallOpts, operator, strategies)
+}
+
+// GetMaxMagnitudesAtBlock is a free data retrieval call binding the contract method 0x94d7d00c.
+//
+// Solidity: function getMaxMagnitudesAtBlock(address operator, address[] strategies, uint32 blockNumber) view returns(uint64[])
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) GetMaxMagnitudesAtBlock(opts *bind.CallOpts, operator common.Address, strategies []common.Address, blockNumber uint32) ([]uint64, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "getMaxMagnitudesAtBlock", operator, strategies, blockNumber)
+
+ if err != nil {
+ return *new([]uint64), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]uint64)).(*[]uint64)
+
+ return out0, err
+
+}
+
+// GetMaxMagnitudesAtBlock is a free data retrieval call binding the contract method 0x94d7d00c.
+//
+// Solidity: function getMaxMagnitudesAtBlock(address operator, address[] strategies, uint32 blockNumber) view returns(uint64[])
+func (_AllocationManagerStorage *AllocationManagerStorageSession) GetMaxMagnitudesAtBlock(operator common.Address, strategies []common.Address, blockNumber uint32) ([]uint64, error) {
+ return _AllocationManagerStorage.Contract.GetMaxMagnitudesAtBlock(&_AllocationManagerStorage.CallOpts, operator, strategies, blockNumber)
+}
+
+// GetMaxMagnitudesAtBlock is a free data retrieval call binding the contract method 0x94d7d00c.
+//
+// Solidity: function getMaxMagnitudesAtBlock(address operator, address[] strategies, uint32 blockNumber) view returns(uint64[])
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetMaxMagnitudesAtBlock(operator common.Address, strategies []common.Address, blockNumber uint32) ([]uint64, error) {
+ return _AllocationManagerStorage.Contract.GetMaxMagnitudesAtBlock(&_AllocationManagerStorage.CallOpts, operator, strategies, blockNumber)
+}
+
+// GetMemberCount is a free data retrieval call binding the contract method 0xb2447af7.
+//
+// Solidity: function getMemberCount((address,uint32) operatorSet) view returns(uint256)
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) GetMemberCount(opts *bind.CallOpts, operatorSet OperatorSet) (*big.Int, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "getMemberCount", operatorSet)
+
+ if err != nil {
+ return *new(*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+
+ return out0, err
+
+}
+
+// GetMemberCount is a free data retrieval call binding the contract method 0xb2447af7.
+//
+// Solidity: function getMemberCount((address,uint32) operatorSet) view returns(uint256)
+func (_AllocationManagerStorage *AllocationManagerStorageSession) GetMemberCount(operatorSet OperatorSet) (*big.Int, error) {
+ return _AllocationManagerStorage.Contract.GetMemberCount(&_AllocationManagerStorage.CallOpts, operatorSet)
+}
+
+// GetMemberCount is a free data retrieval call binding the contract method 0xb2447af7.
+//
+// Solidity: function getMemberCount((address,uint32) operatorSet) view returns(uint256)
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetMemberCount(operatorSet OperatorSet) (*big.Int, error) {
+ return _AllocationManagerStorage.Contract.GetMemberCount(&_AllocationManagerStorage.CallOpts, operatorSet)
+}
+
+// GetMembers is a free data retrieval call binding the contract method 0x6e875dba.
+//
+// Solidity: function getMembers((address,uint32) operatorSet) view returns(address[] operators)
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) GetMembers(opts *bind.CallOpts, operatorSet OperatorSet) ([]common.Address, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "getMembers", operatorSet)
+
+ if err != nil {
+ return *new([]common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
+
+ return out0, err
+
+}
+
+// GetMembers is a free data retrieval call binding the contract method 0x6e875dba.
+//
+// Solidity: function getMembers((address,uint32) operatorSet) view returns(address[] operators)
+func (_AllocationManagerStorage *AllocationManagerStorageSession) GetMembers(operatorSet OperatorSet) ([]common.Address, error) {
+ return _AllocationManagerStorage.Contract.GetMembers(&_AllocationManagerStorage.CallOpts, operatorSet)
+}
+
+// GetMembers is a free data retrieval call binding the contract method 0x6e875dba.
+//
+// Solidity: function getMembers((address,uint32) operatorSet) view returns(address[] operators)
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetMembers(operatorSet OperatorSet) ([]common.Address, error) {
+ return _AllocationManagerStorage.Contract.GetMembers(&_AllocationManagerStorage.CallOpts, operatorSet)
+}
+
+// GetMinimumSlashableStake is a free data retrieval call binding the contract method 0x2bab2c4a.
+//
+// Solidity: function getMinimumSlashableStake((address,uint32) operatorSet, address[] operators, address[] strategies, uint32 futureBlock) view returns(uint256[][] slashableStake)
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) GetMinimumSlashableStake(opts *bind.CallOpts, operatorSet OperatorSet, operators []common.Address, strategies []common.Address, futureBlock uint32) ([][]*big.Int, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "getMinimumSlashableStake", operatorSet, operators, strategies, futureBlock)
+
+ if err != nil {
+ return *new([][]*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([][]*big.Int)).(*[][]*big.Int)
+
+ return out0, err
+
+}
+
+// GetMinimumSlashableStake is a free data retrieval call binding the contract method 0x2bab2c4a.
+//
+// Solidity: function getMinimumSlashableStake((address,uint32) operatorSet, address[] operators, address[] strategies, uint32 futureBlock) view returns(uint256[][] slashableStake)
+func (_AllocationManagerStorage *AllocationManagerStorageSession) GetMinimumSlashableStake(operatorSet OperatorSet, operators []common.Address, strategies []common.Address, futureBlock uint32) ([][]*big.Int, error) {
+ return _AllocationManagerStorage.Contract.GetMinimumSlashableStake(&_AllocationManagerStorage.CallOpts, operatorSet, operators, strategies, futureBlock)
+}
+
+// GetMinimumSlashableStake is a free data retrieval call binding the contract method 0x2bab2c4a.
+//
+// Solidity: function getMinimumSlashableStake((address,uint32) operatorSet, address[] operators, address[] strategies, uint32 futureBlock) view returns(uint256[][] slashableStake)
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetMinimumSlashableStake(operatorSet OperatorSet, operators []common.Address, strategies []common.Address, futureBlock uint32) ([][]*big.Int, error) {
+ return _AllocationManagerStorage.Contract.GetMinimumSlashableStake(&_AllocationManagerStorage.CallOpts, operatorSet, operators, strategies, futureBlock)
+}
+
+// GetOperatorSetCount is a free data retrieval call binding the contract method 0xba1a84e5.
+//
+// Solidity: function getOperatorSetCount(address avs) view returns(uint256)
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) GetOperatorSetCount(opts *bind.CallOpts, avs common.Address) (*big.Int, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "getOperatorSetCount", avs)
+
+ if err != nil {
+ return *new(*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+
+ return out0, err
+
+}
+
+// GetOperatorSetCount is a free data retrieval call binding the contract method 0xba1a84e5.
+//
+// Solidity: function getOperatorSetCount(address avs) view returns(uint256)
+func (_AllocationManagerStorage *AllocationManagerStorageSession) GetOperatorSetCount(avs common.Address) (*big.Int, error) {
+ return _AllocationManagerStorage.Contract.GetOperatorSetCount(&_AllocationManagerStorage.CallOpts, avs)
+}
+
+// GetOperatorSetCount is a free data retrieval call binding the contract method 0xba1a84e5.
+//
+// Solidity: function getOperatorSetCount(address avs) view returns(uint256)
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetOperatorSetCount(avs common.Address) (*big.Int, error) {
+ return _AllocationManagerStorage.Contract.GetOperatorSetCount(&_AllocationManagerStorage.CallOpts, avs)
+}
+
+// GetRegisteredSets is a free data retrieval call binding the contract method 0x79ae50cd.
+//
+// Solidity: function getRegisteredSets(address operator) view returns((address,uint32)[] operatorSets)
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) GetRegisteredSets(opts *bind.CallOpts, operator common.Address) ([]OperatorSet, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "getRegisteredSets", operator)
+
+ if err != nil {
+ return *new([]OperatorSet), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]OperatorSet)).(*[]OperatorSet)
+
+ return out0, err
+
+}
+
+// GetRegisteredSets is a free data retrieval call binding the contract method 0x79ae50cd.
+//
+// Solidity: function getRegisteredSets(address operator) view returns((address,uint32)[] operatorSets)
+func (_AllocationManagerStorage *AllocationManagerStorageSession) GetRegisteredSets(operator common.Address) ([]OperatorSet, error) {
+ return _AllocationManagerStorage.Contract.GetRegisteredSets(&_AllocationManagerStorage.CallOpts, operator)
+}
+
+// GetRegisteredSets is a free data retrieval call binding the contract method 0x79ae50cd.
+//
+// Solidity: function getRegisteredSets(address operator) view returns((address,uint32)[] operatorSets)
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetRegisteredSets(operator common.Address) ([]OperatorSet, error) {
+ return _AllocationManagerStorage.Contract.GetRegisteredSets(&_AllocationManagerStorage.CallOpts, operator)
+}
+
+// GetStrategiesInOperatorSet is a free data retrieval call binding the contract method 0x4177a87c.
+//
+// Solidity: function getStrategiesInOperatorSet((address,uint32) operatorSet) view returns(address[] strategies)
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) GetStrategiesInOperatorSet(opts *bind.CallOpts, operatorSet OperatorSet) ([]common.Address, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.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 (_AllocationManagerStorage *AllocationManagerStorageSession) GetStrategiesInOperatorSet(operatorSet OperatorSet) ([]common.Address, error) {
+ return _AllocationManagerStorage.Contract.GetStrategiesInOperatorSet(&_AllocationManagerStorage.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 (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetStrategiesInOperatorSet(operatorSet OperatorSet) ([]common.Address, error) {
+ return _AllocationManagerStorage.Contract.GetStrategiesInOperatorSet(&_AllocationManagerStorage.CallOpts, operatorSet)
+}
+
+// GetStrategyAllocations is a free data retrieval call binding the contract method 0x40120dab.
+//
+// Solidity: function getStrategyAllocations(address operator, address strategy) view returns((address,uint32)[], (uint64,int128,uint32)[])
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) GetStrategyAllocations(opts *bind.CallOpts, operator common.Address, strategy common.Address) ([]OperatorSet, []IAllocationManagerTypesAllocation, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "getStrategyAllocations", operator, strategy)
+
+ if err != nil {
+ return *new([]OperatorSet), *new([]IAllocationManagerTypesAllocation), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]OperatorSet)).(*[]OperatorSet)
+ out1 := *abi.ConvertType(out[1], new([]IAllocationManagerTypesAllocation)).(*[]IAllocationManagerTypesAllocation)
+
+ return out0, out1, err
+
+}
+
+// GetStrategyAllocations is a free data retrieval call binding the contract method 0x40120dab.
+//
+// Solidity: function getStrategyAllocations(address operator, address strategy) view returns((address,uint32)[], (uint64,int128,uint32)[])
+func (_AllocationManagerStorage *AllocationManagerStorageSession) GetStrategyAllocations(operator common.Address, strategy common.Address) ([]OperatorSet, []IAllocationManagerTypesAllocation, error) {
+ return _AllocationManagerStorage.Contract.GetStrategyAllocations(&_AllocationManagerStorage.CallOpts, operator, strategy)
+}
+
+// GetStrategyAllocations is a free data retrieval call binding the contract method 0x40120dab.
+//
+// Solidity: function getStrategyAllocations(address operator, address strategy) view returns((address,uint32)[], (uint64,int128,uint32)[])
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) GetStrategyAllocations(operator common.Address, strategy common.Address) ([]OperatorSet, []IAllocationManagerTypesAllocation, error) {
+ return _AllocationManagerStorage.Contract.GetStrategyAllocations(&_AllocationManagerStorage.CallOpts, operator, strategy)
+}
+
+// IsMemberOfOperatorSet is a free data retrieval call binding the contract method 0x670d3ba2.
+//
+// Solidity: function isMemberOfOperatorSet(address operator, (address,uint32) operatorSet) view returns(bool)
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) IsMemberOfOperatorSet(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet) (bool, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "isMemberOfOperatorSet", operator, operatorSet)
+
+ if err != nil {
+ return *new(bool), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
+
+ return out0, err
+
+}
+
+// IsMemberOfOperatorSet is a free data retrieval call binding the contract method 0x670d3ba2.
+//
+// Solidity: function isMemberOfOperatorSet(address operator, (address,uint32) operatorSet) view returns(bool)
+func (_AllocationManagerStorage *AllocationManagerStorageSession) IsMemberOfOperatorSet(operator common.Address, operatorSet OperatorSet) (bool, error) {
+ return _AllocationManagerStorage.Contract.IsMemberOfOperatorSet(&_AllocationManagerStorage.CallOpts, operator, operatorSet)
+}
+
+// IsMemberOfOperatorSet is a free data retrieval call binding the contract method 0x670d3ba2.
+//
+// Solidity: function isMemberOfOperatorSet(address operator, (address,uint32) operatorSet) view returns(bool)
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) IsMemberOfOperatorSet(operator common.Address, operatorSet OperatorSet) (bool, error) {
+ return _AllocationManagerStorage.Contract.IsMemberOfOperatorSet(&_AllocationManagerStorage.CallOpts, operator, operatorSet)
+}
+
+// IsOperatorSet is a free data retrieval call binding the contract method 0x260dc758.
+//
+// Solidity: function isOperatorSet((address,uint32) operatorSet) view returns(bool)
+func (_AllocationManagerStorage *AllocationManagerStorageCaller) IsOperatorSet(opts *bind.CallOpts, operatorSet OperatorSet) (bool, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.contract.Call(opts, &out, "isOperatorSet", operatorSet)
+
+ if err != nil {
+ return *new(bool), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
+
+ return out0, err
+
+}
+
+// IsOperatorSet is a free data retrieval call binding the contract method 0x260dc758.
+//
+// Solidity: function isOperatorSet((address,uint32) operatorSet) view returns(bool)
+func (_AllocationManagerStorage *AllocationManagerStorageSession) IsOperatorSet(operatorSet OperatorSet) (bool, error) {
+ return _AllocationManagerStorage.Contract.IsOperatorSet(&_AllocationManagerStorage.CallOpts, operatorSet)
+}
+
+// IsOperatorSet is a free data retrieval call binding the contract method 0x260dc758.
+//
+// Solidity: function isOperatorSet((address,uint32) operatorSet) view returns(bool)
+func (_AllocationManagerStorage *AllocationManagerStorageCallerSession) IsOperatorSet(operatorSet OperatorSet) (bool, error) {
+ return _AllocationManagerStorage.Contract.IsOperatorSet(&_AllocationManagerStorage.CallOpts, 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 (_AllocationManagerStorage *AllocationManagerStorageCaller) IsOperatorSlashable(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet) (bool, error) {
+ var out []interface{}
+ err := _AllocationManagerStorage.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 (_AllocationManagerStorage *AllocationManagerStorageSession) IsOperatorSlashable(operator common.Address, operatorSet OperatorSet) (bool, error) {
+ return _AllocationManagerStorage.Contract.IsOperatorSlashable(&_AllocationManagerStorage.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 (_AllocationManagerStorage *AllocationManagerStorageCallerSession) IsOperatorSlashable(operator common.Address, operatorSet OperatorSet) (bool, error) {
+ return _AllocationManagerStorage.Contract.IsOperatorSlashable(&_AllocationManagerStorage.CallOpts, operator, operatorSet)
+}
+
+// AddStrategiesToOperatorSet is a paid mutator transaction binding the contract method 0x50feea20.
+//
+// Solidity: function addStrategiesToOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactor) AddStrategiesToOperatorSet(opts *bind.TransactOpts, avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) {
+ return _AllocationManagerStorage.contract.Transact(opts, "addStrategiesToOperatorSet", avs, operatorSetId, strategies)
+}
+
+// AddStrategiesToOperatorSet is a paid mutator transaction binding the contract method 0x50feea20.
+//
+// Solidity: function addStrategiesToOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageSession) AddStrategiesToOperatorSet(avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.AddStrategiesToOperatorSet(&_AllocationManagerStorage.TransactOpts, avs, operatorSetId, strategies)
+}
+
+// AddStrategiesToOperatorSet is a paid mutator transaction binding the contract method 0x50feea20.
+//
+// Solidity: function addStrategiesToOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactorSession) AddStrategiesToOperatorSet(avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.AddStrategiesToOperatorSet(&_AllocationManagerStorage.TransactOpts, avs, operatorSetId, strategies)
+}
+
+// ClearDeallocationQueue is a paid mutator transaction binding the contract method 0x4b5046ef.
+//
+// Solidity: function clearDeallocationQueue(address operator, address[] strategies, uint16[] numToClear) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactor) ClearDeallocationQueue(opts *bind.TransactOpts, operator common.Address, strategies []common.Address, numToClear []uint16) (*types.Transaction, error) {
+ return _AllocationManagerStorage.contract.Transact(opts, "clearDeallocationQueue", operator, strategies, numToClear)
+}
+
+// ClearDeallocationQueue is a paid mutator transaction binding the contract method 0x4b5046ef.
+//
+// Solidity: function clearDeallocationQueue(address operator, address[] strategies, uint16[] numToClear) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageSession) ClearDeallocationQueue(operator common.Address, strategies []common.Address, numToClear []uint16) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.ClearDeallocationQueue(&_AllocationManagerStorage.TransactOpts, operator, strategies, numToClear)
+}
+
+// ClearDeallocationQueue is a paid mutator transaction binding the contract method 0x4b5046ef.
+//
+// Solidity: function clearDeallocationQueue(address operator, address[] strategies, uint16[] numToClear) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactorSession) ClearDeallocationQueue(operator common.Address, strategies []common.Address, numToClear []uint16) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.ClearDeallocationQueue(&_AllocationManagerStorage.TransactOpts, operator, strategies, numToClear)
+}
+
+// CreateOperatorSets is a paid mutator transaction binding the contract method 0x261f84e0.
+//
+// Solidity: function createOperatorSets(address avs, (uint32,address[])[] params) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactor) CreateOperatorSets(opts *bind.TransactOpts, avs common.Address, params []IAllocationManagerTypesCreateSetParams) (*types.Transaction, error) {
+ return _AllocationManagerStorage.contract.Transact(opts, "createOperatorSets", avs, params)
+}
+
+// CreateOperatorSets is a paid mutator transaction binding the contract method 0x261f84e0.
+//
+// Solidity: function createOperatorSets(address avs, (uint32,address[])[] params) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageSession) CreateOperatorSets(avs common.Address, params []IAllocationManagerTypesCreateSetParams) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.CreateOperatorSets(&_AllocationManagerStorage.TransactOpts, avs, params)
+}
+
+// CreateOperatorSets is a paid mutator transaction binding the contract method 0x261f84e0.
+//
+// Solidity: function createOperatorSets(address avs, (uint32,address[])[] params) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactorSession) CreateOperatorSets(avs common.Address, params []IAllocationManagerTypesCreateSetParams) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.CreateOperatorSets(&_AllocationManagerStorage.TransactOpts, avs, params)
+}
+
+// DeregisterFromOperatorSets is a paid mutator transaction binding the contract method 0x6e3492b5.
+//
+// Solidity: function deregisterFromOperatorSets((address,address,uint32[]) params) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactor) DeregisterFromOperatorSets(opts *bind.TransactOpts, params IAllocationManagerTypesDeregisterParams) (*types.Transaction, error) {
+ return _AllocationManagerStorage.contract.Transact(opts, "deregisterFromOperatorSets", params)
+}
+
+// DeregisterFromOperatorSets is a paid mutator transaction binding the contract method 0x6e3492b5.
+//
+// Solidity: function deregisterFromOperatorSets((address,address,uint32[]) params) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageSession) DeregisterFromOperatorSets(params IAllocationManagerTypesDeregisterParams) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.DeregisterFromOperatorSets(&_AllocationManagerStorage.TransactOpts, params)
+}
+
+// DeregisterFromOperatorSets is a paid mutator transaction binding the contract method 0x6e3492b5.
+//
+// Solidity: function deregisterFromOperatorSets((address,address,uint32[]) params) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactorSession) DeregisterFromOperatorSets(params IAllocationManagerTypesDeregisterParams) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.DeregisterFromOperatorSets(&_AllocationManagerStorage.TransactOpts, params)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _AllocationManagerStorage.contract.Transact(opts, "initialize", initialOwner, initialPausedStatus)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.Initialize(&_AllocationManagerStorage.TransactOpts, initialOwner, initialPausedStatus)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactorSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.Initialize(&_AllocationManagerStorage.TransactOpts, initialOwner, initialPausedStatus)
+}
+
+// ModifyAllocations is a paid mutator transaction binding the contract method 0x952899ee.
+//
+// Solidity: function modifyAllocations(address operator, ((address,uint32),address[],uint64[])[] params) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactor) ModifyAllocations(opts *bind.TransactOpts, operator common.Address, params []IAllocationManagerTypesAllocateParams) (*types.Transaction, error) {
+ return _AllocationManagerStorage.contract.Transact(opts, "modifyAllocations", operator, params)
+}
+
+// ModifyAllocations is a paid mutator transaction binding the contract method 0x952899ee.
+//
+// Solidity: function modifyAllocations(address operator, ((address,uint32),address[],uint64[])[] params) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageSession) ModifyAllocations(operator common.Address, params []IAllocationManagerTypesAllocateParams) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.ModifyAllocations(&_AllocationManagerStorage.TransactOpts, operator, params)
+}
+
+// ModifyAllocations is a paid mutator transaction binding the contract method 0x952899ee.
+//
+// Solidity: function modifyAllocations(address operator, ((address,uint32),address[],uint64[])[] params) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactorSession) ModifyAllocations(operator common.Address, params []IAllocationManagerTypesAllocateParams) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.ModifyAllocations(&_AllocationManagerStorage.TransactOpts, operator, params)
+}
+
+// RegisterForOperatorSets is a paid mutator transaction binding the contract method 0xadc2e3d9.
+//
+// Solidity: function registerForOperatorSets(address operator, (address,uint32[],bytes) params) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactor) RegisterForOperatorSets(opts *bind.TransactOpts, operator common.Address, params IAllocationManagerTypesRegisterParams) (*types.Transaction, error) {
+ return _AllocationManagerStorage.contract.Transact(opts, "registerForOperatorSets", operator, params)
+}
+
+// RegisterForOperatorSets is a paid mutator transaction binding the contract method 0xadc2e3d9.
+//
+// Solidity: function registerForOperatorSets(address operator, (address,uint32[],bytes) params) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageSession) RegisterForOperatorSets(operator common.Address, params IAllocationManagerTypesRegisterParams) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.RegisterForOperatorSets(&_AllocationManagerStorage.TransactOpts, operator, params)
+}
+
+// RegisterForOperatorSets is a paid mutator transaction binding the contract method 0xadc2e3d9.
+//
+// Solidity: function registerForOperatorSets(address operator, (address,uint32[],bytes) params) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactorSession) RegisterForOperatorSets(operator common.Address, params IAllocationManagerTypesRegisterParams) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.RegisterForOperatorSets(&_AllocationManagerStorage.TransactOpts, operator, params)
+}
+
+// RemoveStrategiesFromOperatorSet is a paid mutator transaction binding the contract method 0xb66bd989.
+//
+// Solidity: function removeStrategiesFromOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactor) RemoveStrategiesFromOperatorSet(opts *bind.TransactOpts, avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) {
+ return _AllocationManagerStorage.contract.Transact(opts, "removeStrategiesFromOperatorSet", avs, operatorSetId, strategies)
+}
+
+// RemoveStrategiesFromOperatorSet is a paid mutator transaction binding the contract method 0xb66bd989.
+//
+// Solidity: function removeStrategiesFromOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageSession) RemoveStrategiesFromOperatorSet(avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.RemoveStrategiesFromOperatorSet(&_AllocationManagerStorage.TransactOpts, avs, operatorSetId, strategies)
+}
+
+// RemoveStrategiesFromOperatorSet is a paid mutator transaction binding the contract method 0xb66bd989.
+//
+// Solidity: function removeStrategiesFromOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactorSession) RemoveStrategiesFromOperatorSet(avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.RemoveStrategiesFromOperatorSet(&_AllocationManagerStorage.TransactOpts, avs, operatorSetId, strategies)
+}
+
+// SetAVSRegistrar is a paid mutator transaction binding the contract method 0xd3d96ff4.
+//
+// Solidity: function setAVSRegistrar(address avs, address registrar) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactor) SetAVSRegistrar(opts *bind.TransactOpts, avs common.Address, registrar common.Address) (*types.Transaction, error) {
+ return _AllocationManagerStorage.contract.Transact(opts, "setAVSRegistrar", avs, registrar)
+}
+
+// SetAVSRegistrar is a paid mutator transaction binding the contract method 0xd3d96ff4.
+//
+// Solidity: function setAVSRegistrar(address avs, address registrar) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageSession) SetAVSRegistrar(avs common.Address, registrar common.Address) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.SetAVSRegistrar(&_AllocationManagerStorage.TransactOpts, avs, registrar)
+}
+
+// SetAVSRegistrar is a paid mutator transaction binding the contract method 0xd3d96ff4.
+//
+// Solidity: function setAVSRegistrar(address avs, address registrar) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactorSession) SetAVSRegistrar(avs common.Address, registrar common.Address) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.SetAVSRegistrar(&_AllocationManagerStorage.TransactOpts, avs, registrar)
+}
+
+// SetAllocationDelay is a paid mutator transaction binding the contract method 0x56c483e6.
+//
+// Solidity: function setAllocationDelay(address operator, uint32 delay) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactor) SetAllocationDelay(opts *bind.TransactOpts, operator common.Address, delay uint32) (*types.Transaction, error) {
+ return _AllocationManagerStorage.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 (_AllocationManagerStorage *AllocationManagerStorageSession) SetAllocationDelay(operator common.Address, delay uint32) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.SetAllocationDelay(&_AllocationManagerStorage.TransactOpts, operator, delay)
+}
+
+// SetAllocationDelay is a paid mutator transaction binding the contract method 0x56c483e6.
+//
+// Solidity: function setAllocationDelay(address operator, uint32 delay) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactorSession) SetAllocationDelay(operator common.Address, delay uint32) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.SetAllocationDelay(&_AllocationManagerStorage.TransactOpts, operator, delay)
+}
+
+// SlashOperator is a paid mutator transaction binding the contract method 0x36352057.
+//
+// Solidity: function slashOperator(address avs, (address,uint32,address[],uint256[],string) params) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactor) SlashOperator(opts *bind.TransactOpts, avs common.Address, params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) {
+ return _AllocationManagerStorage.contract.Transact(opts, "slashOperator", avs, params)
+}
+
+// SlashOperator is a paid mutator transaction binding the contract method 0x36352057.
+//
+// Solidity: function slashOperator(address avs, (address,uint32,address[],uint256[],string) params) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageSession) SlashOperator(avs common.Address, params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.SlashOperator(&_AllocationManagerStorage.TransactOpts, avs, params)
+}
+
+// SlashOperator is a paid mutator transaction binding the contract method 0x36352057.
+//
+// Solidity: function slashOperator(address avs, (address,uint32,address[],uint256[],string) params) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactorSession) SlashOperator(avs common.Address, params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.SlashOperator(&_AllocationManagerStorage.TransactOpts, avs, params)
+}
+
+// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa9821821.
+//
+// Solidity: function updateAVSMetadataURI(address avs, string metadataURI) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactor) UpdateAVSMetadataURI(opts *bind.TransactOpts, avs common.Address, metadataURI string) (*types.Transaction, error) {
+ return _AllocationManagerStorage.contract.Transact(opts, "updateAVSMetadataURI", avs, metadataURI)
+}
+
+// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa9821821.
+//
+// Solidity: function updateAVSMetadataURI(address avs, string metadataURI) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageSession) UpdateAVSMetadataURI(avs common.Address, metadataURI string) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.UpdateAVSMetadataURI(&_AllocationManagerStorage.TransactOpts, avs, metadataURI)
+}
+
+// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa9821821.
+//
+// Solidity: function updateAVSMetadataURI(address avs, string metadataURI) returns()
+func (_AllocationManagerStorage *AllocationManagerStorageTransactorSession) UpdateAVSMetadataURI(avs common.Address, metadataURI string) (*types.Transaction, error) {
+ return _AllocationManagerStorage.Contract.UpdateAVSMetadataURI(&_AllocationManagerStorage.TransactOpts, avs, metadataURI)
+}
+
+// AllocationManagerStorageAVSMetadataURIUpdatedIterator is returned from FilterAVSMetadataURIUpdated and is used to iterate over the raw logs and unpacked data for AVSMetadataURIUpdated events raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageAVSMetadataURIUpdatedIterator struct {
+ Event *AllocationManagerStorageAVSMetadataURIUpdated // 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 *AllocationManagerStorageAVSMetadataURIUpdatedIterator) 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(AllocationManagerStorageAVSMetadataURIUpdated)
+ 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(AllocationManagerStorageAVSMetadataURIUpdated)
+ 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 *AllocationManagerStorageAVSMetadataURIUpdatedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerStorageAVSMetadataURIUpdatedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerStorageAVSMetadataURIUpdated represents a AVSMetadataURIUpdated event raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageAVSMetadataURIUpdated struct {
+ Avs common.Address
+ MetadataURI string
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAVSMetadataURIUpdated is a free log retrieval operation binding the contract event 0xa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713.
+//
+// Solidity: event AVSMetadataURIUpdated(address indexed avs, string metadataURI)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) FilterAVSMetadataURIUpdated(opts *bind.FilterOpts, avs []common.Address) (*AllocationManagerStorageAVSMetadataURIUpdatedIterator, error) {
+
+ var avsRule []interface{}
+ for _, avsItem := range avs {
+ avsRule = append(avsRule, avsItem)
+ }
+
+ logs, sub, err := _AllocationManagerStorage.contract.FilterLogs(opts, "AVSMetadataURIUpdated", avsRule)
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerStorageAVSMetadataURIUpdatedIterator{contract: _AllocationManagerStorage.contract, event: "AVSMetadataURIUpdated", logs: logs, sub: sub}, nil
+}
+
+// WatchAVSMetadataURIUpdated is a free log subscription operation binding the contract event 0xa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713.
+//
+// Solidity: event AVSMetadataURIUpdated(address indexed avs, string metadataURI)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) WatchAVSMetadataURIUpdated(opts *bind.WatchOpts, sink chan<- *AllocationManagerStorageAVSMetadataURIUpdated, avs []common.Address) (event.Subscription, error) {
+
+ var avsRule []interface{}
+ for _, avsItem := range avs {
+ avsRule = append(avsRule, avsItem)
+ }
+
+ logs, sub, err := _AllocationManagerStorage.contract.WatchLogs(opts, "AVSMetadataURIUpdated", avsRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(AllocationManagerStorageAVSMetadataURIUpdated)
+ if err := _AllocationManagerStorage.contract.UnpackLog(event, "AVSMetadataURIUpdated", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParseAVSMetadataURIUpdated is a log parse operation binding the contract event 0xa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713.
+//
+// Solidity: event AVSMetadataURIUpdated(address indexed avs, string metadataURI)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) ParseAVSMetadataURIUpdated(log types.Log) (*AllocationManagerStorageAVSMetadataURIUpdated, error) {
+ event := new(AllocationManagerStorageAVSMetadataURIUpdated)
+ if err := _AllocationManagerStorage.contract.UnpackLog(event, "AVSMetadataURIUpdated", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerStorageAVSRegistrarSetIterator is returned from FilterAVSRegistrarSet and is used to iterate over the raw logs and unpacked data for AVSRegistrarSet events raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageAVSRegistrarSetIterator struct {
+ Event *AllocationManagerStorageAVSRegistrarSet // 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 *AllocationManagerStorageAVSRegistrarSetIterator) 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(AllocationManagerStorageAVSRegistrarSet)
+ 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(AllocationManagerStorageAVSRegistrarSet)
+ 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 *AllocationManagerStorageAVSRegistrarSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerStorageAVSRegistrarSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerStorageAVSRegistrarSet represents a AVSRegistrarSet event raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageAVSRegistrarSet struct {
+ Avs common.Address
+ Registrar common.Address
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAVSRegistrarSet is a free log retrieval operation binding the contract event 0x2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf85.
+//
+// Solidity: event AVSRegistrarSet(address avs, address registrar)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) FilterAVSRegistrarSet(opts *bind.FilterOpts) (*AllocationManagerStorageAVSRegistrarSetIterator, error) {
+
+ logs, sub, err := _AllocationManagerStorage.contract.FilterLogs(opts, "AVSRegistrarSet")
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerStorageAVSRegistrarSetIterator{contract: _AllocationManagerStorage.contract, event: "AVSRegistrarSet", logs: logs, sub: sub}, nil
+}
+
+// WatchAVSRegistrarSet is a free log subscription operation binding the contract event 0x2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf85.
+//
+// Solidity: event AVSRegistrarSet(address avs, address registrar)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) WatchAVSRegistrarSet(opts *bind.WatchOpts, sink chan<- *AllocationManagerStorageAVSRegistrarSet) (event.Subscription, error) {
+
+ logs, sub, err := _AllocationManagerStorage.contract.WatchLogs(opts, "AVSRegistrarSet")
+ 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(AllocationManagerStorageAVSRegistrarSet)
+ if err := _AllocationManagerStorage.contract.UnpackLog(event, "AVSRegistrarSet", 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
+}
+
+// ParseAVSRegistrarSet is a log parse operation binding the contract event 0x2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf85.
+//
+// Solidity: event AVSRegistrarSet(address avs, address registrar)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) ParseAVSRegistrarSet(log types.Log) (*AllocationManagerStorageAVSRegistrarSet, error) {
+ event := new(AllocationManagerStorageAVSRegistrarSet)
+ if err := _AllocationManagerStorage.contract.UnpackLog(event, "AVSRegistrarSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerStorageAllocationDelaySetIterator is returned from FilterAllocationDelaySet and is used to iterate over the raw logs and unpacked data for AllocationDelaySet events raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageAllocationDelaySetIterator struct {
+ Event *AllocationManagerStorageAllocationDelaySet // 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 *AllocationManagerStorageAllocationDelaySetIterator) 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(AllocationManagerStorageAllocationDelaySet)
+ 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(AllocationManagerStorageAllocationDelaySet)
+ 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 *AllocationManagerStorageAllocationDelaySetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerStorageAllocationDelaySetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerStorageAllocationDelaySet represents a AllocationDelaySet event raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageAllocationDelaySet struct {
+ Operator common.Address
+ Delay uint32
+ EffectBlock 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 effectBlock)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) FilterAllocationDelaySet(opts *bind.FilterOpts) (*AllocationManagerStorageAllocationDelaySetIterator, error) {
+
+ logs, sub, err := _AllocationManagerStorage.contract.FilterLogs(opts, "AllocationDelaySet")
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerStorageAllocationDelaySetIterator{contract: _AllocationManagerStorage.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 effectBlock)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) WatchAllocationDelaySet(opts *bind.WatchOpts, sink chan<- *AllocationManagerStorageAllocationDelaySet) (event.Subscription, error) {
+
+ logs, sub, err := _AllocationManagerStorage.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(AllocationManagerStorageAllocationDelaySet)
+ if err := _AllocationManagerStorage.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 effectBlock)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) ParseAllocationDelaySet(log types.Log) (*AllocationManagerStorageAllocationDelaySet, error) {
+ event := new(AllocationManagerStorageAllocationDelaySet)
+ if err := _AllocationManagerStorage.contract.UnpackLog(event, "AllocationDelaySet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerStorageAllocationUpdatedIterator is returned from FilterAllocationUpdated and is used to iterate over the raw logs and unpacked data for AllocationUpdated events raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageAllocationUpdatedIterator struct {
+ Event *AllocationManagerStorageAllocationUpdated // 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 *AllocationManagerStorageAllocationUpdatedIterator) 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(AllocationManagerStorageAllocationUpdated)
+ 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(AllocationManagerStorageAllocationUpdated)
+ 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 *AllocationManagerStorageAllocationUpdatedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerStorageAllocationUpdatedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerStorageAllocationUpdated represents a AllocationUpdated event raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageAllocationUpdated struct {
+ Operator common.Address
+ OperatorSet OperatorSet
+ Strategy common.Address
+ Magnitude uint64
+ EffectBlock uint32
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAllocationUpdated is a free log retrieval operation binding the contract event 0x1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd.
+//
+// Solidity: event AllocationUpdated(address operator, (address,uint32) operatorSet, address strategy, uint64 magnitude, uint32 effectBlock)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) FilterAllocationUpdated(opts *bind.FilterOpts) (*AllocationManagerStorageAllocationUpdatedIterator, error) {
+
+ logs, sub, err := _AllocationManagerStorage.contract.FilterLogs(opts, "AllocationUpdated")
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerStorageAllocationUpdatedIterator{contract: _AllocationManagerStorage.contract, event: "AllocationUpdated", logs: logs, sub: sub}, nil
+}
+
+// WatchAllocationUpdated is a free log subscription operation binding the contract event 0x1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd.
+//
+// Solidity: event AllocationUpdated(address operator, (address,uint32) operatorSet, address strategy, uint64 magnitude, uint32 effectBlock)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) WatchAllocationUpdated(opts *bind.WatchOpts, sink chan<- *AllocationManagerStorageAllocationUpdated) (event.Subscription, error) {
+
+ logs, sub, err := _AllocationManagerStorage.contract.WatchLogs(opts, "AllocationUpdated")
+ 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(AllocationManagerStorageAllocationUpdated)
+ if err := _AllocationManagerStorage.contract.UnpackLog(event, "AllocationUpdated", 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
+}
+
+// ParseAllocationUpdated is a log parse operation binding the contract event 0x1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd.
+//
+// Solidity: event AllocationUpdated(address operator, (address,uint32) operatorSet, address strategy, uint64 magnitude, uint32 effectBlock)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) ParseAllocationUpdated(log types.Log) (*AllocationManagerStorageAllocationUpdated, error) {
+ event := new(AllocationManagerStorageAllocationUpdated)
+ if err := _AllocationManagerStorage.contract.UnpackLog(event, "AllocationUpdated", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerStorageEncumberedMagnitudeUpdatedIterator is returned from FilterEncumberedMagnitudeUpdated and is used to iterate over the raw logs and unpacked data for EncumberedMagnitudeUpdated events raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageEncumberedMagnitudeUpdatedIterator struct {
+ Event *AllocationManagerStorageEncumberedMagnitudeUpdated // 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 *AllocationManagerStorageEncumberedMagnitudeUpdatedIterator) 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(AllocationManagerStorageEncumberedMagnitudeUpdated)
+ 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(AllocationManagerStorageEncumberedMagnitudeUpdated)
+ 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 *AllocationManagerStorageEncumberedMagnitudeUpdatedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerStorageEncumberedMagnitudeUpdatedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerStorageEncumberedMagnitudeUpdated represents a EncumberedMagnitudeUpdated event raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageEncumberedMagnitudeUpdated 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 (_AllocationManagerStorage *AllocationManagerStorageFilterer) FilterEncumberedMagnitudeUpdated(opts *bind.FilterOpts) (*AllocationManagerStorageEncumberedMagnitudeUpdatedIterator, error) {
+
+ logs, sub, err := _AllocationManagerStorage.contract.FilterLogs(opts, "EncumberedMagnitudeUpdated")
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerStorageEncumberedMagnitudeUpdatedIterator{contract: _AllocationManagerStorage.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 (_AllocationManagerStorage *AllocationManagerStorageFilterer) WatchEncumberedMagnitudeUpdated(opts *bind.WatchOpts, sink chan<- *AllocationManagerStorageEncumberedMagnitudeUpdated) (event.Subscription, error) {
+
+ logs, sub, err := _AllocationManagerStorage.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(AllocationManagerStorageEncumberedMagnitudeUpdated)
+ if err := _AllocationManagerStorage.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 (_AllocationManagerStorage *AllocationManagerStorageFilterer) ParseEncumberedMagnitudeUpdated(log types.Log) (*AllocationManagerStorageEncumberedMagnitudeUpdated, error) {
+ event := new(AllocationManagerStorageEncumberedMagnitudeUpdated)
+ if err := _AllocationManagerStorage.contract.UnpackLog(event, "EncumberedMagnitudeUpdated", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerStorageMaxMagnitudeUpdatedIterator is returned from FilterMaxMagnitudeUpdated and is used to iterate over the raw logs and unpacked data for MaxMagnitudeUpdated events raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageMaxMagnitudeUpdatedIterator struct {
+ Event *AllocationManagerStorageMaxMagnitudeUpdated // 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 *AllocationManagerStorageMaxMagnitudeUpdatedIterator) 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(AllocationManagerStorageMaxMagnitudeUpdated)
+ 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(AllocationManagerStorageMaxMagnitudeUpdated)
+ 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 *AllocationManagerStorageMaxMagnitudeUpdatedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerStorageMaxMagnitudeUpdatedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerStorageMaxMagnitudeUpdated represents a MaxMagnitudeUpdated event raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageMaxMagnitudeUpdated struct {
+ Operator common.Address
+ Strategy common.Address
+ MaxMagnitude 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 maxMagnitude)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) FilterMaxMagnitudeUpdated(opts *bind.FilterOpts) (*AllocationManagerStorageMaxMagnitudeUpdatedIterator, error) {
+
+ logs, sub, err := _AllocationManagerStorage.contract.FilterLogs(opts, "MaxMagnitudeUpdated")
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerStorageMaxMagnitudeUpdatedIterator{contract: _AllocationManagerStorage.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 maxMagnitude)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) WatchMaxMagnitudeUpdated(opts *bind.WatchOpts, sink chan<- *AllocationManagerStorageMaxMagnitudeUpdated) (event.Subscription, error) {
+
+ logs, sub, err := _AllocationManagerStorage.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(AllocationManagerStorageMaxMagnitudeUpdated)
+ if err := _AllocationManagerStorage.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 maxMagnitude)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) ParseMaxMagnitudeUpdated(log types.Log) (*AllocationManagerStorageMaxMagnitudeUpdated, error) {
+ event := new(AllocationManagerStorageMaxMagnitudeUpdated)
+ if err := _AllocationManagerStorage.contract.UnpackLog(event, "MaxMagnitudeUpdated", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerStorageOperatorAddedToOperatorSetIterator is returned from FilterOperatorAddedToOperatorSet and is used to iterate over the raw logs and unpacked data for OperatorAddedToOperatorSet events raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageOperatorAddedToOperatorSetIterator struct {
+ Event *AllocationManagerStorageOperatorAddedToOperatorSet // 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 *AllocationManagerStorageOperatorAddedToOperatorSetIterator) 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(AllocationManagerStorageOperatorAddedToOperatorSet)
+ 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(AllocationManagerStorageOperatorAddedToOperatorSet)
+ 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 *AllocationManagerStorageOperatorAddedToOperatorSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerStorageOperatorAddedToOperatorSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerStorageOperatorAddedToOperatorSet represents a OperatorAddedToOperatorSet event raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageOperatorAddedToOperatorSet struct {
+ Operator common.Address
+ OperatorSet OperatorSet
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterOperatorAddedToOperatorSet is a free log retrieval operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e.
+//
+// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) FilterOperatorAddedToOperatorSet(opts *bind.FilterOpts, operator []common.Address) (*AllocationManagerStorageOperatorAddedToOperatorSetIterator, error) {
+
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
+
+ logs, sub, err := _AllocationManagerStorage.contract.FilterLogs(opts, "OperatorAddedToOperatorSet", operatorRule)
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerStorageOperatorAddedToOperatorSetIterator{contract: _AllocationManagerStorage.contract, event: "OperatorAddedToOperatorSet", logs: logs, sub: sub}, nil
+}
+
+// WatchOperatorAddedToOperatorSet is a free log subscription operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e.
+//
+// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) WatchOperatorAddedToOperatorSet(opts *bind.WatchOpts, sink chan<- *AllocationManagerStorageOperatorAddedToOperatorSet, operator []common.Address) (event.Subscription, error) {
+
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
+
+ logs, sub, err := _AllocationManagerStorage.contract.WatchLogs(opts, "OperatorAddedToOperatorSet", 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(AllocationManagerStorageOperatorAddedToOperatorSet)
+ if err := _AllocationManagerStorage.contract.UnpackLog(event, "OperatorAddedToOperatorSet", 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
+}
+
+// ParseOperatorAddedToOperatorSet is a log parse operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e.
+//
+// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) ParseOperatorAddedToOperatorSet(log types.Log) (*AllocationManagerStorageOperatorAddedToOperatorSet, error) {
+ event := new(AllocationManagerStorageOperatorAddedToOperatorSet)
+ if err := _AllocationManagerStorage.contract.UnpackLog(event, "OperatorAddedToOperatorSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerStorageOperatorRemovedFromOperatorSetIterator is returned from FilterOperatorRemovedFromOperatorSet and is used to iterate over the raw logs and unpacked data for OperatorRemovedFromOperatorSet events raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageOperatorRemovedFromOperatorSetIterator struct {
+ Event *AllocationManagerStorageOperatorRemovedFromOperatorSet // 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 *AllocationManagerStorageOperatorRemovedFromOperatorSetIterator) 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(AllocationManagerStorageOperatorRemovedFromOperatorSet)
+ 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(AllocationManagerStorageOperatorRemovedFromOperatorSet)
+ 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 *AllocationManagerStorageOperatorRemovedFromOperatorSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerStorageOperatorRemovedFromOperatorSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerStorageOperatorRemovedFromOperatorSet represents a OperatorRemovedFromOperatorSet event raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageOperatorRemovedFromOperatorSet struct {
+ Operator common.Address
+ OperatorSet OperatorSet
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterOperatorRemovedFromOperatorSet is a free log retrieval operation binding the contract event 0xad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe.
+//
+// Solidity: event OperatorRemovedFromOperatorSet(address indexed operator, (address,uint32) operatorSet)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) FilterOperatorRemovedFromOperatorSet(opts *bind.FilterOpts, operator []common.Address) (*AllocationManagerStorageOperatorRemovedFromOperatorSetIterator, error) {
+
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
+
+ logs, sub, err := _AllocationManagerStorage.contract.FilterLogs(opts, "OperatorRemovedFromOperatorSet", operatorRule)
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerStorageOperatorRemovedFromOperatorSetIterator{contract: _AllocationManagerStorage.contract, event: "OperatorRemovedFromOperatorSet", logs: logs, sub: sub}, nil
+}
+
+// WatchOperatorRemovedFromOperatorSet is a free log subscription operation binding the contract event 0xad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe.
+//
+// Solidity: event OperatorRemovedFromOperatorSet(address indexed operator, (address,uint32) operatorSet)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) WatchOperatorRemovedFromOperatorSet(opts *bind.WatchOpts, sink chan<- *AllocationManagerStorageOperatorRemovedFromOperatorSet, operator []common.Address) (event.Subscription, error) {
+
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
+
+ logs, sub, err := _AllocationManagerStorage.contract.WatchLogs(opts, "OperatorRemovedFromOperatorSet", 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(AllocationManagerStorageOperatorRemovedFromOperatorSet)
+ if err := _AllocationManagerStorage.contract.UnpackLog(event, "OperatorRemovedFromOperatorSet", 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
+}
+
+// ParseOperatorRemovedFromOperatorSet is a log parse operation binding the contract event 0xad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe.
+//
+// Solidity: event OperatorRemovedFromOperatorSet(address indexed operator, (address,uint32) operatorSet)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) ParseOperatorRemovedFromOperatorSet(log types.Log) (*AllocationManagerStorageOperatorRemovedFromOperatorSet, error) {
+ event := new(AllocationManagerStorageOperatorRemovedFromOperatorSet)
+ if err := _AllocationManagerStorage.contract.UnpackLog(event, "OperatorRemovedFromOperatorSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerStorageOperatorSetCreatedIterator is returned from FilterOperatorSetCreated and is used to iterate over the raw logs and unpacked data for OperatorSetCreated events raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageOperatorSetCreatedIterator struct {
+ Event *AllocationManagerStorageOperatorSetCreated // 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 *AllocationManagerStorageOperatorSetCreatedIterator) 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(AllocationManagerStorageOperatorSetCreated)
+ 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(AllocationManagerStorageOperatorSetCreated)
+ 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 *AllocationManagerStorageOperatorSetCreatedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerStorageOperatorSetCreatedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerStorageOperatorSetCreated represents a OperatorSetCreated event raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageOperatorSetCreated struct {
+ OperatorSet OperatorSet
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterOperatorSetCreated is a free log retrieval operation binding the contract event 0x31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c.
+//
+// Solidity: event OperatorSetCreated((address,uint32) operatorSet)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) FilterOperatorSetCreated(opts *bind.FilterOpts) (*AllocationManagerStorageOperatorSetCreatedIterator, error) {
+
+ logs, sub, err := _AllocationManagerStorage.contract.FilterLogs(opts, "OperatorSetCreated")
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerStorageOperatorSetCreatedIterator{contract: _AllocationManagerStorage.contract, event: "OperatorSetCreated", logs: logs, sub: sub}, nil
+}
+
+// WatchOperatorSetCreated is a free log subscription operation binding the contract event 0x31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c.
+//
+// Solidity: event OperatorSetCreated((address,uint32) operatorSet)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) WatchOperatorSetCreated(opts *bind.WatchOpts, sink chan<- *AllocationManagerStorageOperatorSetCreated) (event.Subscription, error) {
+
+ logs, sub, err := _AllocationManagerStorage.contract.WatchLogs(opts, "OperatorSetCreated")
+ 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(AllocationManagerStorageOperatorSetCreated)
+ if err := _AllocationManagerStorage.contract.UnpackLog(event, "OperatorSetCreated", 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
+}
+
+// ParseOperatorSetCreated is a log parse operation binding the contract event 0x31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c.
+//
+// Solidity: event OperatorSetCreated((address,uint32) operatorSet)
+func (_AllocationManagerStorage *AllocationManagerStorageFilterer) ParseOperatorSetCreated(log types.Log) (*AllocationManagerStorageOperatorSetCreated, error) {
+ event := new(AllocationManagerStorageOperatorSetCreated)
+ if err := _AllocationManagerStorage.contract.UnpackLog(event, "OperatorSetCreated", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerStorageOperatorSlashedIterator is returned from FilterOperatorSlashed and is used to iterate over the raw logs and unpacked data for OperatorSlashed events raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageOperatorSlashedIterator struct {
+ Event *AllocationManagerStorageOperatorSlashed // 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 *AllocationManagerStorageOperatorSlashedIterator) 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(AllocationManagerStorageOperatorSlashed)
+ 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(AllocationManagerStorageOperatorSlashed)
+ 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 *AllocationManagerStorageOperatorSlashedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerStorageOperatorSlashedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerStorageOperatorSlashed represents a OperatorSlashed event raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageOperatorSlashed 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 (_AllocationManagerStorage *AllocationManagerStorageFilterer) FilterOperatorSlashed(opts *bind.FilterOpts) (*AllocationManagerStorageOperatorSlashedIterator, error) {
+
+ logs, sub, err := _AllocationManagerStorage.contract.FilterLogs(opts, "OperatorSlashed")
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerStorageOperatorSlashedIterator{contract: _AllocationManagerStorage.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 (_AllocationManagerStorage *AllocationManagerStorageFilterer) WatchOperatorSlashed(opts *bind.WatchOpts, sink chan<- *AllocationManagerStorageOperatorSlashed) (event.Subscription, error) {
+
+ logs, sub, err := _AllocationManagerStorage.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(AllocationManagerStorageOperatorSlashed)
+ if err := _AllocationManagerStorage.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 (_AllocationManagerStorage *AllocationManagerStorageFilterer) ParseOperatorSlashed(log types.Log) (*AllocationManagerStorageOperatorSlashed, error) {
+ event := new(AllocationManagerStorageOperatorSlashed)
+ if err := _AllocationManagerStorage.contract.UnpackLog(event, "OperatorSlashed", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerStorageStrategyAddedToOperatorSetIterator is returned from FilterStrategyAddedToOperatorSet and is used to iterate over the raw logs and unpacked data for StrategyAddedToOperatorSet events raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageStrategyAddedToOperatorSetIterator struct {
+ Event *AllocationManagerStorageStrategyAddedToOperatorSet // 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 *AllocationManagerStorageStrategyAddedToOperatorSetIterator) 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(AllocationManagerStorageStrategyAddedToOperatorSet)
+ 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(AllocationManagerStorageStrategyAddedToOperatorSet)
+ 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 *AllocationManagerStorageStrategyAddedToOperatorSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerStorageStrategyAddedToOperatorSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerStorageStrategyAddedToOperatorSet represents a StrategyAddedToOperatorSet event raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageStrategyAddedToOperatorSet 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 (_AllocationManagerStorage *AllocationManagerStorageFilterer) FilterStrategyAddedToOperatorSet(opts *bind.FilterOpts) (*AllocationManagerStorageStrategyAddedToOperatorSetIterator, error) {
+
+ logs, sub, err := _AllocationManagerStorage.contract.FilterLogs(opts, "StrategyAddedToOperatorSet")
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerStorageStrategyAddedToOperatorSetIterator{contract: _AllocationManagerStorage.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 (_AllocationManagerStorage *AllocationManagerStorageFilterer) WatchStrategyAddedToOperatorSet(opts *bind.WatchOpts, sink chan<- *AllocationManagerStorageStrategyAddedToOperatorSet) (event.Subscription, error) {
+
+ logs, sub, err := _AllocationManagerStorage.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(AllocationManagerStorageStrategyAddedToOperatorSet)
+ if err := _AllocationManagerStorage.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 (_AllocationManagerStorage *AllocationManagerStorageFilterer) ParseStrategyAddedToOperatorSet(log types.Log) (*AllocationManagerStorageStrategyAddedToOperatorSet, error) {
+ event := new(AllocationManagerStorageStrategyAddedToOperatorSet)
+ if err := _AllocationManagerStorage.contract.UnpackLog(event, "StrategyAddedToOperatorSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// AllocationManagerStorageStrategyRemovedFromOperatorSetIterator is returned from FilterStrategyRemovedFromOperatorSet and is used to iterate over the raw logs and unpacked data for StrategyRemovedFromOperatorSet events raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageStrategyRemovedFromOperatorSetIterator struct {
+ Event *AllocationManagerStorageStrategyRemovedFromOperatorSet // 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 *AllocationManagerStorageStrategyRemovedFromOperatorSetIterator) 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(AllocationManagerStorageStrategyRemovedFromOperatorSet)
+ 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(AllocationManagerStorageStrategyRemovedFromOperatorSet)
+ 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 *AllocationManagerStorageStrategyRemovedFromOperatorSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *AllocationManagerStorageStrategyRemovedFromOperatorSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// AllocationManagerStorageStrategyRemovedFromOperatorSet represents a StrategyRemovedFromOperatorSet event raised by the AllocationManagerStorage contract.
+type AllocationManagerStorageStrategyRemovedFromOperatorSet 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 (_AllocationManagerStorage *AllocationManagerStorageFilterer) FilterStrategyRemovedFromOperatorSet(opts *bind.FilterOpts) (*AllocationManagerStorageStrategyRemovedFromOperatorSetIterator, error) {
+
+ logs, sub, err := _AllocationManagerStorage.contract.FilterLogs(opts, "StrategyRemovedFromOperatorSet")
+ if err != nil {
+ return nil, err
+ }
+ return &AllocationManagerStorageStrategyRemovedFromOperatorSetIterator{contract: _AllocationManagerStorage.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 (_AllocationManagerStorage *AllocationManagerStorageFilterer) WatchStrategyRemovedFromOperatorSet(opts *bind.WatchOpts, sink chan<- *AllocationManagerStorageStrategyRemovedFromOperatorSet) (event.Subscription, error) {
+
+ logs, sub, err := _AllocationManagerStorage.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(AllocationManagerStorageStrategyRemovedFromOperatorSet)
+ if err := _AllocationManagerStorage.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 (_AllocationManagerStorage *AllocationManagerStorageFilterer) ParseStrategyRemovedFromOperatorSet(log types.Log) (*AllocationManagerStorageStrategyRemovedFromOperatorSet, error) {
+ event := new(AllocationManagerStorageStrategyRemovedFromOperatorSet)
+ if err := _AllocationManagerStorage.contract.UnpackLog(event, "StrategyRemovedFromOperatorSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
diff --git a/pkg/bindings/BackingEigen/binding.go b/pkg/bindings/BackingEigen/binding.go
index 7ac86cfea0..5367ed4b91 100644
--- a/pkg/bindings/BackingEigen/binding.go
+++ b/pkg/bindings/BackingEigen/binding.go
@@ -38,7 +38,7 @@ type ERC20VotesUpgradeableCheckpoint struct {
// BackingEigenMetaData contains all meta data concerning the BackingEigen contract.
var BackingEigenMetaData = &bind.MetaData{
ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_EIGEN\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"EIGEN\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowedFrom\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowedTo\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"checkpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"pos\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structERC20VotesUpgradeable.Checkpoint\",\"components\":[{\"name\":\"fromBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"votes\",\"type\":\"uint224\",\"internalType\":\"uint224\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"clock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint48\",\"internalType\":\"uint48\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateBySig\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegates\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableTransferRestrictions\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"eip712Domain\",\"inputs\":[],\"outputs\":[{\"name\":\"fields\",\"type\":\"bytes1\",\"internalType\":\"bytes1\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extensions\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"inputs\":[{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isMinter\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permit\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAllowedFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"isAllowedFrom\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAllowedTo\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"isAllowedTo\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setIsMinter\",\"inputs\":[{\"name\":\"minterAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newStatus\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferRestrictionsDisabledAfter\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Backed\",\"inputs\":[],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateChanged\",\"inputs\":[{\"name\":\"delegator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"fromDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"toDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"name\":\"delegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"previousBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"inputs\":[],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"IsMinterModified\",\"inputs\":[{\"name\":\"minterAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newStatus\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"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\":\"SetAllowedFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"isAllowedFrom\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetAllowedTo\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"isAllowedTo\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransferRestrictionsDisabled\",\"inputs\":[],\"anonymous\":false}]",
- Bin: "0x60a06040523480156200001157600080fd5b5060405162002d9738038062002d97833981016040819052620000349162000113565b6001600160a01b0381166080526200004b62000052565b5062000145565b600054610100900460ff1615620000bf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000111576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012657600080fd5b81516001600160a01b03811681146200013e57600080fd5b9392505050565b608051612c2162000176600039600081816105f801528181610de301528181610e0e0152610e390152612c216000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c80637ecebe001161013b578063aa271e1a116100b8578063dd62ed3e1161007c578063dd62ed3e14610588578063eb415f451461059b578063f1127ed8146105a3578063f2fde38b146105e0578063fdc371ce146105f357600080fd5b8063aa271e1a14610518578063b8c255941461053c578063c3cda5201461054f578063c4d66de814610562578063d505accf1461057557600080fd5b806395d89b41116100ff57806395d89b41146104cd5780639ab24eb0146104d55780639aec4bae146104e8578063a457c2d7146104f2578063a9059cbb1461050557600080fd5b80637ecebe001461045c57806384b0196e1461046f5780638da5cb5b1461048a5780638e539e8c1461049b57806391ddadf4146104ae57600080fd5b806340c10f19116101c957806366eb399f1161018d57806366eb399f146103cc5780636fcfff45146103df57806370a0823114610407578063715018a61461043057806378aa33ba1461043857600080fd5b806340c10f191461032557806342966c68146103385780634bf5d7e91461034b578063587cde1e146103755780635c19a95c146103b957600080fd5b806323b872dd1161021057806323b872dd146102d5578063313ce567146102e85780633644e515146102f757806339509351146102ff5780633a46b1a81461031257600080fd5b80630455e6941461024d57806306fdde0314610286578063095ea7b31461029b57806318160ddd146102ae5780631ffacdef146102c0575b600080fd5b61027161025b3660046127bb565b6101316020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61028e61061a565b60405161027d9190612823565b6102716102a9366004612836565b6106ac565b6067545b60405190815260200161027d565b6102d36102ce366004612860565b6106c4565b005b6102716102e336600461289c565b6106da565b6040516012815260200161027d565b6102b26106fe565b61027161030d366004612836565b61070d565b6102b2610320366004612836565b61072f565b6102d3610333366004612836565b6107b9565b6102d36103463660046128d8565b610835565b60408051808201909152600e81526d06d6f64653d74696d657374616d760941b602082015261028e565b6103a16103833660046127bb565b6001600160a01b03908116600090815260fe60205260409020541690565b6040516001600160a01b03909116815260200161027d565b6102d36103c73660046127bb565b610842565b6102d36103da366004612860565b61084c565b6103f26103ed3660046127bb565b6108c5565b60405163ffffffff909116815260200161027d565b6102b26104153660046127bb565b6001600160a01b031660009081526065602052604090205490565b6102d36108ed565b6102716104463660046127bb565b6101326020526000908152604090205460ff1681565b6102b261046a3660046127bb565b610901565b61047761091f565b60405161027d97969594939291906128f1565b6033546001600160a01b03166103a1565b6102b26104a93660046128d8565b6109bd565b6104b6610a25565b60405165ffffffffffff909116815260200161027d565b61028e610a30565b6102b26104e33660046127bb565b610a3f565b6102b26101305481565b610271610500366004612836565b610ac1565b610271610513366004612836565b610b3c565b6102716105263660046127bb565b6101336020526000908152604090205460ff1681565b6102d361054a366004612860565b610b4a565b6102d361055d366004612998565b610b5c565b6102d36105703660046127bb565b610c92565b6102d36105833660046129f0565b610edc565b6102b2610596366004612a5a565b611040565b6102d361106b565b6105b66105b1366004612a8d565b61113b565b60408051825163ffffffff1681526020928301516001600160e01b0316928101929092520161027d565b6102d36105ee3660046127bb565b6111bf565b6103a17f000000000000000000000000000000000000000000000000000000000000000081565b60606068805461062990612ac2565b80601f016020809104026020016040519081016040528092919081815260200182805461065590612ac2565b80156106a25780601f10610677576101008083540402835291602001916106a2565b820191906000526020600020905b81548152906001019060200180831161068557829003601f168201915b5050505050905090565b6000336106ba818585611235565b5060019392505050565b6106cc611359565b6106d682826113b3565b5050565b6000336106e8858285611414565b6106f385858561148e565b506001949350505050565b600061070861164a565b905090565b6000336106ba8185856107208383611040565b61072a9190612b0d565b611235565b6000610739610a25565b65ffffffffffff1682106107905760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064015b60405180910390fd5b6001600160a01b038316600090815260ff602052604090206107b29083611654565b9392505050565b336000908152610133602052604090205460ff1661082b5760405162461bcd60e51b815260206004820152602960248201527f4261636b696e67456967656e2e6d696e743a2063616c6c6572206973206e6f7460448201526810309036b4b73a32b960b91b6064820152608401610787565b6106d6828261173d565b61083f33826117c8565b50565b61083f33826117e1565b610854611359565b816001600160a01b03167f0124b12503bddc2616c0f3f54fd23ed283f5ef0c1483a75409e42612176b8bde82604051610891911515815260200190565b60405180910390a26001600160a01b0391909116600090815261013360205260409020805460ff1916911515919091179055565b6001600160a01b038116600090815260ff60205260408120546108e79061185b565b92915050565b6108f5611359565b6108ff60006118c4565b565b6001600160a01b038116600090815260cb60205260408120546108e7565b6000606080600080600060606097546000801b14801561093f5750609854155b6109835760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610787565b61098b611916565b610993611925565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b60006109c7610a25565b65ffffffffffff168210610a195760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b6044820152606401610787565b6108e761010083611654565b600061070842611934565b60606069805461062990612ac2565b6001600160a01b038116600090815260ff60205260408120548015610aae576001600160a01b038316600090815260ff6020526040902080546000198301908110610a8c57610a8c612b25565b60009182526020909120015464010000000090046001600160e01b0316610ab1565b60005b6001600160e01b03169392505050565b60003381610acf8286611040565b905083811015610b2f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610787565b6106f38286868403611235565b6000336106ba81858561148e565b610b52611359565b6106d6828261199b565b83421115610bac5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610787565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610c2690610c1e9060a001604051602081830303815290604052805190602001206119f4565b858585611a21565b9050610c3181611a49565b8614610c7f5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610787565b610c8981886117e1565b50505050505050565b600054610100900460ff1615808015610cb25750600054600160ff909116105b80610ccc5750303b158015610ccc575060005460ff166001145b610d2f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610787565b6000805460ff191660011790558015610d52576000805461ff0019166101001790555b610d5a611a71565b610da76040518060400160405280600d81526020016c2130b1b5b4b7339022b4b3b2b760991b815250604051806040016040528060068152602001653122a4a3a2a760d11b815250611aa0565b610db0826118c4565b610dd7604051806040016040528060068152602001653122a4a3a2a760d11b815250611ad1565b60001961013055610e097f000000000000000000000000000000000000000000000000000000000000000060016113b3565b610e347f0000000000000000000000000000000000000000000000000000000000000000600161199b565b610e6a7f00000000000000000000000000000000000000000000000000000000000000006b05686877afb5cbccbf73400061173d565b6040517fb7c23c1e2e36f298e9879a88ecfcd07e28fbb439bcfa9c78ca1363ca14370d2690600090a180156106d6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b83421115610f2c5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610787565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610f5b8c611a49565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610fb6826119f4565b90506000610fc682878787611a21565b9050896001600160a01b0316816001600160a01b0316146110295760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610787565b6110348a8a8a611235565b50505050505050505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b611073611359565b600019610130541461110a5760405162461bcd60e51b815260206004820152605460248201527f4261636b696e67456967656e2e64697361626c655472616e736665725265737460448201527f72696374696f6e733a207472616e73666572207265737472696374696f6e7320606482015273185c9948185b1c9958591e48191a5cd8589b195960621b608482015260a401610787565b60006101308190556040517f2b18986d3ba809db2f13a5d7bf17f60d357b37d9cbb55dd71cbbac8dc4060f649190a1565b60408051808201909152600080825260208201526001600160a01b038316600090815260ff60205260409020805463ffffffff841690811061117f5761117f612b25565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b6111c7611359565b6001600160a01b03811661122c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610787565b61083f816118c4565b6001600160a01b0383166112975760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610787565b6001600160a01b0382166112f85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610787565b6001600160a01b0383811660008181526066602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6033546001600160a01b031633146108ff5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610787565b6001600160a01b03821660008181526101316020908152604091829020805460ff191685151590811790915591519182527fcf20b1ecb604b0e8888d579c64e8a3b10e590d45c1c2dddb393bed284362227191015b60405180910390a25050565b60006114208484611040565b90506000198114611488578181101561147b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610787565b6114888484848403611235565b50505050565b6001600160a01b0383166114f25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610787565b6001600160a01b0382166115545760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610787565b61155f838383611b1b565b6001600160a01b038316600090815260656020526040902054818110156115d75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610787565b6001600160a01b0380851660008181526065602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116379086815260200190565b60405180910390a3611488848484611bf9565b6000610708611c2b565b8154600090818160058111156116ae57600061166f84611c9f565b6116799085612b3b565b600088815260209020909150869082015463ffffffff16111561169e578091506116ac565b6116a9816001612b0d565b92505b505b808210156116fb5760006116c28383611d84565b600088815260209020909150869082015463ffffffff1611156116e7578091506116f5565b6116f2816001612b0d565b92505b506116ae565b8015611727576000868152602090208101600019015464010000000090046001600160e01b031661172a565b60005b6001600160e01b03169695505050505050565b6117478282611d9f565b6067546001600160e01b0310156117b95760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b6064820152608401610787565b611488610100611e7483611e80565b6117d28282611ff5565b61148861010061213c83611e80565b6001600160a01b03828116600081815260fe6020818152604080842080546065845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611488828483612148565b600063ffffffff8211156118c05760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610787565b5090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606099805461062990612ac2565b6060609a805461062990612ac2565b600065ffffffffffff8211156118c05760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608401610787565b6001600160a01b03821660008181526101326020908152604091829020805460ff191685151590811790915591519182527f72a561d1af7409467dae4f1e9fc52590a9335a1dda17727e2b6aa8c4db35109b9101611408565b60006108e7611a0161164a565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000611a3287878787612285565b91509150611a3f81612349565b5095945050505050565b6001600160a01b038116600090815260cb602052604090208054600181018255905b50919050565b600054610100900460ff16611a985760405162461bcd60e51b815260040161078790612b52565b6108ff612497565b600054610100900460ff16611ac75760405162461bcd60e51b815260040161078790612b52565b6106d682826124c7565b600054610100900460ff16611af85760405162461bcd60e51b815260040161078790612b52565b61083f81604051806040016040528060018152602001603160f81b815250612515565b610130544211611bf4576001600160a01b0383166000908152610131602052604090205460ff1680611b6657506001600160a01b0382166000908152610132602052604090205460ff165b80611b7857506001600160a01b038316155b611bf45760405162461bcd60e51b815260206004820152604160248201527f4261636b696e67456967656e2e5f6265666f7265546f6b656e5472616e73666560448201527f723a2066726f6d206f7220746f206d7573742062652077686974656c697374656064820152601960fa1b608482015260a401610787565b505050565b6001600160a01b03838116600090815260fe6020526040808220548584168352912054611bf492918216911683612148565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611c56612572565b611c5e6125cb565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600081611cae57506000919050565b60006001611cbb846125fc565b901c6001901b90506001818481611cd457611cd4612b9d565b048201901c90506001818481611cec57611cec612b9d565b048201901c90506001818481611d0457611d04612b9d565b048201901c90506001818481611d1c57611d1c612b9d565b048201901c90506001818481611d3457611d34612b9d565b048201901c90506001818481611d4c57611d4c612b9d565b048201901c90506001818481611d6457611d64612b9d565b048201901c90506107b281828581611d7e57611d7e612b9d565b04612690565b6000611d936002848418612bb3565b6107b290848416612b0d565b6001600160a01b038216611df55760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610787565b611e0160008383611b1b565b8060676000828254611e139190612b0d565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36106d660008383611bf9565b60006107b28284612b0d565b82546000908190818115611ecd5760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152611ee2565b60408051808201909152600080825260208201525b905080602001516001600160e01b03169350611f0284868863ffffffff16565b9250600082118015611f2c5750611f17610a25565b65ffffffffffff16816000015163ffffffff16145b15611f7157611f3a836126a6565b60008881526020902083016000190180546001600160e01b03929092166401000000000263ffffffff909216919091179055611feb565b866040518060400160405280611f95611f88610a25565b65ffffffffffff1661185b565b63ffffffff168152602001611fa9866126a6565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b6001600160a01b0382166120555760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610787565b61206182600083611b1b565b6001600160a01b038216600090815260656020526040902054818110156120d55760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610787565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611bf483600084611bf9565b60006107b28284612b3b565b816001600160a01b0316836001600160a01b03161415801561216a5750600081115b15611bf4576001600160a01b038316156121f8576001600160a01b038316600090815260ff6020526040812081906121a59061213c85611e80565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516121ed929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615611bf4576001600160a01b038216600090815260ff60205260408120819061222e90611e7485611e80565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612276929190918252602082015260400190565b60405180910390a25050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156122bc5750600090506003612340565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612310573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661233957600060019250925050612340565b9150600090505b94509492505050565b600081600481111561235d5761235d612bd5565b14156123665750565b600181600481111561237a5761237a612bd5565b14156123c85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610787565b60028160048111156123dc576123dc612bd5565b141561242a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610787565b600381600481111561243e5761243e612bd5565b141561083f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610787565b600054610100900460ff166124be5760405162461bcd60e51b815260040161078790612b52565b6108ff336118c4565b600054610100900460ff166124ee5760405162461bcd60e51b815260040161078790612b52565b815161250190606890602085019061270f565b508051611bf490606990602084019061270f565b600054610100900460ff1661253c5760405162461bcd60e51b815260040161078790612b52565b815161254f90609990602085019061270f565b50805161256390609a90602084019061270f565b50506000609781905560985550565b60008061257d611916565b805190915015612594578051602090910120919050565b60975480156125a35792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806125d6611925565b8051909150156125ed578051602090910120919050565b60985480156125a35792915050565b600080608083901c1561261157608092831c92015b604083901c1561262357604092831c92015b602083901c1561263557602092831c92015b601083901c1561264757601092831c92015b600883901c1561265957600892831c92015b600483901c1561266b57600492831c92015b600283901c1561267d57600292831c92015b600183901c156108e75760010192915050565b600081831061269f57816107b2565b5090919050565b60006001600160e01b038211156118c05760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610787565b82805461271b90612ac2565b90600052602060002090601f01602090048101928261273d5760008555612783565b82601f1061275657805160ff1916838001178555612783565b82800160010185558215612783579182015b82811115612783578251825591602001919060010190612768565b506118c09291505b808211156118c0576000815560010161278b565b80356001600160a01b03811681146127b657600080fd5b919050565b6000602082840312156127cd57600080fd5b6107b28261279f565b6000815180845260005b818110156127fc576020818501810151868301820152016127e0565b8181111561280e576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006107b260208301846127d6565b6000806040838503121561284957600080fd5b6128528361279f565b946020939093013593505050565b6000806040838503121561287357600080fd5b61287c8361279f565b91506020830135801515811461289157600080fd5b809150509250929050565b6000806000606084860312156128b157600080fd5b6128ba8461279f565b92506128c86020850161279f565b9150604084013590509250925092565b6000602082840312156128ea57600080fd5b5035919050565b60ff60f81b881681526000602060e08184015261291160e084018a6127d6565b8381036040850152612923818a6127d6565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561297557835183529284019291840191600101612959565b50909c9b505050505050505050505050565b803560ff811681146127b657600080fd5b60008060008060008060c087890312156129b157600080fd5b6129ba8761279f565b955060208701359450604087013593506129d660608801612987565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215612a0b57600080fd5b612a148861279f565b9650612a226020890161279f565b95506040880135945060608801359350612a3e60808901612987565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215612a6d57600080fd5b612a768361279f565b9150612a846020840161279f565b90509250929050565b60008060408385031215612aa057600080fd5b612aa98361279f565b9150602083013563ffffffff8116811461289157600080fd5b600181811c90821680612ad657607f821691505b60208210811415611a6b57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115612b2057612b20612af7565b500190565b634e487b7160e01b600052603260045260246000fd5b600082821015612b4d57612b4d612af7565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082612bd057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220b77d75f4e98a5308daac223aefba713fd83afd956f154c8e7a629733e54a88bf64736f6c634300080c0033",
+ Bin: "0x60a060405234801561000f575f5ffd5b50604051612d11380380612d1183398101604081905261002e91610105565b6001600160a01b038116608052610043610049565b50610132565b5f54610100900460ff16156100b45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610103575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b5f60208284031215610115575f5ffd5b81516001600160a01b038116811461012b575f5ffd5b9392505050565b608051612bb261015f5f395f81816105e901528181610dae01528181610dd90152610e040152612bb25ff3fe608060405234801561000f575f5ffd5b506004361061023f575f3560e01c80637ecebe0011610135578063aa271e1a116100b4578063dd62ed3e11610079578063dd62ed3e14610579578063eb415f451461058c578063f1127ed814610594578063f2fde38b146105d1578063fdc371ce146105e4575f5ffd5b8063aa271e1a1461050a578063b8c255941461052d578063c3cda52014610540578063c4d66de814610553578063d505accf14610566575f5ffd5b806395d89b41116100fa57806395d89b41146104bf5780639ab24eb0146104c75780639aec4bae146104da578063a457c2d7146104e4578063a9059cbb146104f7575f5ffd5b80637ecebe001461044e57806384b0196e146104615780638da5cb5b1461047c5780638e539e8c1461048d57806391ddadf4146104a0575f5ffd5b806340c10f19116101c157806366eb399f1161018657806366eb399f146103c05780636fcfff45146103d357806370a08231146103fb578063715018a61461042357806378aa33ba1461042b575f5ffd5b806340c10f191461031a57806342966c681461032d5780634bf5d7e914610340578063587cde1e1461036a5780635c19a95c146103ad575f5ffd5b806323b872dd1161020757806323b872dd146102ca578063313ce567146102dd5780633644e515146102ec57806339509351146102f45780633a46b1a814610307575f5ffd5b80630455e6941461024357806306fdde031461027b578063095ea7b31461029057806318160ddd146102a35780631ffacdef146102b5575b5f5ffd5b610266610251366004612682565b6101316020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61028361060b565b60405161027291906126c9565b61026661029e3660046126db565b61069b565b6067545b604051908152602001610272565b6102c86102c3366004612703565b6106b4565b005b6102666102d836600461273c565b6106ca565b60405160128152602001610272565b6102a76106ed565b6102666103023660046126db565b6106fb565b6102a76103153660046126db565b61071c565b6102c86103283660046126db565b6107a4565b6102c861033b366004612776565b61081f565b60408051808201909152600e81526d06d6f64653d74696d657374616d760941b6020820152610283565b610395610378366004612682565b6001600160a01b039081165f90815260fe60205260409020541690565b6040516001600160a01b039091168152602001610272565b6102c86103bb366004612682565b61082c565b6102c86103ce366004612703565b610836565b6103e66103e1366004612682565b6108ae565b60405163ffffffff9091168152602001610272565b6102a7610409366004612682565b6001600160a01b03165f9081526065602052604090205490565b6102c86108cf565b610266610439366004612682565b6101326020525f908152604090205460ff1681565b6102a761045c366004612682565b6108e2565b6104696108ff565b604051610272979695949392919061278d565b6033546001600160a01b0316610395565b6102a761049b366004612776565b610998565b6104a86109ff565b60405165ffffffffffff9091168152602001610272565b610283610a09565b6102a76104d5366004612682565b610a18565b6102a76101305481565b6102666104f23660046126db565b610a95565b6102666105053660046126db565b610b0f565b610266610518366004612682565b6101336020525f908152604090205460ff1681565b6102c861053b366004612703565b610b1c565b6102c861054e366004612833565b610b2e565b6102c8610561366004612682565b610c63565b6102c8610574366004612887565b610ea5565b6102a76105873660046128ed565b611006565b6102c8611030565b6105a76105a236600461291e565b6110fe565b60408051825163ffffffff1681526020928301516001600160e01b03169281019290925201610272565b6102c86105df366004612682565b61117f565b6103957f000000000000000000000000000000000000000000000000000000000000000081565b60606068805461061a90612950565b80601f016020809104026020016040519081016040528092919081815260200182805461064690612950565b80156106915780601f1061066857610100808354040283529160200191610691565b820191905f5260205f20905b81548152906001019060200180831161067457829003601f168201915b5050505050905090565b5f336106a88185856111f5565b60019150505b92915050565b6106bc611318565b6106c68282611372565b5050565b5f336106d78582856113d2565b6106e285858561144a565b506001949350505050565b5f6106f6611604565b905090565b5f336106a881858561070d8383611006565b6107179190612996565b6111f5565b5f6107256109ff565b65ffffffffffff16821061077c5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064015b60405180910390fd5b6001600160a01b0383165f90815260ff6020526040902061079d908361160d565b9392505050565b335f908152610133602052604090205460ff166108155760405162461bcd60e51b815260206004820152602960248201527f4261636b696e67456967656e2e6d696e743a2063616c6c6572206973206e6f7460448201526810309036b4b73a32b960b91b6064820152608401610773565b6106c682826116ee565b6108293382611779565b50565b6108293382611792565b61083e611318565b816001600160a01b03167f0124b12503bddc2616c0f3f54fd23ed283f5ef0c1483a75409e42612176b8bde8260405161087b911515815260200190565b60405180910390a26001600160a01b03919091165f90815261013360205260409020805460ff1916911515919091179055565b6001600160a01b0381165f90815260ff60205260408120546106ae9061180b565b6108d7611318565b6108e05f611873565b565b6001600160a01b0381165f90815260cb60205260408120546106ae565b5f6060805f5f5f60606097545f5f1b14801561091b5750609854155b61095f5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610773565b6109676118c4565b61096f6118d3565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f6109a16109ff565b65ffffffffffff1682106109f35760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b6044820152606401610773565b6106ae6101008361160d565b5f6106f6426118e2565b60606069805461061a90612950565b6001600160a01b0381165f90815260ff60205260408120548015610a83576001600160a01b0383165f90815260ff6020526040902080545f198301908110610a6257610a626129bd565b5f9182526020909120015464010000000090046001600160e01b0316610a85565b5f5b6001600160e01b03169392505050565b5f3381610aa28286611006565b905083811015610b025760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610773565b6106e282868684036111f5565b5f336106a881858561144a565b610b24611318565b6106c68282611948565b83421115610b7e5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610773565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590525f90610bf790610bef9060a001604051602081830303815290604052805190602001206119a0565b8585856119cc565b9050610c02816119f2565b8614610c505760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610773565b610c5a8188611792565b50505050505050565b5f54610100900460ff1615808015610c8157505f54600160ff909116105b80610c9a5750303b158015610c9a57505f5460ff166001145b610cfd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610773565b5f805460ff191660011790558015610d1e575f805461ff0019166101001790555b610d26611a19565b610d736040518060400160405280600d81526020016c2130b1b5b4b7339022b4b3b2b760991b815250604051806040016040528060068152602001653122a4a3a2a760d11b815250611a47565b610d7c82611873565b610da3604051806040016040528060068152602001653122a4a3a2a760d11b815250611a77565b5f1961013055610dd47f00000000000000000000000000000000000000000000000000000000000000006001611372565b610dff7f00000000000000000000000000000000000000000000000000000000000000006001611948565b610e357f00000000000000000000000000000000000000000000000000000000000000006b05686877afb5cbccbf7340006116ee565b6040517fb7c23c1e2e36f298e9879a88ecfcd07e28fbb439bcfa9c78ca1363ca14370d26905f90a180156106c6575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b83421115610ef55760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610773565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610f238c6119f2565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f610f7d826119a0565b90505f610f8c828787876119cc565b9050896001600160a01b0316816001600160a01b031614610fef5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610773565b610ffa8a8a8a6111f5565b50505050505050505050565b6001600160a01b039182165f90815260666020908152604080832093909416825291909152205490565b611038611318565b5f1961013054146110ce5760405162461bcd60e51b815260206004820152605460248201527f4261636b696e67456967656e2e64697361626c655472616e736665725265737460448201527f72696374696f6e733a207472616e73666572207265737472696374696f6e7320606482015273185c9948185b1c9958591e48191a5cd8589b195960621b608482015260a401610773565b5f6101308190556040517f2b18986d3ba809db2f13a5d7bf17f60d357b37d9cbb55dd71cbbac8dc4060f649190a1565b604080518082019091525f80825260208201526001600160a01b0383165f90815260ff60205260409020805463ffffffff8416908110611140576111406129bd565b5f9182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b611187611318565b6001600160a01b0381166111ec5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610773565b61082981611873565b6001600160a01b0383166112575760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610773565b6001600160a01b0382166112b85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610773565b6001600160a01b038381165f8181526066602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6033546001600160a01b031633146108e05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610773565b6001600160a01b0382165f8181526101316020908152604091829020805460ff191685151590811790915591519182527fcf20b1ecb604b0e8888d579c64e8a3b10e590d45c1c2dddb393bed284362227191015b60405180910390a25050565b5f6113dd8484611006565b90505f19811461144457818110156114375760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610773565b61144484848484036111f5565b50505050565b6001600160a01b0383166114ae5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610773565b6001600160a01b0382166115105760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610773565b61151b838383611ac0565b6001600160a01b0383165f90815260656020526040902054818110156115925760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610773565b6001600160a01b038085165f8181526065602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115f19086815260200190565b60405180910390a3611444848484611b9c565b5f6106f6611bcd565b81545f9081816005811115611664575f61162684611c40565b61163090856129d1565b5f88815260209020909150869082015463ffffffff16111561165457809150611662565b61165f816001612996565b92505b505b808210156116af575f6116778383611d24565b5f88815260209020909150869082015463ffffffff16111561169b578091506116a9565b6116a6816001612996565b92505b50611664565b80156116d9575f8681526020902081015f19015464010000000090046001600160e01b03166116db565b5f5b6001600160e01b03169695505050505050565b6116f88282611d3e565b6067546001600160e01b03101561176a5760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b6064820152608401610773565b611444610100611e0f83611e1a565b6117838282611f86565b6114446101006120c983611e1a565b6001600160a01b038281165f81815260fe6020818152604080842080546065845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46114448284836120d4565b5f63ffffffff82111561186f5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610773565b5090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60606099805461061a90612950565b6060609a805461061a90612950565b5f65ffffffffffff82111561186f5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608401610773565b6001600160a01b0382165f8181526101326020908152604091829020805460ff191685151590811790915591519182527f72a561d1af7409467dae4f1e9fc52590a9335a1dda17727e2b6aa8c4db35109b91016113c6565b5f6106ae6119ac611604565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f5f6119db8787878761220e565b915091506119e8816122cb565b5095945050505050565b6001600160a01b0381165f90815260cb602052604090208054600181018255905b50919050565b5f54610100900460ff16611a3f5760405162461bcd60e51b8152600401610773906129e4565b6108e0612414565b5f54610100900460ff16611a6d5760405162461bcd60e51b8152600401610773906129e4565b6106c68282612443565b5f54610100900460ff16611a9d5760405162461bcd60e51b8152600401610773906129e4565b61082981604051806040016040528060018152602001603160f81b815250612482565b610130544211611b97576001600160a01b0383165f908152610131602052604090205460ff1680611b0957506001600160a01b0382165f908152610132602052604090205460ff165b80611b1b57506001600160a01b038316155b611b975760405162461bcd60e51b815260206004820152604160248201527f4261636b696e67456967656e2e5f6265666f7265546f6b656e5472616e73666560448201527f723a2066726f6d206f7220746f206d7573742062652077686974656c697374656064820152601960fa1b608482015260a401610773565b505050565b6001600160a01b038381165f90815260fe6020526040808220548584168352912054611b97929182169116836120d4565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611bf76124cf565b611bff612527565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f815f03611c4f57505f919050565b5f6001611c5b84612557565b901c6001901b90506001818481611c7457611c74612a2f565b048201901c90506001818481611c8c57611c8c612a2f565b048201901c90506001818481611ca457611ca4612a2f565b048201901c90506001818481611cbc57611cbc612a2f565b048201901c90506001818481611cd457611cd4612a2f565b048201901c90506001818481611cec57611cec612a2f565b048201901c90506001818481611d0457611d04612a2f565b048201901c905061079d81828581611d1e57611d1e612a2f565b046125ea565b5f611d326002848418612a43565b61079d90848416612996565b6001600160a01b038216611d945760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610773565b611d9f5f8383611ac0565b8060675f828254611db09190612996565b90915550506001600160a01b0382165f818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36106c65f8383611b9c565b5f61079d8284612996565b82545f908190818115611e64575f8781526020902082015f190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152611e78565b604080518082019091525f80825260208201525b905080602001516001600160e01b03169350611e9884868863ffffffff16565b92505f82118015611ec05750611eac6109ff565b65ffffffffffff16815f015163ffffffff16145b15611f0357611ece836125ff565b5f8881526020902083015f190180546001600160e01b03929092166401000000000263ffffffff909216919091179055611f7c565b866040518060400160405280611f27611f1a6109ff565b65ffffffffffff1661180b565b63ffffffff168152602001611f3b866125ff565b6001600160e01b0390811690915282546001810184555f938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b6001600160a01b038216611fe65760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610773565b611ff1825f83611ac0565b6001600160a01b0382165f90815260656020526040902054818110156120645760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610773565b6001600160a01b0383165f8181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611b97835f84611b9c565b5f61079d82846129d1565b816001600160a01b0316836001600160a01b0316141580156120f557505f81115b15611b97576001600160a01b03831615612182576001600160a01b0383165f90815260ff60205260408120819061212f906120c985611e1a565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612177929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615611b97576001600160a01b0382165f90815260ff6020526040812081906121b790611e0f85611e1a565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516121ff929190918252602082015260400190565b60405180910390a25050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561224357505f905060036122c2565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612294573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122bc575f600192509250506122c2565b91505f90505b94509492505050565b5f8160048111156122de576122de612a62565b036122e65750565b60018160048111156122fa576122fa612a62565b036123475760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610773565b600281600481111561235b5761235b612a62565b036123a85760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610773565b60038160048111156123bc576123bc612a62565b036108295760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610773565b5f54610100900460ff1661243a5760405162461bcd60e51b8152600401610773906129e4565b6108e033611873565b5f54610100900460ff166124695760405162461bcd60e51b8152600401610773906129e4565b60686124758382612ac1565b506069611b978282612ac1565b5f54610100900460ff166124a85760405162461bcd60e51b8152600401610773906129e4565b60996124b48382612ac1565b50609a6124c18282612ac1565b50505f609781905560985550565b5f5f6124d96118c4565b8051909150156124f0578051602090910120919050565b60975480156124ff5792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b5f5f6125316118d3565b805190915015612548578051602090910120919050565b60985480156124ff5792915050565b5f80608083901c1561256b57608092831c92015b604083901c1561257d57604092831c92015b602083901c1561258f57602092831c92015b601083901c156125a157601092831c92015b600883901c156125b357600892831c92015b600483901c156125c557600492831c92015b600283901c156125d757600292831c92015b600183901c156106ae5760010192915050565b5f8183106125f8578161079d565b5090919050565b5f6001600160e01b0382111561186f5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610773565b80356001600160a01b038116811461267d575f5ffd5b919050565b5f60208284031215612692575f5ffd5b61079d82612667565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61079d602083018461269b565b5f5f604083850312156126ec575f5ffd5b6126f583612667565b946020939093013593505050565b5f5f60408385031215612714575f5ffd5b61271d83612667565b915060208301358015158114612731575f5ffd5b809150509250929050565b5f5f5f6060848603121561274e575f5ffd5b61275784612667565b925061276560208501612667565b929592945050506040919091013590565b5f60208284031215612786575f5ffd5b5035919050565b60ff60f81b8816815260e060208201525f6127ab60e083018961269b565b82810360408401526127bd818961269b565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156128125783518352602093840193909201916001016127f4565b50909b9a5050505050505050505050565b803560ff8116811461267d575f5ffd5b5f5f5f5f5f5f60c08789031215612848575f5ffd5b61285187612667565b9550602087013594506040870135935061286d60608801612823565b9598949750929560808101359460a0909101359350915050565b5f5f5f5f5f5f5f60e0888a03121561289d575f5ffd5b6128a688612667565b96506128b460208901612667565b955060408801359450606088013593506128d060808901612823565b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156128fe575f5ffd5b61290783612667565b915061291560208401612667565b90509250929050565b5f5f6040838503121561292f575f5ffd5b61293883612667565b9150602083013563ffffffff81168114612731575f5ffd5b600181811c9082168061296457607f821691505b602082108103611a1357634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ae576106ae612982565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156106ae576106ae612982565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b5f52601260045260245ffd5b5f82612a5d57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52602160045260245ffd5b601f821115611b9757805f5260205f20601f840160051c81016020851015612a9b5750805b601f840160051c820191505b81811015612aba575f8155600101612aa7565b5050505050565b815167ffffffffffffffff811115612adb57612adb6129a9565b612aef81612ae98454612950565b84612a76565b6020601f821160018114612b21575f8315612b0a5750848201515b5f19600385901b1c1916600184901b178455612aba565b5f84815260208120601f198516915b82811015612b505787850151825560209485019460019092019101612b30565b5084821015612b6d57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea2646970667358221220bc65aa22c82ea1986fef941c8ffca5d6f9991e3fb75b2eefff53e26501e45f9064736f6c634300081b0033",
}
// BackingEigenABI is the input ABI used to generate the binding from.
diff --git a/pkg/bindings/BeaconChainProofs/binding.go b/pkg/bindings/BeaconChainProofs/binding.go
index 941d622f56..3e48868c16 100644
--- a/pkg/bindings/BeaconChainProofs/binding.go
+++ b/pkg/bindings/BeaconChainProofs/binding.go
@@ -31,8 +31,8 @@ var (
// BeaconChainProofsMetaData contains all meta data concerning the BeaconChainProofs contract.
var BeaconChainProofsMetaData = &bind.MetaData{
- ABI: "[]",
- Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aae54b45b84c0cc9575ff50a658bbdca0f173de7759b2f77a16736f8b6bf196064736f6c634300080c0033",
+ ABI: "[{\"type\":\"error\",\"name\":\"InvalidProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidValidatorFieldsLength\",\"inputs\":[]}]",
+ Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220b786d81c68c50488570935b357a548005dc46a3e40dcde8c9c3cfe80240891a564736f6c634300081b0033",
}
// BeaconChainProofsABI is the input ABI used to generate the binding from.
diff --git a/pkg/bindings/BytesLib/binding.go b/pkg/bindings/BytesLib/binding.go
index 0fc9941878..80d08fb9da 100644
--- a/pkg/bindings/BytesLib/binding.go
+++ b/pkg/bindings/BytesLib/binding.go
@@ -31,8 +31,8 @@ var (
// BytesLibMetaData contains all meta data concerning the BytesLib contract.
var BytesLibMetaData = &bind.MetaData{
- ABI: "[]",
- Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bab78912e4b1c602917257f3485f34dedb0a8c282552e6b30efb5b0dff86d6a664736f6c634300080c0033",
+ ABI: "[{\"type\":\"error\",\"name\":\"OutOfBounds\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Overflow\",\"inputs\":[]}]",
+ Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220517c792f82001a69d55f8c03043251e3baff982c0b3c945ebf5259c111341b5664736f6c634300081b0033",
}
// BytesLibABI is the input ABI used to generate the binding from.
diff --git a/pkg/bindings/DelegationManager/binding.go b/pkg/bindings/DelegationManager/binding.go
index 89b5c44bbd..a43057d2bb 100644
--- a/pkg/bindings/DelegationManager/binding.go
+++ b/pkg/bindings/DelegationManager/binding.go
@@ -29,29 +29,22 @@ 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
+// IDelegationManagerTypesQueuedWithdrawalParams is an auto generated low-level Go binding around an user-defined struct.
+type IDelegationManagerTypesQueuedWithdrawalParams struct {
+ Strategies []common.Address
+ DepositShares []*big.Int
+ DeprecatedWithdrawer common.Address
}
-// IDelegationManagerQueuedWithdrawalParams is an auto generated low-level Go binding around an user-defined struct.
-type IDelegationManagerQueuedWithdrawalParams struct {
- Strategies []common.Address
- Shares []*big.Int
- Withdrawer common.Address
-}
-
-// IDelegationManagerWithdrawal is an auto generated low-level Go binding around an user-defined struct.
-type IDelegationManagerWithdrawal struct {
- Staker common.Address
- DelegatedTo common.Address
- Withdrawer common.Address
- Nonce *big.Int
- StartBlock uint32
- Strategies []common.Address
- Shares []*big.Int
+// 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
+ StartBlock uint32
+ Strategies []common.Address
+ ScaledShares []*big.Int
}
// ISignatureUtilsSignatureWithExpiry is an auto generated low-level Go binding around an user-defined struct.
@@ -62,8 +55,8 @@ type ISignatureUtilsSignatureWithExpiry struct {
// DelegationManagerMetaData contains all meta data concerning the DelegationManager contract.
var DelegationManagerMetaData = &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: "0x6101006040523480156200001257600080fd5b5060405162005c4638038062005c46833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615a1d6200022960003960006126a00152600081816105b10152818161102e015281816113aa01528181611c23015281816129f901528181613eac0152614398015260006107620152600081816104f901528181610ffc0152818161137801528181611cb701528181612ac601528181612c4901528181613fd2015261443e0152615a1d6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a61035536600461484e565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a23660046148b4565b6109ce565b6103ba6103b536600461484e565b610a90565b604051610364919061490f565b6103da6103d53660046149ac565b610df9565b005b6103da6103ea3660046149ff565b610f3e565b6103da6103fd366004614a23565b610ff1565b6103da610410366004614a64565b6110a8565b6103da610423366004614a7d565b6111e7565b61035a6104363660046149ff565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f366004614a23565b6111fb565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614ae8565b611229565b6103da6104bc366004614a23565b61136d565b61035a6104cf3660046149ff565b609b6020526000908152604090205481565b6103da6104ef366004614b8f565b61141d565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b6105413660046149ff565b6001600160a01b039081166000908152609960205260409020600101541690565b6105756105703660046149ff565b61155a565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61157a565b61035a6105f3366004614e8c565b611641565b610575610606366004614ec8565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614ef9565b611671565b6103da610644366004614a64565b61170c565b61051b6106573660046149ff565b609a602052600090815260409020546001600160a01b031681565b6105756106803660046149ff565b61171d565b6103da611757565b61035a61069b366004614f88565b609860209081526000928352604080842090915290825290205481565b6103da6106c6366004615069565b61176b565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150f9565b611997565b6040516103649190615183565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da610738366004615196565b611a71565b61035a61074b3660046149ff565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a64565b609e6020526000908152604090205460ff1681565b6105756107b53660046151cb565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec3660046149ff565b60a16020526000908152604090205481565b61086e61080c3660046149ff565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151f7565b611b43565b61035a62034bc081565b6108d46108cf3660046149ff565b611bfc565b604051610364929190615278565b6103ba6108f03660046149ff565b611fb4565b6103da61090336600461529d565b612478565b6103da6109163660046152f5565b612595565b6103da6109293660046149ff565b612626565b61035a61269c565b6103da610944366004614a64565b6126da565b609d54600090815b838110156109c657600060a1600087878581811061097157610971615311565b905060200201602081019061098691906149ff565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b506109bf8161533d565b9050610951565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a4c61269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610ac55760405162461bcd60e51b8152600401610abc90615358565b60405180910390fd5b6000836001600160401b03811115610adf57610adf614c31565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610dee57868682818110610b4357610b43615311565b9050602002810190610b55919061538f565b610b639060208101906153af565b9050878783818110610b7757610b77615311565b9050602002810190610b89919061538f565b610b9390806153af565b905014610c085760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610abc565b33878783818110610c1b57610c1b615311565b9050602002810190610c2d919061538f565b610c3e9060608101906040016149ff565b6001600160a01b031614610cba5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610abc565b610dbf3383898985818110610cd157610cd1615311565b9050602002810190610ce3919061538f565b610cf49060608101906040016149ff565b8a8a86818110610d0657610d06615311565b9050602002810190610d18919061538f565b610d2290806153af565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6857610d68615311565b9050602002810190610d7a919061538f565b610d889060208101906153af565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061283692505050565b838281518110610dd157610dd1615311565b602090810291909101015280610de68161533d565b915050610b29565b509095945050505050565b610e023361155a565b15610e885760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610abc565b610e923384612df6565b604080518082019091526060815260006020820152610eb43380836000612fe9565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610eed91906153f8565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f3092919061544a565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb59190615479565b6001600160a01b0316336001600160a01b031614610fe55760405162461bcd60e51b8152600401610abc90615496565b610fee8161327f565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110505750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61106c5760405162461bcd60e51b8152600401610abc906154e0565b6110758361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a181858585613376565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611114919061553d565b6111305760405162461bcd60e51b8152600401610abc9061555a565b606654818116146111a95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111ef6133f1565b6110a18484848461344b565b6001600160a01b0383166000908152609b602052604081205461122085828686611b43565b95945050505050565b600054610100900460ff16158080156112495750600054600160ff909116105b806112635750303b158015611263575060005460ff166001145b6112c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abc565b6000805460ff1916600117905580156112e9576000805461ff0019166101001790555b6112f38888613671565b6112fb61375b565b609755611307896137f2565b61131086613844565b61131c8585858561344b565b8015611362576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113cc5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113e85760405162461bcd60e51b8152600401610abc906154e0565b6113f18361155a565b156110a3576001600160a01b038084166000908152609a6020526040902054166110a18185858561393e565b606654600290600490811614156114465760405162461bcd60e51b8152600401610abc90615358565b600260c95414156114995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c95560005b88811015611549576115398a8a838181106114be576114be615311565b90506020028101906114d091906155a2565b8989848181106114e2576114e2615311565b90506020028101906114f491906153af565b89898681811061150657611506615311565b9050602002013588888781811061151f5761151f615311565b905060200201602081019061153491906155b8565b6139b9565b6115428161533d565b90506114a1565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e6919061553d565b6116025760405162461bcd60e51b8152600401610abc9061555a565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116549190615649565b604051602081830303815290604052805190602001209050919050565b6066546002906004908116141561169a5760405162461bcd60e51b8152600401610abc90615358565b600260c95414156116ed5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610abc565b600260c9556116ff86868686866139b9565b5050600160c95550505050565b6117146133f1565b610fee81613844565b60006001600160a01b0382161580159061175157506001600160a01b038083166000818152609a6020526040902054909116145b92915050565b61175f6133f1565b61176960006137f2565b565b42836020015110156117ef5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610abc565b6117f88561155a565b156118815760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610abc565b61188a8461171d565b6119165760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610abc565b6000609b6000876001600160a01b03166001600160a01b0316815260200190815260200160002054905060006119528783888860200151611b43565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061198290889083906141a3565b61198e87878686612fe9565b50505050505050565b6060600082516001600160401b038111156119b4576119b4614c31565b6040519080825280602002602001820160405280156119dd578160200160208202803683370190505b50905060005b83518110156109c6576001600160a01b03851660009081526098602052604081208551909190869084908110611a1b57611a1b615311565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a5657611a56615311565b6020908102919091010152611a6a8161533d565b90506119e3565b611a7a3361171d565b611afc5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610abc565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611b3792919061544a565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611bb961269c565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c90919061565c565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611d00573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2891908101906156d0565b9150915060008313611d3f57909590945092505050565b606080835160001415611df9576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611db457611db4615311565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611de857611de8615311565b602002602001018181525050611fa7565b8351611e0690600161578a565b6001600160401b03811115611e1d57611e1d614c31565b604051908082528060200260200182016040528015611e46578160200160208202803683370190505b50915081516001600160401b03811115611e6257611e62614c31565b604051908082528060200260200182016040528015611e8b578160200160208202803683370190505b50905060005b8451811015611f2557848181518110611eac57611eac615311565b6020026020010151838281518110611ec657611ec6615311565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611ef857611ef8615311565b6020026020010151828281518110611f1257611f12615311565b6020908102919091010152600101611e91565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f4a91906157a2565b81518110611f5a57611f5a615311565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f8a91906157a2565b81518110611f9a57611f9a615311565b6020026020010181815250505b9097909650945050505050565b60665460609060019060029081161415611fe05760405162461bcd60e51b8152600401610abc90615358565b611fe98361155a565b6120695760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610abc565b6120728361171d565b156120e55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610abc565b6001600160a01b0383166121615760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610abc565b6001600160a01b038084166000818152609a6020526040902054909116903314806121945750336001600160a01b038216145b806121bb57506001600160a01b038181166000908152609960205260409020600101541633145b61222d5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610abc565b60008061223986611bfc565b9092509050336001600160a01b0387161461228f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b0319169055815161231157604080516000815260208101909152945061246f565b81516001600160401b0381111561232a5761232a614c31565b604051908082528060200260200182016040528015612353578160200160208202803683370190505b50945060005b825181101561246d576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106123b9576123b9615311565b6020026020010151826000815181106123d4576123d4615311565b60200260200101906001600160a01b031690816001600160a01b03168152505083838151811061240657612406615311565b60200260200101518160008151811061242157612421615311565b60200260200101818152505061243a89878b8585612836565b88848151811061244c5761244c615311565b602002602001018181525050505080806124659061533d565b915050612359565b505b50505050919050565b6124813361155a565b156124ff5760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610abc565b6125088361171d565b6125895760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610abc565b6110a333848484612fe9565b61259e3361171d565b61261c5760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610abc565b610fee3382612df6565b61262e6133f1565b6001600160a01b0381166126935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abc565b610fee816137f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156126cd575060975490565b6126d561375b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127519190615479565b6001600160a01b0316336001600160a01b0316146127815760405162461bcd60e51b8152600401610abc90615496565b6066541981196066541916146127ff5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610abc565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111dc565b60006001600160a01b0386166128cd5760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610abc565b82516129575760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610abc565b60005b8351811015612d04576001600160a01b038616156129b0576129b0868886848151811061298957612989615311565b60200260200101518685815181106129a3576129a3615311565b6020026020010151613376565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b03168482815181106129e0576129e0615311565b60200260200101516001600160a01b03161415612aa9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612a3957612a39615311565b60200260200101516040518363ffffffff1660e01b8152600401612a729291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a8c57600080fd5b505af1158015612aa0573d6000803e3d6000fd5b50505050612cfc565b846001600160a01b0316876001600160a01b03161480612b7b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612b0557612b05615311565b60200260200101516040518263ffffffff1660e01b8152600401612b3891906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b79919061553d565b155b612c475760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610abc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c8957612c89615311565b6020026020010151868581518110612ca357612ca3615311565b60200260200101516040518463ffffffff1660e01b8152600401612cc9939291906157b9565b600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505050505b60010161295a565b506001600160a01b0386166000908152609f60205260408120805491829190612d2c8361533d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d9482611641565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612de290839085906157dd565b60405180910390a198975050505050505050565b6213c680612e0a60608301604084016157f6565b63ffffffff161115612ebf5760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610abc565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612efb90606084019084016157f6565b63ffffffff161015612f915760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610abc565b6001600160a01b03821660009081526099602052604090208190612fb58282615833565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611b379084906153f8565b606654600090600190811614156130125760405162461bcd60e51b8152600401610abc90615358565b6001600160a01b038085166000908152609960205260409020600101541680158015906130485750336001600160a01b03821614155b801561305d5750336001600160a01b03861614155b156131ca5742846020015110156130dc5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156131765760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610abc565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff191660011790558501516131b79088908890859088906109ce565b90506131c8828287600001516141a3565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a360008061322988611bfc565b9150915060005b825181101561136257613277888a85848151811061325057613250615311565b602002602001015185858151811061326a5761326a615311565b602002602001015161393e565b600101613230565b6001600160a01b03811661330d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610abc565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038085166000908152609860209081526040808320938616835292905290812080548392906133ad9084906157a2565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f30939291906157b9565b6033546001600160a01b031633146117695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abc565b8281146134d35760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610abc565b8260005b818110156136695760008686838181106134f3576134f3615311565b905060200201602081019061350891906149ff565b6001600160a01b038116600090815260a1602052604081205491925086868581811061353657613536615311565b90506020020135905062034bc08111156135fa5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610abc565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806136629061533d565b90506134d7565b505050505050565b6065546001600160a01b031615801561369257506001600160a01b03821615155b6137145760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610abc565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26137578261327f565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138fd5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610abc565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061397590849061578a565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f30939291906157b9565b60006139c76105f387615896565b6000818152609e602052604090205490915060ff16613a485760405162461bcd60e51b815260206004820152604360248201526000805160206159c883398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610abc565b609d544390613a5d60a0890160808a016157f6565b63ffffffff16613a6d919061578a565b1115613af55760405162461bcd60e51b815260206004820152605f60248201526000805160206159c883398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610abc565b613b0560608701604088016149ff565b6001600160a01b0316336001600160a01b031614613b925760405162461bcd60e51b815260206004820152605060248201526000805160206159c883398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610abc565b8115613c1457613ba560a08701876153af565b85149050613c145760405162461bcd60e51b815260206004820152604260248201526000805160206159c883398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610abc565b6000818152609e60205260409020805460ff191690558115613d795760005b613c4060a08801886153af565b9050811015613d73574360a16000613c5b60a08b018b6153af565b85818110613c6b57613c6b615311565b9050602002016020810190613c8091906149ff565b6001600160a01b03168152602081019190915260400160002054613caa60a08a0160808b016157f6565b63ffffffff16613cba919061578a565b1115613cd85760405162461bcd60e51b8152600401610abc906158a2565b613d6b613ce860208901896149ff565b33613cf660a08b018b6153af565b85818110613d0657613d06615311565b9050602002016020810190613d1b91906149ff565b613d2860c08c018c6153af565b86818110613d3857613d38615311565b905060200201358a8a87818110613d5157613d51615311565b9050602002016020810190613d6691906149ff565b61435d565b600101613c33565b50614168565b336000908152609a60205260408120546001600160a01b0316905b613da160a08901896153af565b9050811015614165574360a16000613dbc60a08c018c6153af565b85818110613dcc57613dcc615311565b9050602002016020810190613de191906149ff565b6001600160a01b03168152602081019190915260400160002054613e0b60a08b0160808c016157f6565b63ffffffff16613e1b919061578a565b1115613e395760405162461bcd60e51b8152600401610abc906158a2565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e5b60a08a018a6153af565b83818110613e6b57613e6b615311565b9050602002016020810190613e8091906149ff565b6001600160a01b03161415613fd0576000613e9e60208a018a6149ff565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613edf60c08e018e6153af565b87818110613eef57613eef615311565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613f43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f67919061565c565b6001600160a01b038084166000908152609a6020526040902054919250168015613fc857613fc88184613f9d60a08f018f6153af565b88818110613fad57613fad615311565b9050602002016020810190613fc291906149ff565b8561393e565b50505061415d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061401257614012615311565b905060200201602081019061402791906149ff565b61403460a08d018d6153af565b8681811061404457614044615311565b905060200201602081019061405991906149ff565b61406660c08e018e6153af565b8781811061407657614076615311565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b505050506001600160a01b0382161561415d5761415d823361410f60a08c018c6153af565b8581811061411f5761411f615311565b905060200201602081019061413491906149ff565b61414160c08d018d6153af565b8681811061415157614151615311565b9050602002013561393e565b600101613d94565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b156142bd57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141e3908690869060040161592a565b602060405180830381865afa158015614200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142249190615987565b6001600160e01b031916146110a35760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610abc565b826001600160a01b03166142d1838361449d565b6001600160a01b0316146110a35760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610abc565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156144085760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b1300906143d1908890889087906004016157b9565b600060405180830381600087803b1580156143eb57600080fd5b505af11580156143ff573d6000803e3d6000fd5b50505050614496565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561448257600080fd5b505af1158015611362573d6000803e3d6000fd5b5050505050565b60008060006144ac85856144b9565b915091506109c681614529565b6000808251604114156144f05760208301516040840151606085015160001a6144e4878285856146e4565b94509450505050614522565b82516040141561451a576020830151604084015161450f8683836147d1565b935093505050614522565b506000905060025b9250929050565b600081600481111561453d5761453d6159b1565b14156145465750565b600181600481111561455a5761455a6159b1565b14156145a85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610abc565b60028160048111156145bc576145bc6159b1565b141561460a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610abc565b600381600481111561461e5761461e6159b1565b14156146775760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610abc565b600481600481111561468b5761468b6159b1565b1415610fee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610abc565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561471b57506000905060036147c8565b8460ff16601b1415801561473357508460ff16601c14155b1561474457506000905060046147c8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614798573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147c1576000600192509250506147c8565b9150600090505b94509492505050565b6000806001600160ff1b038316816147ee60ff86901c601b61578a565b90506147fc878288856146e4565b935093505050935093915050565b60008083601f84011261481c57600080fd5b5081356001600160401b0381111561483357600080fd5b6020830191508360208260051b850101111561452257600080fd5b6000806020838503121561486157600080fd5b82356001600160401b0381111561487757600080fd5b6148838582860161480a565b90969095509350505050565b6001600160a01b0381168114610fee57600080fd5b80356148af8161488f565b919050565b600080600080600060a086880312156148cc57600080fd5b85356148d78161488f565b945060208601356148e78161488f565b935060408601356148f78161488f565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b818110156149475783518352928401929184019160010161492b565b50909695505050505050565b60006060828403121561496557600080fd5b50919050565b60008083601f84011261497d57600080fd5b5081356001600160401b0381111561499457600080fd5b60208301915083602082850101111561452257600080fd5b6000806000608084860312156149c157600080fd5b6149cb8585614953565b925060608401356001600160401b038111156149e657600080fd5b6149f28682870161496b565b9497909650939450505050565b600060208284031215614a1157600080fd5b8135614a1c8161488f565b9392505050565b600080600060608486031215614a3857600080fd5b8335614a438161488f565b92506020840135614a538161488f565b929592945050506040919091013590565b600060208284031215614a7657600080fd5b5035919050565b60008060008060408587031215614a9357600080fd5b84356001600160401b0380821115614aaa57600080fd5b614ab68883890161480a565b90965094506020870135915080821115614acf57600080fd5b50614adc8782880161480a565b95989497509550505050565b60008060008060008060008060c0898b031215614b0457600080fd5b8835614b0f8161488f565b97506020890135614b1f8161488f565b9650604089013595506060890135945060808901356001600160401b0380821115614b4957600080fd5b614b558c838d0161480a565b909650945060a08b0135915080821115614b6e57600080fd5b50614b7b8b828c0161480a565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614bab57600080fd5b88356001600160401b0380821115614bc257600080fd5b614bce8c838d0161480a565b909a50985060208b0135915080821115614be757600080fd5b614bf38c838d0161480a565b909850965060408b0135915080821115614c0c57600080fd5b614c188c838d0161480a565b909650945060608b0135915080821115614b6e57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c6957614c69614c31565b60405290565b604080519081016001600160401b0381118282101715614c6957614c69614c31565b604051601f8201601f191681016001600160401b0381118282101715614cb957614cb9614c31565b604052919050565b63ffffffff81168114610fee57600080fd5b80356148af81614cc1565b60006001600160401b03821115614cf757614cf7614c31565b5060051b60200190565b600082601f830112614d1257600080fd5b81356020614d27614d2283614cde565b614c91565b82815260059290921b84018101918181019086841115614d4657600080fd5b8286015b84811015614d6a578035614d5d8161488f565b8352918301918301614d4a565b509695505050505050565b600082601f830112614d8657600080fd5b81356020614d96614d2283614cde565b82815260059290921b84018101918181019086841115614db557600080fd5b8286015b84811015614d6a5780358352918301918301614db9565b600060e08284031215614de257600080fd5b614dea614c47565b9050614df5826148a4565b8152614e03602083016148a4565b6020820152614e14604083016148a4565b604082015260608201356060820152614e2f60808301614cd3565b608082015260a08201356001600160401b0380821115614e4e57600080fd5b614e5a85838601614d01565b60a084015260c0840135915080821115614e7357600080fd5b50614e8084828501614d75565b60c08301525092915050565b600060208284031215614e9e57600080fd5b81356001600160401b03811115614eb457600080fd5b614ec084828501614dd0565b949350505050565b600060208284031215614eda57600080fd5b813560ff81168114614a1c57600080fd5b8015158114610fee57600080fd5b600080600080600060808688031215614f1157600080fd5b85356001600160401b0380821115614f2857600080fd5b9087019060e0828a031215614f3c57600080fd5b90955060208701359080821115614f5257600080fd5b50614f5f8882890161480a565b909550935050604086013591506060860135614f7a81614eeb565b809150509295509295909350565b60008060408385031215614f9b57600080fd5b8235614fa68161488f565b91506020830135614fb68161488f565b809150509250929050565b600060408284031215614fd357600080fd5b614fdb614c6f565b905081356001600160401b0380821115614ff457600080fd5b818401915084601f83011261500857600080fd5b813560208282111561501c5761501c614c31565b61502e601f8301601f19168201614c91565b9250818352868183860101111561504457600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a0868803121561508157600080fd5b853561508c8161488f565b9450602086013561509c8161488f565b935060408601356001600160401b03808211156150b857600080fd5b6150c489838a01614fc1565b945060608801359150808211156150da57600080fd5b506150e788828901614fc1565b95989497509295608001359392505050565b6000806040838503121561510c57600080fd5b82356151178161488f565b915060208301356001600160401b0381111561513257600080fd5b61513e85828601614d01565b9150509250929050565b600081518084526020808501945080840160005b838110156151785781518752958201959082019060010161515c565b509495945050505050565b602081526000614a1c6020830184615148565b600080602083850312156151a957600080fd5b82356001600160401b038111156151bf57600080fd5b6148838582860161496b565b600080604083850312156151de57600080fd5b82356151e98161488f565b946020939093013593505050565b6000806000806080858703121561520d57600080fd5b84356152188161488f565b935060208501359250604085013561522f8161488f565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156151785781516001600160a01b031687529582019590820190600101615253565b60408152600061528b604083018561523f565b82810360208401526112208185615148565b6000806000606084860312156152b257600080fd5b83356152bd8161488f565b925060208401356001600160401b038111156152d857600080fd5b6152e486828701614fc1565b925050604084013590509250925092565b60006060828403121561530757600080fd5b614a1c8383614953565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561535157615351615327565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126153a557600080fd5b9190910192915050565b6000808335601e198436030181126153c657600080fd5b8301803591506001600160401b038211156153e057600080fd5b6020019150600581901b360382131561452257600080fd5b6060810182356154078161488f565b6001600160a01b0390811683526020840135906154238261488f565b166020830152604083013561543781614cc1565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561548b57600080fd5b8151614a1c8161488f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b60006020828403121561554f57600080fd5b8151614a1c81614eeb565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126153a557600080fd5b6000602082840312156155ca57600080fd5b8135614a1c81614eeb565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a085015261563060e085018261523f565b905060c083015184820360c08601526112208282615148565b602081526000614a1c60208301846155d5565b60006020828403121561566e57600080fd5b5051919050565b600082601f83011261568657600080fd5b81516020615696614d2283614cde565b82815260059290921b840181019181810190868411156156b557600080fd5b8286015b84811015614d6a57805183529183019183016156b9565b600080604083850312156156e357600080fd5b82516001600160401b03808211156156fa57600080fd5b818501915085601f83011261570e57600080fd5b8151602061571e614d2283614cde565b82815260059290921b8401810191818101908984111561573d57600080fd5b948201945b838610156157645785516157558161488f565b82529482019490820190615742565b9188015191965090935050508082111561577d57600080fd5b5061513e85828601615675565b6000821982111561579d5761579d615327565b500190565b6000828210156157b4576157b4615327565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b828152604060208201526000614ec060408301846155d5565b60006020828403121561580857600080fd5b8135614a1c81614cc1565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561583e8161488f565b6158488183615813565b5060018101602083013561585b8161488f565b6158658183615813565b50604083013561587481614cc1565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006117513683614dd0565b6020808252606e908201526000805160206159c883398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b8181101561595e57858101830151858201606001528201615942565b81811115615970576000606083870101525b50601f01601f191692909201606001949350505050565b60006020828403121561599957600080fd5b81516001600160e01b031981168114614a1c57600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122026b1fed484881843a1d9811e493fabdf693f068a2dfa3af9289c2a7fba74873e64736f6c634300080c0033",
+ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"},{\"name\":\"_allocationManager\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_permissionController\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"},{\"name\":\"_MIN_WITHDRAWAL_DELAY\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DELEGATION_APPROVAL_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateDelegationApprovalDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateWithdrawalRoot\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawal\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal[]\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[][]\",\"internalType\":\"contractIERC20[][]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"convertToDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"withdrawableShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"cumulativeWithdrawalsQueued\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"totalQueued\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"curDepositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"beaconChainSlashingFactorDecrease\",\"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\":\"delegatedTo\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationApprover\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationApproverSaltIsSpent\",\"inputs\":[{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"spent\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositScalingFactor\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDepositedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorsShares\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQueuedWithdrawal\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQueuedWithdrawalRoots\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQueuedWithdrawals\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal[]\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"shares\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSlashableSharesInQueue\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWithdrawableShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"withdrawableShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"depositShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"prevDepositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addedShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isDelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minWithdrawalDelayBlocks\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyOperatorDetails\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newDelegationApprover\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingWithdrawals\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"pending\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permissionController\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"queueWithdrawals\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.QueuedWithdrawalParams[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"depositShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"__deprecated_withdrawer\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"redelegate\",\"inputs\":[{\"name\":\"newOperator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newOperatorApproverSig\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"withdrawalRoots\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerAsOperator\",\"inputs\":[{\"name\":\"initDelegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allocationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slashOperatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"prevMaxMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"newMaxMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"undelegate\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"withdrawalRoots\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorMetadataURI\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"DelegationApproverUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newDelegationApprover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DepositScalingFactorUpdated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"newDepositScalingFactor\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorMetadataURIUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRegistered\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSharesDecreased\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSharesIncreased\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SlashingWithdrawalCompleted\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SlashingWithdrawalQueued\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"withdrawal\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManagerTypes.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"sharesToWithdraw\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerDelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerForceUndelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerUndelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ActivelyDelegated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerCannotUndelegate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FullySlashed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPermissions\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSnapshotOrdering\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotActivelyDelegated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyAllocationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyManagerOrEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorsCannotUndelegate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SaltSpent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalDelayNotElapsed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalNotQueued\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawerNotCaller\",\"inputs\":[]}]",
+ Bin: "0x610180604052348015610010575f5ffd5b50604051615dd6380380615dd683398101604081905261002f9161021c565b8186868684876001600160a01b03811661005c576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c05290911660e05263ffffffff16610100524661012052610125604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b610140526001600160a01b03166101605261013e610149565b5050505050506102a7565b5f54610100900460ff16156101b45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610203575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610219575f5ffd5b50565b5f5f5f5f5f5f60c08789031215610231575f5ffd5b865161023c81610205565b602088015190965061024d81610205565b604088015190955061025e81610205565b606088015190945061026f81610205565b608088015190935061028081610205565b60a088015190925063ffffffff81168114610299575f5ffd5b809150509295509295509295565b60805160a05160c05160e05161010051610120516101405161016051615a3a61039c5f395f818161042c01526132fa01525f61271601525f61265601525f818161070001528181611504015281816134f5015261383101525f818161075001528181610da901528181610f5a0152818161169f0152818161185e01528181611cb2015281816128eb01526133b101525f818161045301528181610ee0015281816117c501528181611a23015281816130e3015261363b01525f818161038901528181610eae01528181611977015261361501525f81816105ee01528181610b410152818161107a015261273a0152615a3a5ff3fe608060405234801561000f575f5ffd5b50600436106102cb575f3560e01c8063715018a61161017b578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b146107de578063f698da25146107f1578063fabc1cbc146107f9578063fd8aa88d1461080c575f5ffd5b8063e4cc3f9014610798578063eea9064b146107ab578063f0e0e676146107be575f5ffd5b8063bfae3fd2146106e3578063c448feb8146106f6578063c978f7ac1461072a578063ca8aa7c71461074b578063cd6dc68714610772578063da8be86414610785575f5ffd5b80639104c319116101355780639104c319146106345780639435bb431461064f578063a178848414610662578063a33a343314610681578063b7f06ebe14610694578063bb45fef2146106b6575f5ffd5b8063715018a6146105a4578063778e55f3146105ac57806378296ec5146105d6578063886f1195146105e95780638da5cb5b146106105780639004134714610621575f5ffd5b806354b7c96c116102375780635dd68579116101f157806365da1264116101cc57806365da12641461053557806366d5ba931461055d5780636d70f7ae1461057e5780636e17444814610591575f5ffd5b80635dd68579146104ee578063601bb36f1461050f57806360a0d1ce14610522575f5ffd5b806354b7c96c14610475578063595c6a6714610488578063597b36da146104905780635ac86ab7146104a35780635c975abb146104c65780635d975e88146104ce575f5ffd5b806339b70e381161028857806339b70e38146103845780633c651cf2146103c35780633cdeb5e0146103d65780633e28391d146104045780634657e26a146104275780634665bcda1461044e575f5ffd5b806304a4f979146102cf5780630b9f487a146103095780630dd8dd021461031c578063136439dd1461033c57806325df922e146103515780632aa6d88814610371575b5f5ffd5b6102f67f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b6102f6610317366004614957565b61081f565b61032f61032a3660046149ee565b6108a7565b6040516103009190614a2c565b61034f61034a366004614a63565b610b2c565b005b61036461035f366004614bf8565b610c01565b6040516103009190614ca6565b61034f61037f366004614d08565b610d61565b6103ab7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610300565b61034f6103d1366004614d66565b610ea3565b6103ab6103e4366004614da9565b6001600160a01b039081165f908152609960205260409020600101541690565b610417610412366004614da9565b610fea565b6040519015158152602001610300565b6103ab7f000000000000000000000000000000000000000000000000000000000000000081565b6103ab7f000000000000000000000000000000000000000000000000000000000000000081565b61034f610483366004614dc4565b611009565b61034f611065565b6102f661049e366004614eb7565b611114565b6104176104b1366004614ee8565b606654600160ff9092169190911b9081161490565b6066546102f6565b6104e16104dc366004614a63565b611143565b6040516103009190614fbf565b6105016104fc366004614da9565b61125f565b60405161030092919061501f565b61034f61051d3660046150a0565b611694565b61034f6105303660046150f9565b6117ba565b6103ab610543366004614da9565b609a6020525f90815260409020546001600160a01b031681565b61057061056b366004614da9565b61194f565b604051610300929190615138565b61041761058c366004614da9565b611c4f565b6102f661059f366004614dc4565b611c87565b61034f611d31565b6102f66105ba366004614dc4565b609860209081525f928352604080842090915290825290205481565b61034f6105e436600461515c565b611d42565b6103ab7f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b03166103ab565b61036461062f3660046151ac565b611dca565b6103ab73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61034f61065d3660046151f8565b611ea0565b6102f6610670366004614da9565b609f6020525f908152604090205481565b61032f61068f366004615294565b611f70565b6104176106a2366004614a63565b609e6020525f908152604090205460ff1681565b6104176106c436600461537b565b609c60209081525f928352604080842090915290825290205460ff1681565b6102f66106f1366004614dc4565b611f88565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610300565b61073d6107383660046151ac565b611fc4565b6040516103009291906153a5565b6103ab7f000000000000000000000000000000000000000000000000000000000000000081565b61034f61078036600461537b565b612251565b61032f610793366004614da9565b61236c565b61034f6107a63660046153c4565b61247c565b61034f6107b9366004615294565b6124d2565b6107d16107cc366004615437565b612535565b60405161030091906154e4565b61034f6107ec366004614da9565b6125da565b6102f6612653565b61034f610807366004614a63565b612738565b61032f61081a366004614da9565b61284f565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f9061089d9060e00160405160208183030381529060405280519060200120612872565b9695505050505050565b6066546060906001906002908116036108d35760405163840a48d560e01b815260040160405180910390fd5b5f836001600160401b038111156108ec576108ec614a7a565b604051908082528060200260200182016040528015610915578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b215786868281811061094f5761094f6154f6565b9050602002810190610961919061550a565b61096f906020810190615528565b9050878783818110610983576109836154f6565b9050602002810190610995919061550a565b61099f9080615528565b9050146109bf576040516343714afd60e01b815260040160405180910390fd5b5f610a2933848a8a868181106109d7576109d76154f6565b90506020028101906109e9919061550a565b6109f39080615528565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506128a092505050565b9050610afb33848a8a86818110610a4257610a426154f6565b9050602002810190610a54919061550a565b610a5e9080615528565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610aa357610aa36154f6565b9050602002810190610ab5919061550a565b610ac3906020810190615528565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506129e7915050565b848381518110610b0d57610b0d6154f6565b602090810291909101015250600101610935565b509095945050505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610b8e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb2919061556d565b610bcf57604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610bf45760405163c61dca5d60e01b815260040160405180910390fd5b610bfd82612edc565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610c2a8683876128a0565b90505f85516001600160401b03811115610c4657610c46614a7a565b604051908082528060200260200182016040528015610c6f578160200160208202803683370190505b5090505f5b8651811015610d54576001600160a01b0388165f90815260a260205260408120885182908a9085908110610caa57610caa6154f6565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610d2e878381518110610cfc57610cfc6154f6565b6020026020010151858481518110610d1657610d166154f6565b602002602001015183612f199092919063ffffffff16565b838381518110610d4057610d406154f6565b602090810291909101015250600101610c74565b50925050505b9392505050565b610d6a33610fea565b15610d8857604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610df2575f5ffd5b505af1158015610e04573d5f5f3e3d5ffd5b50505050610e123385612f37565b610e1c3333612f99565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610e95929190615588565b60405180910390a250505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f025750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610f1f5760405163045206a560e21b815260040160405180910390fd5b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015610f9f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc391906155b6565b90505f610fd187878461309c565b9050610fe183888888888661317e565b50505050505050565b6001600160a01b039081165f908152609a602052604090205416151590565b81611013816132bc565b6110305760405163932d94f760e01b815260040160405180910390fd5b61103983611c4f565b611056576040516325ec6c1f60e01b815260040160405180910390fd5b6110608383612f37565b505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156110c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110eb919061556d565b61110857604051631d77d47760e21b815260040160405180910390fd5b6111125f19612edc565b565b5f816040516020016111269190614fbf565b604051602081830303815290604052805190602001209050919050565b61114b614813565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a086019392908301828280156111f957602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116111db575b505050505081526020016006820180548060200260200160405190810160405280929190818152602001828054801561124f57602002820191905f5260205f20905b81548152602001906001019080831161123b575b5050505050815250509050919050565b6060805f61126c8461284f565b8051909150806001600160401b0381111561128957611289614a7a565b6040519080825280602002602001820160405280156112c257816020015b6112af614813565b8152602001906001900390816112a75790505b509350806001600160401b038111156112dd576112dd614a7a565b60405190808252806020026020018201604052801561131057816020015b60608152602001906001900390816112fb5790505b506001600160a01b038087165f908152609a60205260408120549295509116905b8281101561168b5760a45f85838151811061134e5761134e6154f6565b60209081029190910181015182528181019290925260409081015f20815160e08101835281546001600160a01b03908116825260018301548116828601526002830154168184015260038201546060820152600482015463ffffffff1660808201526005820180548451818702810187019095528085529194929360a086019390929083018282801561140857602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116113ea575b505050505081526020016006820180548060200260200160405190810160405280929190818152602001828054801561145e57602002820191905f5260205f20905b81548152602001906001019080831161144a575b505050505081525050868281518110611479576114796154f6565b6020026020010181905250858181518110611496576114966154f6565b602002602001015160a00151516001600160401b038111156114ba576114ba614a7a565b6040519080825280602002602001820160405280156114e3578160200160208202803683370190505b508582815181106114f6576114f66154f6565b60200260200101819052505f7f0000000000000000000000000000000000000000000000000000000000000000878381518110611535576115356154f6565b60200260200101516080015161154b91906155e5565b905060604363ffffffff168263ffffffff1610156115935761158c89858a868151811061157a5761157a6154f6565b602002602001015160a0015185613366565b90506115be565b6115bb89858a86815181106115aa576115aa6154f6565b602002602001015160a001516128a0565b90505b5f5b8884815181106115d2576115d26154f6565b602002602001015160a001515181101561167d5761163f8985815181106115fb576115fb6154f6565b602002602001015160c001518281518110611618576116186154f6565b6020026020010151838381518110611632576116326154f6565b6020026020010151613494565b888581518110611651576116516154f6565b6020026020010151828151811061166a5761166a6154f6565b60209081029190910101526001016115c0565b505050806001019050611331565b50505050915091565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116dd576040516323d871a560e01b815260040160405180910390fd5b6001600160a01b038085165f90815260986020908152604080832093871683529290529081205461171b906001600160401b0380861690851661349f565b90505f61172a868686866134b7565b90505f6117378284615601565b9050611745875f8886613574565b5f61174f876135ee565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b15801561179a575f5ffd5b505af11580156117ac573d5f5f3e3d5ffd5b505050505050505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461180357604051633213a66160e21b815260040160405180910390fd5b61180c83610fea565b15611060576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa1580156118a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118c791906155b6565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac084528252808320815192830190915254815291925061192d866119256001600160401b03808716908916613660565b849190613674565b9050610fe1848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac084613574565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd906024015f60405180830381865afa1580156119bb573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119e2919081019061566f565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa158015611a68573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a8c919061572a565b9050805f03611aa057509094909350915050565b5f83516001611aaf9190615601565b6001600160401b03811115611ac657611ac6614a7a565b604051908082528060200260200182016040528015611aef578160200160208202803683370190505b5090505f84516001611b019190615601565b6001600160401b03811115611b1857611b18614a7a565b604051908082528060200260200182016040528015611b41578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082865181518110611b6c57611b6c6154f6565b60200260200101906001600160a01b031690816001600160a01b0316815250508281865181518110611ba057611ba06154f6565b60209081029190910101525f5b8551811015611c4157858181518110611bc857611bc86154f6565b6020026020010151838281518110611be257611be26154f6565b60200260200101906001600160a01b031690816001600160a01b031681525050848181518110611c1457611c146154f6565b6020026020010151828281518110611c2e57611c2e6154f6565b6020908102919091010152600101611bad565b509097909650945050505050565b5f6001600160a01b03821615801590611c8157506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015611cf7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d1b91906155b6565b9050611d298484835f6134b7565b949350505050565b611d39613692565b6111125f6136ec565b82611d4c816132bc565b611d695760405163932d94f760e01b815260040160405180910390fd5b611d7284611c4f565b611d8f576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610e95929190615588565b60605f82516001600160401b03811115611de657611de6614a7a565b604051908082528060200260200182016040528015611e0f578160200160208202803683370190505b5090505f5b8351811015611e98576001600160a01b0385165f9081526098602052604081208551909190869084908110611e4b57611e4b6154f6565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611e8557611e856154f6565b6020908102919091010152600101611e14565b509392505050565b606654600290600490811603611ec95760405163840a48d560e01b815260040160405180910390fd5b611ed161373d565b855f5b81811015611f6457611f5c898983818110611ef157611ef16154f6565b9050602002810190611f039190615741565b611f0c90615755565b888884818110611f1e57611f1e6154f6565b9050602002810190611f309190615528565b888886818110611f4257611f426154f6565b9050602002016020810190611f579190615760565b613796565b600101611ed4565b5050610fe1600160c955565b6060611f7b3361236c565b9050610d5a8484846124d2565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610d5a90613bd8565b60608082516001600160401b03811115611fe057611fe0614a7a565b604051908082528060200260200182016040528015612009578160200160208202803683370190505b50915082516001600160401b0381111561202557612025614a7a565b60405190808252806020026020018201604052801561204e578160200160208202803683370190505b506001600160a01b038086165f908152609a60205260408120549293509116906120798683876128a0565b90505f5b8551811015612246575f6120a987838151811061209c5761209c6154f6565b60200260200101516135ee565b9050806001600160a01b031663fe243a17898985815181106120cd576120cd6154f6565b60200260200101516040518363ffffffff1660e01b81526004016121079291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612146919061572a565b858381518110612158576121586154f6565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061219b5761219b6154f6565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061221f8684815181106121ed576121ed6154f6565b6020026020010151858581518110612207576122076154f6565b6020026020010151836136749092919063ffffffff16565b878481518110612231576122316154f6565b6020908102919091010152505060010161207d565b5050505b9250929050565b5f54610100900460ff161580801561226f57505f54600160ff909116105b806122885750303b15801561228857505f5460ff166001145b6122f05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612311575f805461ff0019166101001790555b61231a82612edc565b612323836136ec565b8015611060575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b606061237782610fea565b6123945760405163a5c7c44560e01b815260040160405180910390fd5b61239d82611c4f565b156123bb576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b03831614612473576001600160a01b038083165f908152609a6020526040902054166123ee816132bc565b8061241457506001600160a01b038181165f908152609960205260409020600101541633145b61243157604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b611c8182613bf7565b6066546002906004908116036124a55760405163840a48d560e01b815260040160405180910390fd5b6124ad61373d565b6124c16124b986615755565b858585613796565b6124cb600160c955565b5050505050565b6124db33610fea565b156124f957604051633bf2b50360e11b815260040160405180910390fd5b61250283611c4f565b61251f576040516325ec6c1f60e01b815260040160405180910390fd5b61252b33848484613e56565b6110603384612f99565b60605f83516001600160401b0381111561255157612551614a7a565b60405190808252806020026020018201604052801561258457816020015b606081526020019060019003908161256f5790505b5090505f5b8451811015611e98576125b58582815181106125a7576125a76154f6565b602002602001015185611dca565b8282815181106125c7576125c76154f6565b6020908102919091010152600101612589565b6125e2613692565b6001600160a01b0381166126475760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016122e7565b612650816136ec565b50565b5f7f000000000000000000000000000000000000000000000000000000000000000046146127135750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612794573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127b8919061577b565b6001600160a01b0316336001600160a01b0316146127e95760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146128105760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a360205260409020606090611c8190613f1b565b5f61287b612653565b60405161190160f01b6020820152602281019190915260428101839052606201611126565b60605f82516001600160401b038111156128bc576128bc614a7a565b6040519080825280602002602001820160405280156128e5578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b8152600401612937929190615796565b5f60405180830381865afa158015612951573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261297891908101906157b9565b90505f5b8451811015610b21576129c28786838151811061299b5761299b6154f6565b60200260200101518484815181106129b5576129b56154f6565b602002602001015161309c565b8382815181106129d4576129d46154f6565b602090810291909101015260010161297c565b5f6001600160a01b038616612a0f576040516339b190bb60e11b815260040160405180910390fd5b83515f03612a305760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b03811115612a4a57612a4a614a7a565b604051908082528060200260200182016040528015612a73578160200160208202803683370190505b5090505f85516001600160401b03811115612a9057612a90614a7a565b604051908082528060200260200182016040528015612ab9578160200160208202803683370190505b5090505f5b8651811015612d0f575f612add88838151811061209c5761209c6154f6565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a8581518110612b1657612b166154f6565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050612b82888481518110612b6857612b686154f6565b6020026020010151888581518110612207576122076154f6565b848481518110612b9457612b946154f6565b602002602001018181525050612bcc888481518110612bb557612bb56154f6565b602002602001015182613f2790919063ffffffff16565b858481518110612bde57612bde6154f6565b60209081029190910101526001600160a01b038a1615612c7357612c358a8a8581518110612c0e57612c0e6154f6565b6020026020010151878681518110612c2857612c286154f6565b6020026020010151613f3b565b612c738a8c8b8681518110612c4c57612c4c6154f6565b6020026020010151878781518110612c6657612c666154f6565b6020026020010151613574565b816001600160a01b031663724af4238c8b8681518110612c9557612c956154f6565b60200260200101518b8781518110612caf57612caf6154f6565b60200260200101516040518463ffffffff1660e01b8152600401612cd593929190615848565b5f604051808303815f87803b158015612cec575f5ffd5b505af1158015612cfe573d5f5f3e3d5ffd5b505050505050806001019050612abe565b506001600160a01b0388165f908152609f60205260408120805491829190612d368361586c565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d9c82611114565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612e52926005850192019061486c565b5060c08201518051612e6e9160068401916020909101906148cf565b5050506001600160a01b038b165f90815260a360205260409020612e929082613fc9565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612ec693929190615884565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611d2982612f31612f2a87613bd8565b8690613fd4565b90613fd4565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c69101612843565b6066545f90600190811603612fc15760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038381165f818152609a602052604080822080546001600160a01b0319169487169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a35f5f61301e8561194f565b915091505f61302e8686856128a0565b90505f5b8351811015610fe1576130948688868481518110613052576130526154f6565b60200260200101515f87868151811061306d5761306d6154f6565b6020026020010151878781518110613087576130876154f6565b602002602001015161317e565b600101613032565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b0384160161316e5760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa15801561312a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061314e91906155b6565b90506131666001600160401b03848116908316613660565b915050610d5a565b506001600160401b031692915050565b805f0361319e57604051630a33bc6960e21b815260040160405180910390fd5b6001600160a01b038086165f90815260a2602090815260408083209388168352929052206131ce81858585613fe8565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061320c90613bd8565b60405161321b93929190615848565b60405180910390a161322c86610fea565b15610fe1576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613267908490615601565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516132ab93929190615848565b60405180910390a250505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015613342573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c81919061556d565b60605f83516001600160401b0381111561338257613382614a7a565b6040519080825280602002602001820160405280156133ab578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016133ff939291906158ae565b5f60405180830381865afa158015613419573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261344091908101906157b9565b90505f5b8551811015613488576134638887838151811061299b5761299b6154f6565b838281518110613475576134756154f6565b6020908102919091010152600101613444565b50909695505050505050565b5f610d5a8383613660565b5f6134ad8483856001614057565b611d2990856158e7565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906134e8906140b2565b90505f61354e600161351a7f0000000000000000000000000000000000000000000000000000000000000000436158fa565b61352491906158fa565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906140cc565b90505f61355b82846158e7565b90506135688187876140e8565b98975050505050505050565b6001600160a01b038085165f908152609860209081526040808320938616835292905290812080548392906135aa9084906158e7565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610e9593929190615848565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014613639577f0000000000000000000000000000000000000000000000000000000000000000611c81565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b5f610d5a8383670de0b6b3a7640000614106565b5f611d298261368c61368587613bd8565b8690613660565b90613660565b6033546001600160a01b031633146111125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016122e7565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600260c9540361378f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016122e7565b600260c955565b60a08401515182146137bb576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b0316146137f1576040516316110d3560e21b815260040160405180910390fd5b5f6137fb85611114565b5f818152609e602052604090205490915060ff1661382c576040516387c9d21960e01b815260040160405180910390fd5b60605f7f0000000000000000000000000000000000000000000000000000000000000000876080015161385f91906155e5565b90508063ffffffff164363ffffffff161161388d576040516378f67ae160e11b815260040160405180910390fd5b6138a4875f015188602001518960a0015184613366565b87516001600160a01b03165f90815260a3602052604090209092506138ca9150836141eb565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff19169055906139216005830182614908565b61392e600683015f614908565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a00906139779084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a015191909316926139b19184906128a0565b90505f5b8860a0015151811015613bcd575f6139dc8a60a00151838151811061209c5761209c6154f6565b90505f613a128b60c0015184815181106139f8576139f86154f6565b6020026020010151878581518110611632576116326154f6565b9050805f03613a22575050613bc5565b8715613af057816001600160a01b0316632eae418c8c5f01518d60a001518681518110613a5157613a516154f6565b60200260200101518d8d88818110613a6b57613a6b6154f6565b9050602002016020810190613a809190614da9565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ad5575f5ffd5b505af1158015613ae7573d5f5f3e3d5ffd5b50505050613bc2565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613b1b57613b1b6154f6565b6020026020010151866040518463ffffffff1660e01b8152600401613b4293929190615848565b60408051808303815f875af1158015613b5d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b819190615916565b91509150613bbf878e5f01518f60a001518881518110613ba357613ba36154f6565b602002602001015185858b8b81518110613087576130876154f6565b50505b50505b6001016139b5565b505050505050505050565b80515f9015613be8578151611c81565b670de0b6b3a764000092915050565b606654606090600190600290811603613c235760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613c828661194f565b9150915081515f03613c9657505050613e50565b81516001600160401b03811115613caf57613caf614a7a565b604051908082528060200260200182016040528015613cd8578160200160208202803683370190505b5094505f613ce78785856128a0565b90505f5b8351811015613e4a576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613d6b57613d6b6154f6565b6020026020010151835f81518110613d8557613d856154f6565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613db757613db76154f6565b6020026020010151825f81518110613dd157613dd16154f6565b602002602001018181525050848481518110613def57613def6154f6565b6020026020010151815f81518110613e0957613e096154f6565b602002602001018181525050613e228b898585856129e7565b8a8581518110613e3457613e346154f6565b6020908102919091010152505050600101613ceb565b50505050505b50919050565b6001600160a01b038084165f908152609960205260409020600101541680613e7e5750613f15565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff1615613ec257604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff191660011790558301516124cb908290613f0990889088908490889061081f565b855160208701516141f6565b50505050565b60605f610d5a83614248565b5f610d5a613f3484613bd8565b8390613660565b6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014611060576001600160a01b038084165f90815260a5602090815260408083209386168352929052908120613f8e906140b2565b9050613f1543613f9e8484615601565b6001600160a01b038088165f90815260a560209081526040808320938a1683529290522091906142a1565b5f610d5a83836142ac565b5f610d5a83670de0b6b3a764000084614106565b825f0361400857614001670de0b6b3a764000082613fd4565b8455613f15565b6040805160208101909152845481525f90614024908584613674565b90505f6140318483615601565b90505f61404c84612f31614045888a615601565b8590613fd4565b875550505050505050565b5f5f614064868686614106565b9050600183600281111561407a5761407a615938565b14801561409657505f84806140915761409161594c565b868809115b156140a9576140a6600182615601565b90505b95945050505050565b5f6140bd82826142f8565b6001600160e01b031692915050565b5f6140d883838361433d565b6001600160e01b03169392505050565b5f611d296140f68385615960565b85906001600160401b0316613660565b5f80805f19858709858702925082811083820303915050805f0361413d578382816141335761413361594c565b0492505050610d5a565b8084116141845760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016122e7565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610d5a8383614386565b4281101561421757604051630819bdcd60e01b815260040160405180910390fd5b61422b6001600160a01b0385168484614469565b613f1557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561429557602002820191905f5260205f20905b815481526020019060010190808311614281575b50505050509050919050565b6110608383836144bd565b5f8181526001830160205260408120546142f157508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611c81565b505f611c81565b81545f9080156143355761431e846143116001846158e7565b5f91825260209091200190565b5464010000000090046001600160e01b0316611d29565b509092915050565b82545f908161434e868683856145c3565b9050801561437c57614365866143116001846158e7565b5464010000000090046001600160e01b031661089d565b5091949350505050565b5f8181526001830160205260408120548015614460575f6143a86001836158e7565b85549091505f906143bb906001906158e7565b905081811461441a575f865f0182815481106143d9576143d96154f6565b905f5260205f200154905080875f0184815481106143f9576143f96154f6565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061442b5761442b61597f565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611c81565b5f915050611c81565b5f5f5f6144768585614616565b90925090505f81600481111561448e5761448e615938565b1480156144ac5750856001600160a01b0316826001600160a01b0316145b8061089d575061089d868686614655565b82548015614575575f6144d5856143116001856158e7565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156145285760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036145735782614549866143116001866158e7565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611e98575f6145d8848461473c565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561460257809250614610565b61460d816001615601565b93505b506145c5565b5f5f825160410361464a576020830151604084015160608501515f1a61463e87828585614756565b9450945050505061224a565b505f9050600261224a565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161467d929190615993565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516146bb91906159cf565b5f60405180830381855afa9150503d805f81146146f3576040519150601f19603f3d011682016040523d82523d5f602084013e6146f8565b606091505b509150915081801561470c57506020815110155b801561089d57508051630b135d3f60e11b90614731908301602090810190840161572a565b149695505050505050565b5f61474a60028484186159e5565b610d5a90848416615601565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561478b57505f9050600361480a565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156147dc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614804575f6001925092505061480a565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f209081019282156148bf579160200282015b828111156148bf57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061488a565b506148cb92915061491f565b5090565b828054828255905f5260205f209081019282156148bf579160200282015b828111156148bf5782518255916020019190600101906148ed565b5080545f8255905f5260205f209081019061265091905b5b808211156148cb575f8155600101614920565b6001600160a01b0381168114612650575f5ffd5b803561495281614933565b919050565b5f5f5f5f5f60a0868803121561496b575f5ffd5b853561497681614933565b9450602086013561498681614933565b9350604086013561499681614933565b94979396509394606081013594506080013592915050565b5f5f83601f8401126149be575f5ffd5b5081356001600160401b038111156149d4575f5ffd5b6020830191508360208260051b850101111561224a575f5ffd5b5f5f602083850312156149ff575f5ffd5b82356001600160401b03811115614a14575f5ffd5b614a20858286016149ae565b90969095509350505050565b602080825282518282018190525f918401906040840190835b81811015610b21578351835260209384019390920191600101614a45565b5f60208284031215614a73575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614ab057614ab0614a7a565b60405290565b604080519081016001600160401b0381118282101715614ab057614ab0614a7a565b604051601f8201601f191681016001600160401b0381118282101715614b0057614b00614a7a565b604052919050565b5f6001600160401b03821115614b2057614b20614a7a565b5060051b60200190565b5f82601f830112614b39575f5ffd5b8135614b4c614b4782614b08565b614ad8565b8082825260208201915060208360051b860101925085831115614b6d575f5ffd5b602085015b83811015614b93578035614b8581614933565b835260209283019201614b72565b5095945050505050565b5f82601f830112614bac575f5ffd5b8135614bba614b4782614b08565b8082825260208201915060208360051b860101925085831115614bdb575f5ffd5b602085015b83811015614b93578035835260209283019201614be0565b5f5f5f60608486031215614c0a575f5ffd5b8335614c1581614933565b925060208401356001600160401b03811115614c2f575f5ffd5b614c3b86828701614b2a565b92505060408401356001600160401b03811115614c56575f5ffd5b614c6286828701614b9d565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614c9c578151865260209586019590910190600101614c7e565b5093949350505050565b602081525f610d5a6020830184614c6c565b803563ffffffff81168114614952575f5ffd5b5f5f83601f840112614cdb575f5ffd5b5081356001600160401b03811115614cf1575f5ffd5b60208301915083602082850101111561224a575f5ffd5b5f5f5f5f60608587031215614d1b575f5ffd5b8435614d2681614933565b9350614d3460208601614cb8565b925060408501356001600160401b03811115614d4e575f5ffd5b614d5a87828801614ccb565b95989497509550505050565b5f5f5f5f60808587031215614d79575f5ffd5b8435614d8481614933565b93506020850135614d9481614933565b93969395505050506040820135916060013590565b5f60208284031215614db9575f5ffd5b8135610d5a81614933565b5f5f60408385031215614dd5575f5ffd5b8235614de081614933565b91506020830135614df081614933565b809150509250929050565b5f60e08284031215614e0b575f5ffd5b614e13614a8e565b9050614e1e82614947565b8152614e2c60208301614947565b6020820152614e3d60408301614947565b604082015260608281013590820152614e5860808301614cb8565b608082015260a08201356001600160401b03811115614e75575f5ffd5b614e8184828501614b2a565b60a08301525060c08201356001600160401b03811115614e9f575f5ffd5b614eab84828501614b9d565b60c08301525092915050565b5f60208284031215614ec7575f5ffd5b81356001600160401b03811115614edc575f5ffd5b611d2984828501614dfb565b5f60208284031215614ef8575f5ffd5b813560ff81168114610d5a575f5ffd5b5f8151808452602084019350602083015f5b82811015614c9c5781516001600160a01b0316865260209586019590910190600101614f1a565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f91614f8c9085018263ffffffff169052565b5060a082015160e060a0850152614fa660e0850182614f08565b905060c083015184820360c08601526140a98282614c6c565b602081525f610d5a6020830184614f41565b5f82825180855260208501945060208160051b830101602085015f5b8381101561348857601f19858403018852615009838351614c6c565b6020988901989093509190910190600101614fed565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b8281101561507657605f19878603018452615061858351614f41565b94506020938401939190910190600101615045565b5050505082810360208401526140a98185614fd1565b6001600160401b0381168114612650575f5ffd5b5f5f5f5f608085870312156150b3575f5ffd5b84356150be81614933565b935060208501356150ce81614933565b925060408501356150de8161508c565b915060608501356150ee8161508c565b939692955090935050565b5f5f5f6060848603121561510b575f5ffd5b833561511681614933565b925060208401359150604084013561512d8161508c565b809150509250925092565b604081525f61514a6040830185614f08565b82810360208401526140a98185614c6c565b5f5f5f6040848603121561516e575f5ffd5b833561517981614933565b925060208401356001600160401b03811115615193575f5ffd5b61519f86828701614ccb565b9497909650939450505050565b5f5f604083850312156151bd575f5ffd5b82356151c881614933565b915060208301356001600160401b038111156151e2575f5ffd5b6151ee85828601614b2a565b9150509250929050565b5f5f5f5f5f5f6060878903121561520d575f5ffd5b86356001600160401b03811115615222575f5ffd5b61522e89828a016149ae565b90975095505060208701356001600160401b0381111561524c575f5ffd5b61525889828a016149ae565b90955093505060408701356001600160401b03811115615276575f5ffd5b61528289828a016149ae565b979a9699509497509295939492505050565b5f5f5f606084860312156152a6575f5ffd5b83356152b181614933565b925060208401356001600160401b038111156152cb575f5ffd5b8401604081870312156152dc575f5ffd5b6152e4614ab6565b81356001600160401b038111156152f9575f5ffd5b8201601f81018813615309575f5ffd5b80356001600160401b0381111561532257615322614a7a565b615335601f8201601f1916602001614ad8565b818152896020838501011115615349575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f6040838503121561538c575f5ffd5b823561539781614933565b946020939093013593505050565b604081525f61514a6040830185614c6c565b8015158114612650575f5ffd5b5f5f5f5f606085870312156153d7575f5ffd5b84356001600160401b038111156153ec575f5ffd5b850160e081880312156153fd575f5ffd5b935060208501356001600160401b03811115615417575f5ffd5b615423878288016149ae565b90945092505060408501356150ee816153b7565b5f5f60408385031215615448575f5ffd5b82356001600160401b0381111561545d575f5ffd5b8301601f8101851361546d575f5ffd5b803561547b614b4782614b08565b8082825260208201915060208360051b85010192508783111561549c575f5ffd5b6020840193505b828410156154c75783356154b681614933565b8252602093840193909101906154a3565b945050505060208301356001600160401b038111156151e2575f5ffd5b602081525f610d5a6020830184614fd1565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261551e575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261553d575f5ffd5b8301803591506001600160401b03821115615556575f5ffd5b6020019150600581901b360382131561224a575f5ffd5b5f6020828403121561557d575f5ffd5b8151610d5a816153b7565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f602082840312156155c6575f5ffd5b8151610d5a8161508c565b634e487b7160e01b5f52601160045260245ffd5b63ffffffff8181168382160190811115611c8157611c816155d1565b80820180821115611c8157611c816155d1565b5f82601f830112615623575f5ffd5b8151615631614b4782614b08565b8082825260208201915060208360051b860101925085831115615652575f5ffd5b602085015b83811015614b93578051835260209283019201615657565b5f5f60408385031215615680575f5ffd5b82516001600160401b03811115615695575f5ffd5b8301601f810185136156a5575f5ffd5b80516156b3614b4782614b08565b8082825260208201915060208360051b8501019250878311156156d4575f5ffd5b6020840193505b828410156156ff5783516156ee81614933565b8252602093840193909101906156db565b8095505050505060208301516001600160401b0381111561571e575f5ffd5b6151ee85828601615614565b5f6020828403121561573a575f5ffd5b5051919050565b5f823560de1983360301811261551e575f5ffd5b5f611c813683614dfb565b5f60208284031215615770575f5ffd5b8135610d5a816153b7565b5f6020828403121561578b575f5ffd5b8151610d5a81614933565b6001600160a01b03831681526040602082018190525f90611d2990830184614f08565b5f602082840312156157c9575f5ffd5b81516001600160401b038111156157de575f5ffd5b8201601f810184136157ee575f5ffd5b80516157fc614b4782614b08565b8082825260208201915060208360051b85010192508683111561581d575f5ffd5b6020840193505b8284101561089d5783516158378161508c565b825260209384019390910190615824565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f6001820161587d5761587d6155d1565b5060010190565b838152606060208201525f61589c6060830185614f41565b828103604084015261089d8185614c6c565b6001600160a01b03841681526060602082018190525f906158d190830185614f08565b905063ffffffff83166040830152949350505050565b81810381811115611c8157611c816155d1565b63ffffffff8281168282160390811115611c8157611c816155d1565b5f5f60408385031215615927575f5ffd5b505080516020909101519092909150565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b038281168282160390811115611c8157611c816155d1565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f82518060208501845e5f920191825250919050565b5f826159ff57634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212208fa5cd955b119c8677e8e6d1afbc5172b7825bf8b74d37a6210809948a9b574264736f6c634300081b0033",
}
// DelegationManagerABI is the input ABI used to generate the binding from.
@@ -75,7 +68,7 @@ var DelegationManagerABI = DelegationManagerMetaData.ABI
var DelegationManagerBin = DelegationManagerMetaData.Bin
// DeployDelegationManager deploys a new Ethereum contract, binding an instance of DelegationManager to it.
-func DeployDelegationManager(auth *bind.TransactOpts, backend bind.ContractBackend, _strategyManager common.Address, _slasher common.Address, _eigenPodManager common.Address) (common.Address, *types.Transaction, *DelegationManager, error) {
+func DeployDelegationManager(auth *bind.TransactOpts, backend bind.ContractBackend, _strategyManager common.Address, _eigenPodManager common.Address, _allocationManager common.Address, _pauserRegistry common.Address, _permissionController common.Address, _MIN_WITHDRAWAL_DELAY uint32) (common.Address, *types.Transaction, *DelegationManager, error) {
parsed, err := DelegationManagerMetaData.GetAbi()
if err != nil {
return common.Address{}, nil, nil, err
@@ -84,7 +77,7 @@ func DeployDelegationManager(auth *bind.TransactOpts, backend bind.ContractBacke
return common.Address{}, nil, nil, errors.New("GetABI returned nil")
}
- address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(DelegationManagerBin), backend, _strategyManager, _slasher, _eigenPodManager)
+ address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(DelegationManagerBin), backend, _strategyManager, _eigenPodManager, _allocationManager, _pauserRegistry, _permissionController, _MIN_WITHDRAWAL_DELAY)
if err != nil {
return common.Address{}, nil, nil, err
}
@@ -264,128 +257,35 @@ func (_DelegationManager *DelegationManagerCallerSession) DELEGATIONAPPROVALTYPE
return _DelegationManager.Contract.DELEGATIONAPPROVALTYPEHASH(&_DelegationManager.CallOpts)
}
-// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70.
-//
-// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32)
-func (_DelegationManager *DelegationManagerCaller) DOMAINTYPEHASH(opts *bind.CallOpts) ([32]byte, error) {
- var out []interface{}
- err := _DelegationManager.contract.Call(opts, &out, "DOMAIN_TYPEHASH")
-
- if err != nil {
- return *new([32]byte), err
- }
-
- out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
-
- return out0, err
-
-}
-
-// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70.
-//
-// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32)
-func (_DelegationManager *DelegationManagerSession) DOMAINTYPEHASH() ([32]byte, error) {
- return _DelegationManager.Contract.DOMAINTYPEHASH(&_DelegationManager.CallOpts)
-}
-
-// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70.
-//
-// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32)
-func (_DelegationManager *DelegationManagerCallerSession) DOMAINTYPEHASH() ([32]byte, error) {
- return _DelegationManager.Contract.DOMAINTYPEHASH(&_DelegationManager.CallOpts)
-}
-
-// MAXSTAKEROPTOUTWINDOWBLOCKS is a free data retrieval call binding the contract method 0x4fc40b61.
-//
-// Solidity: function MAX_STAKER_OPT_OUT_WINDOW_BLOCKS() view returns(uint256)
-func (_DelegationManager *DelegationManagerCaller) MAXSTAKEROPTOUTWINDOWBLOCKS(opts *bind.CallOpts) (*big.Int, error) {
- var out []interface{}
- err := _DelegationManager.contract.Call(opts, &out, "MAX_STAKER_OPT_OUT_WINDOW_BLOCKS")
-
- if err != nil {
- return *new(*big.Int), err
- }
-
- out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
-
- return out0, err
-
-}
-
-// MAXSTAKEROPTOUTWINDOWBLOCKS is a free data retrieval call binding the contract method 0x4fc40b61.
-//
-// Solidity: function MAX_STAKER_OPT_OUT_WINDOW_BLOCKS() view returns(uint256)
-func (_DelegationManager *DelegationManagerSession) MAXSTAKEROPTOUTWINDOWBLOCKS() (*big.Int, error) {
- return _DelegationManager.Contract.MAXSTAKEROPTOUTWINDOWBLOCKS(&_DelegationManager.CallOpts)
-}
-
-// MAXSTAKEROPTOUTWINDOWBLOCKS is a free data retrieval call binding the contract method 0x4fc40b61.
-//
-// Solidity: function MAX_STAKER_OPT_OUT_WINDOW_BLOCKS() view returns(uint256)
-func (_DelegationManager *DelegationManagerCallerSession) MAXSTAKEROPTOUTWINDOWBLOCKS() (*big.Int, error) {
- return _DelegationManager.Contract.MAXSTAKEROPTOUTWINDOWBLOCKS(&_DelegationManager.CallOpts)
-}
-
-// MAXWITHDRAWALDELAYBLOCKS is a free data retrieval call binding the contract method 0xca661c04.
-//
-// Solidity: function MAX_WITHDRAWAL_DELAY_BLOCKS() view returns(uint256)
-func (_DelegationManager *DelegationManagerCaller) MAXWITHDRAWALDELAYBLOCKS(opts *bind.CallOpts) (*big.Int, error) {
- var out []interface{}
- err := _DelegationManager.contract.Call(opts, &out, "MAX_WITHDRAWAL_DELAY_BLOCKS")
-
- if err != nil {
- return *new(*big.Int), err
- }
-
- out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
-
- return out0, err
-
-}
-
-// MAXWITHDRAWALDELAYBLOCKS is a free data retrieval call binding the contract method 0xca661c04.
-//
-// Solidity: function MAX_WITHDRAWAL_DELAY_BLOCKS() view returns(uint256)
-func (_DelegationManager *DelegationManagerSession) MAXWITHDRAWALDELAYBLOCKS() (*big.Int, error) {
- return _DelegationManager.Contract.MAXWITHDRAWALDELAYBLOCKS(&_DelegationManager.CallOpts)
-}
-
-// MAXWITHDRAWALDELAYBLOCKS is a free data retrieval call binding the contract method 0xca661c04.
+// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7.
//
-// Solidity: function MAX_WITHDRAWAL_DELAY_BLOCKS() view returns(uint256)
-func (_DelegationManager *DelegationManagerCallerSession) MAXWITHDRAWALDELAYBLOCKS() (*big.Int, error) {
- return _DelegationManager.Contract.MAXWITHDRAWALDELAYBLOCKS(&_DelegationManager.CallOpts)
-}
-
-// STAKERDELEGATIONTYPEHASH is a free data retrieval call binding the contract method 0x43377382.
-//
-// Solidity: function STAKER_DELEGATION_TYPEHASH() view returns(bytes32)
-func (_DelegationManager *DelegationManagerCaller) STAKERDELEGATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) {
+// Solidity: function allocationManager() view returns(address)
+func (_DelegationManager *DelegationManagerCaller) AllocationManager(opts *bind.CallOpts) (common.Address, error) {
var out []interface{}
- err := _DelegationManager.contract.Call(opts, &out, "STAKER_DELEGATION_TYPEHASH")
+ err := _DelegationManager.contract.Call(opts, &out, "allocationManager")
if err != nil {
- return *new([32]byte), err
+ return *new(common.Address), err
}
- out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
+ out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
return out0, err
}
-// STAKERDELEGATIONTYPEHASH is a free data retrieval call binding the contract method 0x43377382.
+// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7.
//
-// Solidity: function STAKER_DELEGATION_TYPEHASH() view returns(bytes32)
-func (_DelegationManager *DelegationManagerSession) STAKERDELEGATIONTYPEHASH() ([32]byte, error) {
- return _DelegationManager.Contract.STAKERDELEGATIONTYPEHASH(&_DelegationManager.CallOpts)
+// Solidity: function allocationManager() view returns(address)
+func (_DelegationManager *DelegationManagerSession) AllocationManager() (common.Address, error) {
+ return _DelegationManager.Contract.AllocationManager(&_DelegationManager.CallOpts)
}
-// STAKERDELEGATIONTYPEHASH is a free data retrieval call binding the contract method 0x43377382.
+// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7.
//
-// Solidity: function STAKER_DELEGATION_TYPEHASH() view returns(bytes32)
-func (_DelegationManager *DelegationManagerCallerSession) STAKERDELEGATIONTYPEHASH() ([32]byte, error) {
- return _DelegationManager.Contract.STAKERDELEGATIONTYPEHASH(&_DelegationManager.CallOpts)
+// Solidity: function allocationManager() view returns(address)
+func (_DelegationManager *DelegationManagerCallerSession) AllocationManager() (common.Address, error) {
+ return _DelegationManager.Contract.AllocationManager(&_DelegationManager.CallOpts)
}
// BeaconChainETHStrategy is a free data retrieval call binding the contract method 0x9104c319.
@@ -419,43 +319,12 @@ func (_DelegationManager *DelegationManagerCallerSession) BeaconChainETHStrategy
return _DelegationManager.Contract.BeaconChainETHStrategy(&_DelegationManager.CallOpts)
}
-// CalculateCurrentStakerDelegationDigestHash is a free data retrieval call binding the contract method 0x1bbce091.
-//
-// Solidity: function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) view returns(bytes32)
-func (_DelegationManager *DelegationManagerCaller) CalculateCurrentStakerDelegationDigestHash(opts *bind.CallOpts, staker common.Address, operator common.Address, expiry *big.Int) ([32]byte, error) {
- var out []interface{}
- err := _DelegationManager.contract.Call(opts, &out, "calculateCurrentStakerDelegationDigestHash", staker, operator, expiry)
-
- if err != nil {
- return *new([32]byte), err
- }
-
- out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
-
- return out0, err
-
-}
-
-// CalculateCurrentStakerDelegationDigestHash is a free data retrieval call binding the contract method 0x1bbce091.
-//
-// Solidity: function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) view returns(bytes32)
-func (_DelegationManager *DelegationManagerSession) CalculateCurrentStakerDelegationDigestHash(staker common.Address, operator common.Address, expiry *big.Int) ([32]byte, error) {
- return _DelegationManager.Contract.CalculateCurrentStakerDelegationDigestHash(&_DelegationManager.CallOpts, staker, operator, expiry)
-}
-
-// CalculateCurrentStakerDelegationDigestHash is a free data retrieval call binding the contract method 0x1bbce091.
-//
-// Solidity: function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) view returns(bytes32)
-func (_DelegationManager *DelegationManagerCallerSession) CalculateCurrentStakerDelegationDigestHash(staker common.Address, operator common.Address, expiry *big.Int) ([32]byte, error) {
- return _DelegationManager.Contract.CalculateCurrentStakerDelegationDigestHash(&_DelegationManager.CallOpts, staker, operator, expiry)
-}
-
// CalculateDelegationApprovalDigestHash is a free data retrieval call binding the contract method 0x0b9f487a.
//
-// Solidity: function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) view returns(bytes32)
-func (_DelegationManager *DelegationManagerCaller) 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 (_DelegationManager *DelegationManagerCaller) 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 := _DelegationManager.contract.Call(opts, &out, "calculateDelegationApprovalDigestHash", staker, operator, _delegationApprover, approverSalt, expiry)
+ err := _DelegationManager.contract.Call(opts, &out, "calculateDelegationApprovalDigestHash", staker, operator, approver, approverSalt, expiry)
if err != nil {
return *new([32]byte), err
@@ -469,24 +338,24 @@ func (_DelegationManager *DelegationManagerCaller) CalculateDelegationApprovalDi
// 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 (_DelegationManager *DelegationManagerSession) CalculateDelegationApprovalDigestHash(staker common.Address, operator common.Address, _delegationApprover common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) {
- return _DelegationManager.Contract.CalculateDelegationApprovalDigestHash(&_DelegationManager.CallOpts, staker, operator, _delegationApprover, approverSalt, expiry)
+// Solidity: function calculateDelegationApprovalDigestHash(address staker, address operator, address approver, bytes32 approverSalt, uint256 expiry) view returns(bytes32)
+func (_DelegationManager *DelegationManagerSession) CalculateDelegationApprovalDigestHash(staker common.Address, operator common.Address, approver common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) {
+ return _DelegationManager.Contract.CalculateDelegationApprovalDigestHash(&_DelegationManager.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 (_DelegationManager *DelegationManagerCallerSession) CalculateDelegationApprovalDigestHash(staker common.Address, operator common.Address, _delegationApprover common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) {
- return _DelegationManager.Contract.CalculateDelegationApprovalDigestHash(&_DelegationManager.CallOpts, staker, operator, _delegationApprover, approverSalt, expiry)
+// Solidity: function calculateDelegationApprovalDigestHash(address staker, address operator, address approver, bytes32 approverSalt, uint256 expiry) view returns(bytes32)
+func (_DelegationManager *DelegationManagerCallerSession) CalculateDelegationApprovalDigestHash(staker common.Address, operator common.Address, approver common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) {
+ return _DelegationManager.Contract.CalculateDelegationApprovalDigestHash(&_DelegationManager.CallOpts, staker, operator, approver, approverSalt, expiry)
}
-// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111.
+// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da.
//
-// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32)
-func (_DelegationManager *DelegationManagerCaller) CalculateStakerDelegationDigestHash(opts *bind.CallOpts, staker common.Address, _stakerNonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) {
+// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32)
+func (_DelegationManager *DelegationManagerCaller) CalculateWithdrawalRoot(opts *bind.CallOpts, withdrawal IDelegationManagerTypesWithdrawal) ([32]byte, error) {
var out []interface{}
- err := _DelegationManager.contract.Call(opts, &out, "calculateStakerDelegationDigestHash", staker, _stakerNonce, operator, expiry)
+ err := _DelegationManager.contract.Call(opts, &out, "calculateWithdrawalRoot", withdrawal)
if err != nil {
return *new([32]byte), err
@@ -498,57 +367,57 @@ func (_DelegationManager *DelegationManagerCaller) CalculateStakerDelegationDige
}
-// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111.
+// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da.
//
-// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32)
-func (_DelegationManager *DelegationManagerSession) CalculateStakerDelegationDigestHash(staker common.Address, _stakerNonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) {
- return _DelegationManager.Contract.CalculateStakerDelegationDigestHash(&_DelegationManager.CallOpts, staker, _stakerNonce, operator, expiry)
+// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32)
+func (_DelegationManager *DelegationManagerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerTypesWithdrawal) ([32]byte, error) {
+ return _DelegationManager.Contract.CalculateWithdrawalRoot(&_DelegationManager.CallOpts, withdrawal)
}
-// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111.
+// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da.
//
-// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32)
-func (_DelegationManager *DelegationManagerCallerSession) CalculateStakerDelegationDigestHash(staker common.Address, _stakerNonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) {
- return _DelegationManager.Contract.CalculateStakerDelegationDigestHash(&_DelegationManager.CallOpts, staker, _stakerNonce, operator, expiry)
+// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32)
+func (_DelegationManager *DelegationManagerCallerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerTypesWithdrawal) ([32]byte, error) {
+ return _DelegationManager.Contract.CalculateWithdrawalRoot(&_DelegationManager.CallOpts, withdrawal)
}
-// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da.
+// ConvertToDepositShares is a free data retrieval call binding the contract method 0x25df922e.
//
-// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32)
-func (_DelegationManager *DelegationManagerCaller) CalculateWithdrawalRoot(opts *bind.CallOpts, withdrawal IDelegationManagerWithdrawal) ([32]byte, error) {
+// Solidity: function convertToDepositShares(address staker, address[] strategies, uint256[] withdrawableShares) view returns(uint256[])
+func (_DelegationManager *DelegationManagerCaller) ConvertToDepositShares(opts *bind.CallOpts, staker common.Address, strategies []common.Address, withdrawableShares []*big.Int) ([]*big.Int, error) {
var out []interface{}
- err := _DelegationManager.contract.Call(opts, &out, "calculateWithdrawalRoot", withdrawal)
+ err := _DelegationManager.contract.Call(opts, &out, "convertToDepositShares", staker, strategies, withdrawableShares)
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
}
-// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da.
+// ConvertToDepositShares is a free data retrieval call binding the contract method 0x25df922e.
//
-// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32)
-func (_DelegationManager *DelegationManagerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerWithdrawal) ([32]byte, error) {
- return _DelegationManager.Contract.CalculateWithdrawalRoot(&_DelegationManager.CallOpts, withdrawal)
+// Solidity: function convertToDepositShares(address staker, address[] strategies, uint256[] withdrawableShares) view returns(uint256[])
+func (_DelegationManager *DelegationManagerSession) ConvertToDepositShares(staker common.Address, strategies []common.Address, withdrawableShares []*big.Int) ([]*big.Int, error) {
+ return _DelegationManager.Contract.ConvertToDepositShares(&_DelegationManager.CallOpts, staker, strategies, withdrawableShares)
}
-// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da.
+// ConvertToDepositShares is a free data retrieval call binding the contract method 0x25df922e.
//
-// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32)
-func (_DelegationManager *DelegationManagerCallerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerWithdrawal) ([32]byte, error) {
- return _DelegationManager.Contract.CalculateWithdrawalRoot(&_DelegationManager.CallOpts, withdrawal)
+// Solidity: function convertToDepositShares(address staker, address[] strategies, uint256[] withdrawableShares) view returns(uint256[])
+func (_DelegationManager *DelegationManagerCallerSession) ConvertToDepositShares(staker common.Address, strategies []common.Address, withdrawableShares []*big.Int) ([]*big.Int, error) {
+ return _DelegationManager.Contract.ConvertToDepositShares(&_DelegationManager.CallOpts, staker, strategies, withdrawableShares)
}
// CumulativeWithdrawalsQueued is a free data retrieval call binding the contract method 0xa1788484.
//
-// Solidity: function cumulativeWithdrawalsQueued(address ) view returns(uint256)
-func (_DelegationManager *DelegationManagerCaller) CumulativeWithdrawalsQueued(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
+// Solidity: function cumulativeWithdrawalsQueued(address staker) view returns(uint256 totalQueued)
+func (_DelegationManager *DelegationManagerCaller) CumulativeWithdrawalsQueued(opts *bind.CallOpts, staker common.Address) (*big.Int, error) {
var out []interface{}
- err := _DelegationManager.contract.Call(opts, &out, "cumulativeWithdrawalsQueued", arg0)
+ err := _DelegationManager.contract.Call(opts, &out, "cumulativeWithdrawalsQueued", staker)
if err != nil {
return *new(*big.Int), err
@@ -562,24 +431,24 @@ func (_DelegationManager *DelegationManagerCaller) CumulativeWithdrawalsQueued(o
// CumulativeWithdrawalsQueued is a free data retrieval call binding the contract method 0xa1788484.
//
-// Solidity: function cumulativeWithdrawalsQueued(address ) view returns(uint256)
-func (_DelegationManager *DelegationManagerSession) CumulativeWithdrawalsQueued(arg0 common.Address) (*big.Int, error) {
- return _DelegationManager.Contract.CumulativeWithdrawalsQueued(&_DelegationManager.CallOpts, arg0)
+// Solidity: function cumulativeWithdrawalsQueued(address staker) view returns(uint256 totalQueued)
+func (_DelegationManager *DelegationManagerSession) CumulativeWithdrawalsQueued(staker common.Address) (*big.Int, error) {
+ return _DelegationManager.Contract.CumulativeWithdrawalsQueued(&_DelegationManager.CallOpts, staker)
}
// CumulativeWithdrawalsQueued is a free data retrieval call binding the contract method 0xa1788484.
//
-// Solidity: function cumulativeWithdrawalsQueued(address ) view returns(uint256)
-func (_DelegationManager *DelegationManagerCallerSession) CumulativeWithdrawalsQueued(arg0 common.Address) (*big.Int, error) {
- return _DelegationManager.Contract.CumulativeWithdrawalsQueued(&_DelegationManager.CallOpts, arg0)
+// Solidity: function cumulativeWithdrawalsQueued(address staker) view returns(uint256 totalQueued)
+func (_DelegationManager *DelegationManagerCallerSession) CumulativeWithdrawalsQueued(staker common.Address) (*big.Int, error) {
+ return _DelegationManager.Contract.CumulativeWithdrawalsQueued(&_DelegationManager.CallOpts, staker)
}
// DelegatedTo is a free data retrieval call binding the contract method 0x65da1264.
//
-// Solidity: function delegatedTo(address ) view returns(address)
-func (_DelegationManager *DelegationManagerCaller) DelegatedTo(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
+// Solidity: function delegatedTo(address staker) view returns(address operator)
+func (_DelegationManager *DelegationManagerCaller) DelegatedTo(opts *bind.CallOpts, staker common.Address) (common.Address, error) {
var out []interface{}
- err := _DelegationManager.contract.Call(opts, &out, "delegatedTo", arg0)
+ err := _DelegationManager.contract.Call(opts, &out, "delegatedTo", staker)
if err != nil {
return *new(common.Address), err
@@ -593,16 +462,16 @@ func (_DelegationManager *DelegationManagerCaller) DelegatedTo(opts *bind.CallOp
// DelegatedTo is a free data retrieval call binding the contract method 0x65da1264.
//
-// Solidity: function delegatedTo(address ) view returns(address)
-func (_DelegationManager *DelegationManagerSession) DelegatedTo(arg0 common.Address) (common.Address, error) {
- return _DelegationManager.Contract.DelegatedTo(&_DelegationManager.CallOpts, arg0)
+// Solidity: function delegatedTo(address staker) view returns(address operator)
+func (_DelegationManager *DelegationManagerSession) DelegatedTo(staker common.Address) (common.Address, error) {
+ return _DelegationManager.Contract.DelegatedTo(&_DelegationManager.CallOpts, staker)
}
// DelegatedTo is a free data retrieval call binding the contract method 0x65da1264.
//
-// Solidity: function delegatedTo(address ) view returns(address)
-func (_DelegationManager *DelegationManagerCallerSession) DelegatedTo(arg0 common.Address) (common.Address, error) {
- return _DelegationManager.Contract.DelegatedTo(&_DelegationManager.CallOpts, arg0)
+// Solidity: function delegatedTo(address staker) view returns(address operator)
+func (_DelegationManager *DelegationManagerCallerSession) DelegatedTo(staker common.Address) (common.Address, error) {
+ return _DelegationManager.Contract.DelegatedTo(&_DelegationManager.CallOpts, staker)
}
// DelegationApprover is a free data retrieval call binding the contract method 0x3cdeb5e0.
@@ -638,10 +507,10 @@ func (_DelegationManager *DelegationManagerCallerSession) DelegationApprover(ope
// DelegationApproverSaltIsSpent is a free data retrieval call binding the contract method 0xbb45fef2.
//
-// Solidity: function delegationApproverSaltIsSpent(address , bytes32 ) view returns(bool)
-func (_DelegationManager *DelegationManagerCaller) DelegationApproverSaltIsSpent(opts *bind.CallOpts, arg0 common.Address, arg1 [32]byte) (bool, error) {
+// Solidity: function delegationApproverSaltIsSpent(address delegationApprover, bytes32 salt) view returns(bool spent)
+func (_DelegationManager *DelegationManagerCaller) DelegationApproverSaltIsSpent(opts *bind.CallOpts, delegationApprover common.Address, salt [32]byte) (bool, error) {
var out []interface{}
- err := _DelegationManager.contract.Call(opts, &out, "delegationApproverSaltIsSpent", arg0, arg1)
+ err := _DelegationManager.contract.Call(opts, &out, "delegationApproverSaltIsSpent", delegationApprover, salt)
if err != nil {
return *new(bool), err
@@ -655,16 +524,47 @@ func (_DelegationManager *DelegationManagerCaller) DelegationApproverSaltIsSpent
// DelegationApproverSaltIsSpent is a free data retrieval call binding the contract method 0xbb45fef2.
//
-// Solidity: function delegationApproverSaltIsSpent(address , bytes32 ) view returns(bool)
-func (_DelegationManager *DelegationManagerSession) DelegationApproverSaltIsSpent(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _DelegationManager.Contract.DelegationApproverSaltIsSpent(&_DelegationManager.CallOpts, arg0, arg1)
+// Solidity: function delegationApproverSaltIsSpent(address delegationApprover, bytes32 salt) view returns(bool spent)
+func (_DelegationManager *DelegationManagerSession) DelegationApproverSaltIsSpent(delegationApprover common.Address, salt [32]byte) (bool, error) {
+ return _DelegationManager.Contract.DelegationApproverSaltIsSpent(&_DelegationManager.CallOpts, delegationApprover, salt)
}
// DelegationApproverSaltIsSpent is a free data retrieval call binding the contract method 0xbb45fef2.
//
-// Solidity: function delegationApproverSaltIsSpent(address , bytes32 ) view returns(bool)
-func (_DelegationManager *DelegationManagerCallerSession) DelegationApproverSaltIsSpent(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _DelegationManager.Contract.DelegationApproverSaltIsSpent(&_DelegationManager.CallOpts, arg0, arg1)
+// Solidity: function delegationApproverSaltIsSpent(address delegationApprover, bytes32 salt) view returns(bool spent)
+func (_DelegationManager *DelegationManagerCallerSession) DelegationApproverSaltIsSpent(delegationApprover common.Address, salt [32]byte) (bool, error) {
+ return _DelegationManager.Contract.DelegationApproverSaltIsSpent(&_DelegationManager.CallOpts, delegationApprover, salt)
+}
+
+// DepositScalingFactor is a free data retrieval call binding the contract method 0xbfae3fd2.
+//
+// Solidity: function depositScalingFactor(address staker, address strategy) view returns(uint256)
+func (_DelegationManager *DelegationManagerCaller) DepositScalingFactor(opts *bind.CallOpts, staker common.Address, strategy common.Address) (*big.Int, error) {
+ var out []interface{}
+ err := _DelegationManager.contract.Call(opts, &out, "depositScalingFactor", staker, strategy)
+
+ if err != nil {
+ return *new(*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+
+ return out0, err
+
+}
+
+// DepositScalingFactor is a free data retrieval call binding the contract method 0xbfae3fd2.
+//
+// Solidity: function depositScalingFactor(address staker, address strategy) view returns(uint256)
+func (_DelegationManager *DelegationManagerSession) DepositScalingFactor(staker common.Address, strategy common.Address) (*big.Int, error) {
+ return _DelegationManager.Contract.DepositScalingFactor(&_DelegationManager.CallOpts, staker, strategy)
+}
+
+// DepositScalingFactor is a free data retrieval call binding the contract method 0xbfae3fd2.
+//
+// Solidity: function depositScalingFactor(address staker, address strategy) view returns(uint256)
+func (_DelegationManager *DelegationManagerCallerSession) DepositScalingFactor(staker common.Address, strategy common.Address) (*big.Int, error) {
+ return _DelegationManager.Contract.DepositScalingFactor(&_DelegationManager.CallOpts, staker, strategy)
}
// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
@@ -729,12 +629,12 @@ func (_DelegationManager *DelegationManagerCallerSession) EigenPodManager() (com
return _DelegationManager.Contract.EigenPodManager(&_DelegationManager.CallOpts)
}
-// 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 (_DelegationManager *DelegationManagerCaller) GetDelegatableShares(opts *bind.CallOpts, staker common.Address) ([]common.Address, []*big.Int, error) {
+// Solidity: function getDepositedShares(address staker) view returns(address[], uint256[])
+func (_DelegationManager *DelegationManagerCaller) GetDepositedShares(opts *bind.CallOpts, staker common.Address) ([]common.Address, []*big.Int, error) {
var out []interface{}
- err := _DelegationManager.contract.Call(opts, &out, "getDelegatableShares", staker)
+ err := _DelegationManager.contract.Call(opts, &out, "getDepositedShares", staker)
if err != nil {
return *new([]common.Address), *new([]*big.Int), err
@@ -747,18 +647,18 @@ func (_DelegationManager *DelegationManagerCaller) GetDelegatableShares(opts *bi
}
-// 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 (_DelegationManager *DelegationManagerSession) GetDelegatableShares(staker common.Address) ([]common.Address, []*big.Int, error) {
- return _DelegationManager.Contract.GetDelegatableShares(&_DelegationManager.CallOpts, staker)
+// Solidity: function getDepositedShares(address staker) view returns(address[], uint256[])
+func (_DelegationManager *DelegationManagerSession) GetDepositedShares(staker common.Address) ([]common.Address, []*big.Int, error) {
+ return _DelegationManager.Contract.GetDepositedShares(&_DelegationManager.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 (_DelegationManager *DelegationManagerCallerSession) GetDelegatableShares(staker common.Address) ([]common.Address, []*big.Int, error) {
- return _DelegationManager.Contract.GetDelegatableShares(&_DelegationManager.CallOpts, staker)
+// Solidity: function getDepositedShares(address staker) view returns(address[], uint256[])
+func (_DelegationManager *DelegationManagerCallerSession) GetDepositedShares(staker common.Address) ([]common.Address, []*big.Int, error) {
+ return _DelegationManager.Contract.GetDepositedShares(&_DelegationManager.CallOpts, staker)
}
// GetOperatorShares is a free data retrieval call binding the contract method 0x90041347.
@@ -792,12 +692,150 @@ func (_DelegationManager *DelegationManagerCallerSession) GetOperatorShares(oper
return _DelegationManager.Contract.GetOperatorShares(&_DelegationManager.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 getOperatorsShares(address[] operators, address[] strategies) view returns(uint256[][])
+func (_DelegationManager *DelegationManagerCaller) GetOperatorsShares(opts *bind.CallOpts, operators []common.Address, strategies []common.Address) ([][]*big.Int, error) {
+ var out []interface{}
+ err := _DelegationManager.contract.Call(opts, &out, "getOperatorsShares", operators, strategies)
+
+ if err != nil {
+ return *new([][]*big.Int), err
+ }
+
+ 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 (_DelegationManager *DelegationManagerSession) GetOperatorsShares(operators []common.Address, strategies []common.Address) ([][]*big.Int, error) {
+ return _DelegationManager.Contract.GetOperatorsShares(&_DelegationManager.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 (_DelegationManager *DelegationManagerCallerSession) GetOperatorsShares(operators []common.Address, strategies []common.Address) ([][]*big.Int, error) {
+ return _DelegationManager.Contract.GetOperatorsShares(&_DelegationManager.CallOpts, operators, strategies)
+}
+
+// GetQueuedWithdrawal is a free data retrieval call binding the contract method 0x5d975e88.
+//
+// Solidity: function getQueuedWithdrawal(bytes32 withdrawalRoot) view returns((address,address,address,uint256,uint32,address[],uint256[]))
+func (_DelegationManager *DelegationManagerCaller) GetQueuedWithdrawal(opts *bind.CallOpts, withdrawalRoot [32]byte) (IDelegationManagerTypesWithdrawal, error) {
+ var out []interface{}
+ err := _DelegationManager.contract.Call(opts, &out, "getQueuedWithdrawal", withdrawalRoot)
+
+ if err != nil {
+ return *new(IDelegationManagerTypesWithdrawal), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(IDelegationManagerTypesWithdrawal)).(*IDelegationManagerTypesWithdrawal)
+
+ return out0, err
+
+}
+
+// GetQueuedWithdrawal is a free data retrieval call binding the contract method 0x5d975e88.
+//
+// Solidity: function getQueuedWithdrawal(bytes32 withdrawalRoot) view returns((address,address,address,uint256,uint32,address[],uint256[]))
+func (_DelegationManager *DelegationManagerSession) GetQueuedWithdrawal(withdrawalRoot [32]byte) (IDelegationManagerTypesWithdrawal, error) {
+ return _DelegationManager.Contract.GetQueuedWithdrawal(&_DelegationManager.CallOpts, withdrawalRoot)
+}
+
+// GetQueuedWithdrawal is a free data retrieval call binding the contract method 0x5d975e88.
+//
+// Solidity: function getQueuedWithdrawal(bytes32 withdrawalRoot) view returns((address,address,address,uint256,uint32,address[],uint256[]))
+func (_DelegationManager *DelegationManagerCallerSession) GetQueuedWithdrawal(withdrawalRoot [32]byte) (IDelegationManagerTypesWithdrawal, error) {
+ return _DelegationManager.Contract.GetQueuedWithdrawal(&_DelegationManager.CallOpts, withdrawalRoot)
+}
+
+// GetQueuedWithdrawalRoots is a free data retrieval call binding the contract method 0xfd8aa88d.
+//
+// Solidity: function getQueuedWithdrawalRoots(address staker) view returns(bytes32[])
+func (_DelegationManager *DelegationManagerCaller) GetQueuedWithdrawalRoots(opts *bind.CallOpts, staker common.Address) ([][32]byte, error) {
+ var out []interface{}
+ err := _DelegationManager.contract.Call(opts, &out, "getQueuedWithdrawalRoots", staker)
+
+ if err != nil {
+ return *new([][32]byte), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([][32]byte)).(*[][32]byte)
+
+ return out0, err
+
+}
+
+// GetQueuedWithdrawalRoots is a free data retrieval call binding the contract method 0xfd8aa88d.
+//
+// Solidity: function getQueuedWithdrawalRoots(address staker) view returns(bytes32[])
+func (_DelegationManager *DelegationManagerSession) GetQueuedWithdrawalRoots(staker common.Address) ([][32]byte, error) {
+ return _DelegationManager.Contract.GetQueuedWithdrawalRoots(&_DelegationManager.CallOpts, staker)
+}
+
+// GetQueuedWithdrawalRoots is a free data retrieval call binding the contract method 0xfd8aa88d.
+//
+// Solidity: function getQueuedWithdrawalRoots(address staker) view returns(bytes32[])
+func (_DelegationManager *DelegationManagerCallerSession) GetQueuedWithdrawalRoots(staker common.Address) ([][32]byte, error) {
+ return _DelegationManager.Contract.GetQueuedWithdrawalRoots(&_DelegationManager.CallOpts, staker)
+}
+
+// GetQueuedWithdrawals is a free data retrieval call binding the contract method 0x5dd68579.
+//
+// Solidity: function getQueuedWithdrawals(address staker) view returns((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, uint256[][] shares)
+func (_DelegationManager *DelegationManagerCaller) GetQueuedWithdrawals(opts *bind.CallOpts, staker common.Address) (struct {
+ Withdrawals []IDelegationManagerTypesWithdrawal
+ Shares [][]*big.Int
+}, error) {
+ var out []interface{}
+ err := _DelegationManager.contract.Call(opts, &out, "getQueuedWithdrawals", staker)
+
+ outstruct := new(struct {
+ Withdrawals []IDelegationManagerTypesWithdrawal
+ Shares [][]*big.Int
+ })
+ if err != nil {
+ return *outstruct, err
+ }
+
+ outstruct.Withdrawals = *abi.ConvertType(out[0], new([]IDelegationManagerTypesWithdrawal)).(*[]IDelegationManagerTypesWithdrawal)
+ outstruct.Shares = *abi.ConvertType(out[1], new([][]*big.Int)).(*[][]*big.Int)
+
+ return *outstruct, err
+
+}
+
+// GetQueuedWithdrawals is a free data retrieval call binding the contract method 0x5dd68579.
//
-// Solidity: function getWithdrawalDelay(address[] strategies) view returns(uint256)
-func (_DelegationManager *DelegationManagerCaller) GetWithdrawalDelay(opts *bind.CallOpts, strategies []common.Address) (*big.Int, error) {
+// Solidity: function getQueuedWithdrawals(address staker) view returns((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, uint256[][] shares)
+func (_DelegationManager *DelegationManagerSession) GetQueuedWithdrawals(staker common.Address) (struct {
+ Withdrawals []IDelegationManagerTypesWithdrawal
+ Shares [][]*big.Int
+}, error) {
+ return _DelegationManager.Contract.GetQueuedWithdrawals(&_DelegationManager.CallOpts, staker)
+}
+
+// GetQueuedWithdrawals is a free data retrieval call binding the contract method 0x5dd68579.
+//
+// Solidity: function getQueuedWithdrawals(address staker) view returns((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, uint256[][] shares)
+func (_DelegationManager *DelegationManagerCallerSession) GetQueuedWithdrawals(staker common.Address) (struct {
+ Withdrawals []IDelegationManagerTypesWithdrawal
+ Shares [][]*big.Int
+}, error) {
+ return _DelegationManager.Contract.GetQueuedWithdrawals(&_DelegationManager.CallOpts, staker)
+}
+
+// GetSlashableSharesInQueue is a free data retrieval call binding the contract method 0x6e174448.
+//
+// Solidity: function getSlashableSharesInQueue(address operator, address strategy) view returns(uint256)
+func (_DelegationManager *DelegationManagerCaller) GetSlashableSharesInQueue(opts *bind.CallOpts, operator common.Address, strategy common.Address) (*big.Int, error) {
var out []interface{}
- err := _DelegationManager.contract.Call(opts, &out, "getWithdrawalDelay", strategies)
+ err := _DelegationManager.contract.Call(opts, &out, "getSlashableSharesInQueue", operator, strategy)
if err != nil {
return *new(*big.Int), err
@@ -809,18 +847,63 @@ func (_DelegationManager *DelegationManagerCaller) GetWithdrawalDelay(opts *bind
}
-// GetWithdrawalDelay is a free data retrieval call binding the contract method 0x0449ca39.
+// GetSlashableSharesInQueue is a free data retrieval call binding the contract method 0x6e174448.
+//
+// Solidity: function getSlashableSharesInQueue(address operator, address strategy) view returns(uint256)
+func (_DelegationManager *DelegationManagerSession) GetSlashableSharesInQueue(operator common.Address, strategy common.Address) (*big.Int, error) {
+ return _DelegationManager.Contract.GetSlashableSharesInQueue(&_DelegationManager.CallOpts, operator, strategy)
+}
+
+// GetSlashableSharesInQueue is a free data retrieval call binding the contract method 0x6e174448.
+//
+// Solidity: function getSlashableSharesInQueue(address operator, address strategy) view returns(uint256)
+func (_DelegationManager *DelegationManagerCallerSession) GetSlashableSharesInQueue(operator common.Address, strategy common.Address) (*big.Int, error) {
+ return _DelegationManager.Contract.GetSlashableSharesInQueue(&_DelegationManager.CallOpts, operator, strategy)
+}
+
+// GetWithdrawableShares is a free data retrieval call binding the contract method 0xc978f7ac.
+//
+// Solidity: function getWithdrawableShares(address staker, address[] strategies) view returns(uint256[] withdrawableShares, uint256[] depositShares)
+func (_DelegationManager *DelegationManagerCaller) GetWithdrawableShares(opts *bind.CallOpts, staker common.Address, strategies []common.Address) (struct {
+ WithdrawableShares []*big.Int
+ DepositShares []*big.Int
+}, error) {
+ var out []interface{}
+ err := _DelegationManager.contract.Call(opts, &out, "getWithdrawableShares", staker, strategies)
+
+ outstruct := new(struct {
+ WithdrawableShares []*big.Int
+ DepositShares []*big.Int
+ })
+ if err != nil {
+ return *outstruct, err
+ }
+
+ outstruct.WithdrawableShares = *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int)
+ outstruct.DepositShares = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int)
+
+ return *outstruct, err
+
+}
+
+// GetWithdrawableShares is a free data retrieval call binding the contract method 0xc978f7ac.
//
-// Solidity: function getWithdrawalDelay(address[] strategies) view returns(uint256)
-func (_DelegationManager *DelegationManagerSession) GetWithdrawalDelay(strategies []common.Address) (*big.Int, error) {
- return _DelegationManager.Contract.GetWithdrawalDelay(&_DelegationManager.CallOpts, strategies)
+// Solidity: function getWithdrawableShares(address staker, address[] strategies) view returns(uint256[] withdrawableShares, uint256[] depositShares)
+func (_DelegationManager *DelegationManagerSession) GetWithdrawableShares(staker common.Address, strategies []common.Address) (struct {
+ WithdrawableShares []*big.Int
+ DepositShares []*big.Int
+}, error) {
+ return _DelegationManager.Contract.GetWithdrawableShares(&_DelegationManager.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 (_DelegationManager *DelegationManagerCallerSession) GetWithdrawalDelay(strategies []common.Address) (*big.Int, error) {
- return _DelegationManager.Contract.GetWithdrawalDelay(&_DelegationManager.CallOpts, strategies)
+// Solidity: function getWithdrawableShares(address staker, address[] strategies) view returns(uint256[] withdrawableShares, uint256[] depositShares)
+func (_DelegationManager *DelegationManagerCallerSession) GetWithdrawableShares(staker common.Address, strategies []common.Address) (struct {
+ WithdrawableShares []*big.Int
+ DepositShares []*big.Int
+}, error) {
+ return _DelegationManager.Contract.GetWithdrawableShares(&_DelegationManager.CallOpts, staker, strategies)
}
// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d.
@@ -887,16 +970,16 @@ func (_DelegationManager *DelegationManagerCallerSession) IsOperator(operator co
// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8.
//
-// Solidity: function minWithdrawalDelayBlocks() view returns(uint256)
-func (_DelegationManager *DelegationManagerCaller) MinWithdrawalDelayBlocks(opts *bind.CallOpts) (*big.Int, error) {
+// Solidity: function minWithdrawalDelayBlocks() view returns(uint32)
+func (_DelegationManager *DelegationManagerCaller) MinWithdrawalDelayBlocks(opts *bind.CallOpts) (uint32, error) {
var out []interface{}
err := _DelegationManager.contract.Call(opts, &out, "minWithdrawalDelayBlocks")
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
@@ -904,55 +987,24 @@ func (_DelegationManager *DelegationManagerCaller) MinWithdrawalDelayBlocks(opts
// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8.
//
-// Solidity: function minWithdrawalDelayBlocks() view returns(uint256)
-func (_DelegationManager *DelegationManagerSession) MinWithdrawalDelayBlocks() (*big.Int, error) {
+// Solidity: function minWithdrawalDelayBlocks() view returns(uint32)
+func (_DelegationManager *DelegationManagerSession) MinWithdrawalDelayBlocks() (uint32, error) {
return _DelegationManager.Contract.MinWithdrawalDelayBlocks(&_DelegationManager.CallOpts)
}
// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8.
//
-// Solidity: function minWithdrawalDelayBlocks() view returns(uint256)
-func (_DelegationManager *DelegationManagerCallerSession) MinWithdrawalDelayBlocks() (*big.Int, error) {
+// Solidity: function minWithdrawalDelayBlocks() view returns(uint32)
+func (_DelegationManager *DelegationManagerCallerSession) MinWithdrawalDelayBlocks() (uint32, error) {
return _DelegationManager.Contract.MinWithdrawalDelayBlocks(&_DelegationManager.CallOpts)
}
-// OperatorDetails is a free data retrieval call binding the contract method 0xc5e480db.
-//
-// Solidity: function operatorDetails(address operator) view returns((address,address,uint32))
-func (_DelegationManager *DelegationManagerCaller) OperatorDetails(opts *bind.CallOpts, operator common.Address) (IDelegationManagerOperatorDetails, error) {
- var out []interface{}
- err := _DelegationManager.contract.Call(opts, &out, "operatorDetails", operator)
-
- if err != nil {
- return *new(IDelegationManagerOperatorDetails), err
- }
-
- out0 := *abi.ConvertType(out[0], new(IDelegationManagerOperatorDetails)).(*IDelegationManagerOperatorDetails)
-
- return out0, err
-
-}
-
-// OperatorDetails is a free data retrieval call binding the contract method 0xc5e480db.
-//
-// Solidity: function operatorDetails(address operator) view returns((address,address,uint32))
-func (_DelegationManager *DelegationManagerSession) OperatorDetails(operator common.Address) (IDelegationManagerOperatorDetails, error) {
- return _DelegationManager.Contract.OperatorDetails(&_DelegationManager.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 (_DelegationManager *DelegationManagerCallerSession) OperatorDetails(operator common.Address) (IDelegationManagerOperatorDetails, error) {
- return _DelegationManager.Contract.OperatorDetails(&_DelegationManager.CallOpts, operator)
-}
-
// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3.
//
-// Solidity: function operatorShares(address , address ) view returns(uint256)
-func (_DelegationManager *DelegationManagerCaller) OperatorShares(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) {
+// Solidity: function operatorShares(address operator, address strategy) view returns(uint256 shares)
+func (_DelegationManager *DelegationManagerCaller) OperatorShares(opts *bind.CallOpts, operator common.Address, strategy common.Address) (*big.Int, error) {
var out []interface{}
- err := _DelegationManager.contract.Call(opts, &out, "operatorShares", arg0, arg1)
+ err := _DelegationManager.contract.Call(opts, &out, "operatorShares", operator, strategy)
if err != nil {
return *new(*big.Int), err
@@ -966,16 +1018,16 @@ func (_DelegationManager *DelegationManagerCaller) OperatorShares(opts *bind.Cal
// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3.
//
-// Solidity: function operatorShares(address , address ) view returns(uint256)
-func (_DelegationManager *DelegationManagerSession) OperatorShares(arg0 common.Address, arg1 common.Address) (*big.Int, error) {
- return _DelegationManager.Contract.OperatorShares(&_DelegationManager.CallOpts, arg0, arg1)
+// Solidity: function operatorShares(address operator, address strategy) view returns(uint256 shares)
+func (_DelegationManager *DelegationManagerSession) OperatorShares(operator common.Address, strategy common.Address) (*big.Int, error) {
+ return _DelegationManager.Contract.OperatorShares(&_DelegationManager.CallOpts, operator, strategy)
}
// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3.
//
-// Solidity: function operatorShares(address , address ) view returns(uint256)
-func (_DelegationManager *DelegationManagerCallerSession) OperatorShares(arg0 common.Address, arg1 common.Address) (*big.Int, error) {
- return _DelegationManager.Contract.OperatorShares(&_DelegationManager.CallOpts, arg0, arg1)
+// Solidity: function operatorShares(address operator, address strategy) view returns(uint256 shares)
+func (_DelegationManager *DelegationManagerCallerSession) OperatorShares(operator common.Address, strategy common.Address) (*big.Int, error) {
+ return _DelegationManager.Contract.OperatorShares(&_DelegationManager.CallOpts, operator, strategy)
}
// Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
@@ -1104,10 +1156,10 @@ func (_DelegationManager *DelegationManagerCallerSession) PauserRegistry() (comm
// PendingWithdrawals is a free data retrieval call binding the contract method 0xb7f06ebe.
//
-// Solidity: function pendingWithdrawals(bytes32 ) view returns(bool)
-func (_DelegationManager *DelegationManagerCaller) PendingWithdrawals(opts *bind.CallOpts, arg0 [32]byte) (bool, error) {
+// Solidity: function pendingWithdrawals(bytes32 withdrawalRoot) view returns(bool pending)
+func (_DelegationManager *DelegationManagerCaller) PendingWithdrawals(opts *bind.CallOpts, withdrawalRoot [32]byte) (bool, error) {
var out []interface{}
- err := _DelegationManager.contract.Call(opts, &out, "pendingWithdrawals", arg0)
+ err := _DelegationManager.contract.Call(opts, &out, "pendingWithdrawals", withdrawalRoot)
if err != nil {
return *new(bool), err
@@ -1121,24 +1173,24 @@ func (_DelegationManager *DelegationManagerCaller) PendingWithdrawals(opts *bind
// PendingWithdrawals is a free data retrieval call binding the contract method 0xb7f06ebe.
//
-// Solidity: function pendingWithdrawals(bytes32 ) view returns(bool)
-func (_DelegationManager *DelegationManagerSession) PendingWithdrawals(arg0 [32]byte) (bool, error) {
- return _DelegationManager.Contract.PendingWithdrawals(&_DelegationManager.CallOpts, arg0)
+// Solidity: function pendingWithdrawals(bytes32 withdrawalRoot) view returns(bool pending)
+func (_DelegationManager *DelegationManagerSession) PendingWithdrawals(withdrawalRoot [32]byte) (bool, error) {
+ return _DelegationManager.Contract.PendingWithdrawals(&_DelegationManager.CallOpts, withdrawalRoot)
}
// PendingWithdrawals is a free data retrieval call binding the contract method 0xb7f06ebe.
//
-// Solidity: function pendingWithdrawals(bytes32 ) view returns(bool)
-func (_DelegationManager *DelegationManagerCallerSession) PendingWithdrawals(arg0 [32]byte) (bool, error) {
- return _DelegationManager.Contract.PendingWithdrawals(&_DelegationManager.CallOpts, arg0)
+// Solidity: function pendingWithdrawals(bytes32 withdrawalRoot) view returns(bool pending)
+func (_DelegationManager *DelegationManagerCallerSession) PendingWithdrawals(withdrawalRoot [32]byte) (bool, error) {
+ return _DelegationManager.Contract.PendingWithdrawals(&_DelegationManager.CallOpts, withdrawalRoot)
}
-// Slasher is a free data retrieval call binding the contract method 0xb1344271.
+// PermissionController is a free data retrieval call binding the contract method 0x4657e26a.
//
-// Solidity: function slasher() view returns(address)
-func (_DelegationManager *DelegationManagerCaller) Slasher(opts *bind.CallOpts) (common.Address, error) {
+// Solidity: function permissionController() view returns(address)
+func (_DelegationManager *DelegationManagerCaller) PermissionController(opts *bind.CallOpts) (common.Address, error) {
var out []interface{}
- err := _DelegationManager.contract.Call(opts, &out, "slasher")
+ err := _DelegationManager.contract.Call(opts, &out, "permissionController")
if err != nil {
return *new(common.Address), err
@@ -1150,205 +1202,112 @@ func (_DelegationManager *DelegationManagerCaller) Slasher(opts *bind.CallOpts)
}
-// Slasher is a free data retrieval call binding the contract method 0xb1344271.
+// PermissionController is a free data retrieval call binding the contract method 0x4657e26a.
//
-// Solidity: function slasher() view returns(address)
-func (_DelegationManager *DelegationManagerSession) Slasher() (common.Address, error) {
- return _DelegationManager.Contract.Slasher(&_DelegationManager.CallOpts)
+// Solidity: function permissionController() view returns(address)
+func (_DelegationManager *DelegationManagerSession) PermissionController() (common.Address, error) {
+ return _DelegationManager.Contract.PermissionController(&_DelegationManager.CallOpts)
}
-// Slasher is a free data retrieval call binding the contract method 0xb1344271.
+// PermissionController is a free data retrieval call binding the contract method 0x4657e26a.
//
-// Solidity: function slasher() view returns(address)
-func (_DelegationManager *DelegationManagerCallerSession) Slasher() (common.Address, error) {
- return _DelegationManager.Contract.Slasher(&_DelegationManager.CallOpts)
+// Solidity: function permissionController() view returns(address)
+func (_DelegationManager *DelegationManagerCallerSession) PermissionController() (common.Address, error) {
+ return _DelegationManager.Contract.PermissionController(&_DelegationManager.CallOpts)
}
-// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f.
+// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
//
-// Solidity: function stakerNonce(address ) view returns(uint256)
-func (_DelegationManager *DelegationManagerCaller) StakerNonce(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
+// Solidity: function strategyManager() view returns(address)
+func (_DelegationManager *DelegationManagerCaller) StrategyManager(opts *bind.CallOpts) (common.Address, error) {
var out []interface{}
- err := _DelegationManager.contract.Call(opts, &out, "stakerNonce", arg0)
+ err := _DelegationManager.contract.Call(opts, &out, "strategyManager")
if err != nil {
- return *new(*big.Int), err
+ return *new(common.Address), err
}
- out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+ out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
return out0, err
}
-// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f.
+// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
//
-// Solidity: function stakerNonce(address ) view returns(uint256)
-func (_DelegationManager *DelegationManagerSession) StakerNonce(arg0 common.Address) (*big.Int, error) {
- return _DelegationManager.Contract.StakerNonce(&_DelegationManager.CallOpts, arg0)
+// Solidity: function strategyManager() view returns(address)
+func (_DelegationManager *DelegationManagerSession) StrategyManager() (common.Address, error) {
+ return _DelegationManager.Contract.StrategyManager(&_DelegationManager.CallOpts)
}
-// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f.
+// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
//
-// Solidity: function stakerNonce(address ) view returns(uint256)
-func (_DelegationManager *DelegationManagerCallerSession) StakerNonce(arg0 common.Address) (*big.Int, error) {
- return _DelegationManager.Contract.StakerNonce(&_DelegationManager.CallOpts, arg0)
+// Solidity: function strategyManager() view returns(address)
+func (_DelegationManager *DelegationManagerCallerSession) StrategyManager() (common.Address, error) {
+ return _DelegationManager.Contract.StrategyManager(&_DelegationManager.CallOpts)
}
-// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365.
+// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0xe4cc3f90.
//
-// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256)
-func (_DelegationManager *DelegationManagerCaller) StakerOptOutWindowBlocks(opts *bind.CallOpts, operator common.Address) (*big.Int, error) {
- var out []interface{}
- err := _DelegationManager.contract.Call(opts, &out, "stakerOptOutWindowBlocks", operator)
+// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, bool receiveAsTokens) returns()
+func (_DelegationManager *DelegationManagerTransactor) CompleteQueuedWithdrawal(opts *bind.TransactOpts, withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) {
+ return _DelegationManager.contract.Transact(opts, "completeQueuedWithdrawal", withdrawal, tokens, receiveAsTokens)
+}
- if err != nil {
- return *new(*big.Int), err
- }
+// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0xe4cc3f90.
+//
+// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, bool receiveAsTokens) returns()
+func (_DelegationManager *DelegationManagerSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) {
+ return _DelegationManager.Contract.CompleteQueuedWithdrawal(&_DelegationManager.TransactOpts, withdrawal, tokens, receiveAsTokens)
+}
- out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0xe4cc3f90.
+//
+// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, bool receiveAsTokens) returns()
+func (_DelegationManager *DelegationManagerTransactorSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) {
+ return _DelegationManager.Contract.CompleteQueuedWithdrawal(&_DelegationManager.TransactOpts, withdrawal, tokens, receiveAsTokens)
+}
- return out0, err
+// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x9435bb43.
+//
+// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, bool[] receiveAsTokens) returns()
+func (_DelegationManager *DelegationManagerTransactor) CompleteQueuedWithdrawals(opts *bind.TransactOpts, withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) {
+ return _DelegationManager.contract.Transact(opts, "completeQueuedWithdrawals", withdrawals, tokens, receiveAsTokens)
+}
+// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x9435bb43.
+//
+// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, bool[] receiveAsTokens) returns()
+func (_DelegationManager *DelegationManagerSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) {
+ return _DelegationManager.Contract.CompleteQueuedWithdrawals(&_DelegationManager.TransactOpts, withdrawals, tokens, receiveAsTokens)
}
-// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365.
+// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x9435bb43.
//
-// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256)
-func (_DelegationManager *DelegationManagerSession) StakerOptOutWindowBlocks(operator common.Address) (*big.Int, error) {
- return _DelegationManager.Contract.StakerOptOutWindowBlocks(&_DelegationManager.CallOpts, operator)
+// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, bool[] receiveAsTokens) returns()
+func (_DelegationManager *DelegationManagerTransactorSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) {
+ return _DelegationManager.Contract.CompleteQueuedWithdrawals(&_DelegationManager.TransactOpts, withdrawals, tokens, receiveAsTokens)
}
-// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365.
+// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x60a0d1ce.
//
-// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256)
-func (_DelegationManager *DelegationManagerCallerSession) StakerOptOutWindowBlocks(operator common.Address) (*big.Int, error) {
- return _DelegationManager.Contract.StakerOptOutWindowBlocks(&_DelegationManager.CallOpts, operator)
+// Solidity: function decreaseDelegatedShares(address staker, uint256 curDepositShares, uint64 beaconChainSlashingFactorDecrease) returns()
+func (_DelegationManager *DelegationManagerTransactor) DecreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, curDepositShares *big.Int, beaconChainSlashingFactorDecrease uint64) (*types.Transaction, error) {
+ return _DelegationManager.contract.Transact(opts, "decreaseDelegatedShares", staker, curDepositShares, beaconChainSlashingFactorDecrease)
}
-// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
+// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x60a0d1ce.
//
-// Solidity: function strategyManager() view returns(address)
-func (_DelegationManager *DelegationManagerCaller) StrategyManager(opts *bind.CallOpts) (common.Address, error) {
- var out []interface{}
- err := _DelegationManager.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 (_DelegationManager *DelegationManagerSession) StrategyManager() (common.Address, error) {
- return _DelegationManager.Contract.StrategyManager(&_DelegationManager.CallOpts)
-}
-
-// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
-//
-// Solidity: function strategyManager() view returns(address)
-func (_DelegationManager *DelegationManagerCallerSession) StrategyManager() (common.Address, error) {
- return _DelegationManager.Contract.StrategyManager(&_DelegationManager.CallOpts)
-}
-
-// StrategyWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc488375a.
-//
-// Solidity: function strategyWithdrawalDelayBlocks(address ) view returns(uint256)
-func (_DelegationManager *DelegationManagerCaller) StrategyWithdrawalDelayBlocks(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
- var out []interface{}
- err := _DelegationManager.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
-
-}
-
-// StrategyWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc488375a.
-//
-// Solidity: function strategyWithdrawalDelayBlocks(address ) view returns(uint256)
-func (_DelegationManager *DelegationManagerSession) StrategyWithdrawalDelayBlocks(arg0 common.Address) (*big.Int, error) {
- return _DelegationManager.Contract.StrategyWithdrawalDelayBlocks(&_DelegationManager.CallOpts, arg0)
-}
-
-// StrategyWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc488375a.
-//
-// Solidity: function strategyWithdrawalDelayBlocks(address ) view returns(uint256)
-func (_DelegationManager *DelegationManagerCallerSession) StrategyWithdrawalDelayBlocks(arg0 common.Address) (*big.Int, error) {
- return _DelegationManager.Contract.StrategyWithdrawalDelayBlocks(&_DelegationManager.CallOpts, arg0)
-}
-
-// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x60d7faed.
-//
-// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns()
-func (_DelegationManager *DelegationManagerTransactor) CompleteQueuedWithdrawal(opts *bind.TransactOpts, withdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) {
- return _DelegationManager.contract.Transact(opts, "completeQueuedWithdrawal", withdrawal, tokens, middlewareTimesIndex, receiveAsTokens)
-}
-
-// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x60d7faed.
-//
-// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns()
-func (_DelegationManager *DelegationManagerSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) {
- return _DelegationManager.Contract.CompleteQueuedWithdrawal(&_DelegationManager.TransactOpts, withdrawal, tokens, middlewareTimesIndex, receiveAsTokens)
-}
-
-// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x60d7faed.
-//
-// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns()
-func (_DelegationManager *DelegationManagerTransactorSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) {
- return _DelegationManager.Contract.CompleteQueuedWithdrawal(&_DelegationManager.TransactOpts, withdrawal, tokens, middlewareTimesIndex, receiveAsTokens)
-}
-
-// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x33404396.
-//
-// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, uint256[] middlewareTimesIndexes, bool[] receiveAsTokens) returns()
-func (_DelegationManager *DelegationManagerTransactor) CompleteQueuedWithdrawals(opts *bind.TransactOpts, withdrawals []IDelegationManagerWithdrawal, tokens [][]common.Address, middlewareTimesIndexes []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) {
- return _DelegationManager.contract.Transact(opts, "completeQueuedWithdrawals", withdrawals, tokens, middlewareTimesIndexes, receiveAsTokens)
-}
-
-// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x33404396.
-//
-// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, uint256[] middlewareTimesIndexes, bool[] receiveAsTokens) returns()
-func (_DelegationManager *DelegationManagerSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerWithdrawal, tokens [][]common.Address, middlewareTimesIndexes []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) {
- return _DelegationManager.Contract.CompleteQueuedWithdrawals(&_DelegationManager.TransactOpts, withdrawals, tokens, middlewareTimesIndexes, receiveAsTokens)
-}
-
-// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x33404396.
-//
-// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, uint256[] middlewareTimesIndexes, bool[] receiveAsTokens) returns()
-func (_DelegationManager *DelegationManagerTransactorSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerWithdrawal, tokens [][]common.Address, middlewareTimesIndexes []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) {
- return _DelegationManager.Contract.CompleteQueuedWithdrawals(&_DelegationManager.TransactOpts, withdrawals, tokens, middlewareTimesIndexes, receiveAsTokens)
+// Solidity: function decreaseDelegatedShares(address staker, uint256 curDepositShares, uint64 beaconChainSlashingFactorDecrease) returns()
+func (_DelegationManager *DelegationManagerSession) DecreaseDelegatedShares(staker common.Address, curDepositShares *big.Int, beaconChainSlashingFactorDecrease uint64) (*types.Transaction, error) {
+ return _DelegationManager.Contract.DecreaseDelegatedShares(&_DelegationManager.TransactOpts, staker, curDepositShares, beaconChainSlashingFactorDecrease)
}
-// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967.
+// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x60a0d1ce.
//
-// Solidity: function decreaseDelegatedShares(address staker, address strategy, uint256 shares) returns()
-func (_DelegationManager *DelegationManagerTransactor) DecreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _DelegationManager.contract.Transact(opts, "decreaseDelegatedShares", staker, strategy, shares)
-}
-
-// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967.
-//
-// Solidity: function decreaseDelegatedShares(address staker, address strategy, uint256 shares) returns()
-func (_DelegationManager *DelegationManagerSession) DecreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _DelegationManager.Contract.DecreaseDelegatedShares(&_DelegationManager.TransactOpts, staker, strategy, shares)
-}
-
-// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967.
-//
-// Solidity: function decreaseDelegatedShares(address staker, address strategy, uint256 shares) returns()
-func (_DelegationManager *DelegationManagerTransactorSession) DecreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _DelegationManager.Contract.DecreaseDelegatedShares(&_DelegationManager.TransactOpts, staker, strategy, shares)
+// Solidity: function decreaseDelegatedShares(address staker, uint256 curDepositShares, uint64 beaconChainSlashingFactorDecrease) returns()
+func (_DelegationManager *DelegationManagerTransactorSession) DecreaseDelegatedShares(staker common.Address, curDepositShares *big.Int, beaconChainSlashingFactorDecrease uint64) (*types.Transaction, error) {
+ return _DelegationManager.Contract.DecreaseDelegatedShares(&_DelegationManager.TransactOpts, staker, curDepositShares, beaconChainSlashingFactorDecrease)
}
// DelegateTo is a paid mutator transaction binding the contract method 0xeea9064b.
@@ -1372,88 +1331,67 @@ func (_DelegationManager *DelegationManagerTransactorSession) DelegateTo(operato
return _DelegationManager.Contract.DelegateTo(&_DelegationManager.TransactOpts, operator, approverSignatureAndExpiry, approverSalt)
}
-// DelegateToBySignature is a paid mutator transaction binding the contract method 0x7f548071.
-//
-// Solidity: function delegateToBySignature(address staker, address operator, (bytes,uint256) stakerSignatureAndExpiry, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns()
-func (_DelegationManager *DelegationManagerTransactor) DelegateToBySignature(opts *bind.TransactOpts, staker common.Address, operator common.Address, stakerSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) {
- return _DelegationManager.contract.Transact(opts, "delegateToBySignature", staker, operator, stakerSignatureAndExpiry, approverSignatureAndExpiry, approverSalt)
-}
-
-// DelegateToBySignature is a paid mutator transaction binding the contract method 0x7f548071.
-//
-// Solidity: function delegateToBySignature(address staker, address operator, (bytes,uint256) stakerSignatureAndExpiry, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns()
-func (_DelegationManager *DelegationManagerSession) DelegateToBySignature(staker common.Address, operator common.Address, stakerSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) {
- return _DelegationManager.Contract.DelegateToBySignature(&_DelegationManager.TransactOpts, staker, operator, stakerSignatureAndExpiry, approverSignatureAndExpiry, approverSalt)
-}
-
-// DelegateToBySignature is a paid mutator transaction binding the contract method 0x7f548071.
+// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x3c651cf2.
//
-// Solidity: function delegateToBySignature(address staker, address operator, (bytes,uint256) stakerSignatureAndExpiry, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns()
-func (_DelegationManager *DelegationManagerTransactorSession) DelegateToBySignature(staker common.Address, operator common.Address, stakerSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) {
- return _DelegationManager.Contract.DelegateToBySignature(&_DelegationManager.TransactOpts, staker, operator, stakerSignatureAndExpiry, approverSignatureAndExpiry, approverSalt)
+// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 prevDepositShares, uint256 addedShares) returns()
+func (_DelegationManager *DelegationManagerTransactor) IncreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, prevDepositShares *big.Int, addedShares *big.Int) (*types.Transaction, error) {
+ return _DelegationManager.contract.Transact(opts, "increaseDelegatedShares", staker, strategy, prevDepositShares, 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 (_DelegationManager *DelegationManagerTransactor) IncreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _DelegationManager.contract.Transact(opts, "increaseDelegatedShares", staker, strategy, shares)
+// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 prevDepositShares, uint256 addedShares) returns()
+func (_DelegationManager *DelegationManagerSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, prevDepositShares *big.Int, addedShares *big.Int) (*types.Transaction, error) {
+ return _DelegationManager.Contract.IncreaseDelegatedShares(&_DelegationManager.TransactOpts, staker, strategy, prevDepositShares, 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 (_DelegationManager *DelegationManagerSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _DelegationManager.Contract.IncreaseDelegatedShares(&_DelegationManager.TransactOpts, staker, strategy, shares)
+// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 prevDepositShares, uint256 addedShares) returns()
+func (_DelegationManager *DelegationManagerTransactorSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, prevDepositShares *big.Int, addedShares *big.Int) (*types.Transaction, error) {
+ return _DelegationManager.Contract.IncreaseDelegatedShares(&_DelegationManager.TransactOpts, staker, strategy, prevDepositShares, addedShares)
}
-// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae.
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
//
-// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 shares) returns()
-func (_DelegationManager *DelegationManagerTransactorSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _DelegationManager.Contract.IncreaseDelegatedShares(&_DelegationManager.TransactOpts, staker, strategy, shares)
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_DelegationManager *DelegationManagerTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _DelegationManager.contract.Transact(opts, "initialize", initialOwner, initialPausedStatus)
}
-// Initialize is a paid mutator transaction binding the contract method 0x22bf40e4.
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
//
-// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus, uint256 _minWithdrawalDelayBlocks, address[] _strategies, uint256[] _withdrawalDelayBlocks) returns()
-func (_DelegationManager *DelegationManagerTransactor) 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 _DelegationManager.contract.Transact(opts, "initialize", initialOwner, _pauserRegistry, initialPausedStatus, _minWithdrawalDelayBlocks, _strategies, _withdrawalDelayBlocks)
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_DelegationManager *DelegationManagerSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _DelegationManager.Contract.Initialize(&_DelegationManager.TransactOpts, initialOwner, initialPausedStatus)
}
-// Initialize is a paid mutator transaction binding the contract method 0x22bf40e4.
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
//
-// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus, uint256 _minWithdrawalDelayBlocks, address[] _strategies, uint256[] _withdrawalDelayBlocks) returns()
-func (_DelegationManager *DelegationManagerSession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int, _minWithdrawalDelayBlocks *big.Int, _strategies []common.Address, _withdrawalDelayBlocks []*big.Int) (*types.Transaction, error) {
- return _DelegationManager.Contract.Initialize(&_DelegationManager.TransactOpts, initialOwner, _pauserRegistry, initialPausedStatus, _minWithdrawalDelayBlocks, _strategies, _withdrawalDelayBlocks)
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_DelegationManager *DelegationManagerTransactorSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _DelegationManager.Contract.Initialize(&_DelegationManager.TransactOpts, initialOwner, initialPausedStatus)
}
-// Initialize is a paid mutator transaction binding the contract method 0x22bf40e4.
+// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0x54b7c96c.
//
-// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus, uint256 _minWithdrawalDelayBlocks, address[] _strategies, uint256[] _withdrawalDelayBlocks) returns()
-func (_DelegationManager *DelegationManagerTransactorSession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int, _minWithdrawalDelayBlocks *big.Int, _strategies []common.Address, _withdrawalDelayBlocks []*big.Int) (*types.Transaction, error) {
- return _DelegationManager.Contract.Initialize(&_DelegationManager.TransactOpts, initialOwner, _pauserRegistry, initialPausedStatus, _minWithdrawalDelayBlocks, _strategies, _withdrawalDelayBlocks)
+// Solidity: function modifyOperatorDetails(address operator, address newDelegationApprover) returns()
+func (_DelegationManager *DelegationManagerTransactor) ModifyOperatorDetails(opts *bind.TransactOpts, operator common.Address, newDelegationApprover common.Address) (*types.Transaction, error) {
+ return _DelegationManager.contract.Transact(opts, "modifyOperatorDetails", operator, newDelegationApprover)
}
-// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0.
+// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0x54b7c96c.
//
-// Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns()
-func (_DelegationManager *DelegationManagerTransactor) ModifyOperatorDetails(opts *bind.TransactOpts, newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) {
- return _DelegationManager.contract.Transact(opts, "modifyOperatorDetails", newOperatorDetails)
+// Solidity: function modifyOperatorDetails(address operator, address newDelegationApprover) returns()
+func (_DelegationManager *DelegationManagerSession) ModifyOperatorDetails(operator common.Address, newDelegationApprover common.Address) (*types.Transaction, error) {
+ return _DelegationManager.Contract.ModifyOperatorDetails(&_DelegationManager.TransactOpts, operator, newDelegationApprover)
}
-// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0.
+// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0x54b7c96c.
//
-// Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns()
-func (_DelegationManager *DelegationManagerSession) ModifyOperatorDetails(newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) {
- return _DelegationManager.Contract.ModifyOperatorDetails(&_DelegationManager.TransactOpts, newOperatorDetails)
-}
-
-// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0.
-//
-// Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns()
-func (_DelegationManager *DelegationManagerTransactorSession) ModifyOperatorDetails(newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) {
- return _DelegationManager.Contract.ModifyOperatorDetails(&_DelegationManager.TransactOpts, newOperatorDetails)
+// Solidity: function modifyOperatorDetails(address operator, address newDelegationApprover) returns()
+func (_DelegationManager *DelegationManagerTransactorSession) ModifyOperatorDetails(operator common.Address, newDelegationApprover common.Address) (*types.Transaction, error) {
+ return _DelegationManager.Contract.ModifyOperatorDetails(&_DelegationManager.TransactOpts, operator, newDelegationApprover)
}
// Pause is a paid mutator transaction binding the contract method 0x136439dd.
@@ -1500,44 +1438,65 @@ func (_DelegationManager *DelegationManagerTransactorSession) PauseAll() (*types
// QueueWithdrawals is a paid mutator transaction binding the contract method 0x0dd8dd02.
//
-// Solidity: function queueWithdrawals((address[],uint256[],address)[] queuedWithdrawalParams) returns(bytes32[])
-func (_DelegationManager *DelegationManagerTransactor) QueueWithdrawals(opts *bind.TransactOpts, queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) {
- return _DelegationManager.contract.Transact(opts, "queueWithdrawals", queuedWithdrawalParams)
+// Solidity: function queueWithdrawals((address[],uint256[],address)[] params) returns(bytes32[])
+func (_DelegationManager *DelegationManagerTransactor) QueueWithdrawals(opts *bind.TransactOpts, params []IDelegationManagerTypesQueuedWithdrawalParams) (*types.Transaction, error) {
+ return _DelegationManager.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 (_DelegationManager *DelegationManagerSession) QueueWithdrawals(queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) {
- return _DelegationManager.Contract.QueueWithdrawals(&_DelegationManager.TransactOpts, queuedWithdrawalParams)
+// Solidity: function queueWithdrawals((address[],uint256[],address)[] params) returns(bytes32[])
+func (_DelegationManager *DelegationManagerSession) QueueWithdrawals(params []IDelegationManagerTypesQueuedWithdrawalParams) (*types.Transaction, error) {
+ return _DelegationManager.Contract.QueueWithdrawals(&_DelegationManager.TransactOpts, params)
}
// QueueWithdrawals is a paid mutator transaction binding the contract method 0x0dd8dd02.
//
-// Solidity: function queueWithdrawals((address[],uint256[],address)[] queuedWithdrawalParams) returns(bytes32[])
-func (_DelegationManager *DelegationManagerTransactorSession) QueueWithdrawals(queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) {
- return _DelegationManager.Contract.QueueWithdrawals(&_DelegationManager.TransactOpts, queuedWithdrawalParams)
+// Solidity: function queueWithdrawals((address[],uint256[],address)[] params) returns(bytes32[])
+func (_DelegationManager *DelegationManagerTransactorSession) QueueWithdrawals(params []IDelegationManagerTypesQueuedWithdrawalParams) (*types.Transaction, error) {
+ return _DelegationManager.Contract.QueueWithdrawals(&_DelegationManager.TransactOpts, params)
+}
+
+// Redelegate is a paid mutator transaction binding the contract method 0xa33a3433.
+//
+// Solidity: function redelegate(address newOperator, (bytes,uint256) newOperatorApproverSig, bytes32 approverSalt) returns(bytes32[] withdrawalRoots)
+func (_DelegationManager *DelegationManagerTransactor) Redelegate(opts *bind.TransactOpts, newOperator common.Address, newOperatorApproverSig ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) {
+ return _DelegationManager.contract.Transact(opts, "redelegate", newOperator, newOperatorApproverSig, approverSalt)
+}
+
+// Redelegate is a paid mutator transaction binding the contract method 0xa33a3433.
+//
+// Solidity: function redelegate(address newOperator, (bytes,uint256) newOperatorApproverSig, bytes32 approverSalt) returns(bytes32[] withdrawalRoots)
+func (_DelegationManager *DelegationManagerSession) Redelegate(newOperator common.Address, newOperatorApproverSig ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) {
+ return _DelegationManager.Contract.Redelegate(&_DelegationManager.TransactOpts, newOperator, newOperatorApproverSig, approverSalt)
+}
+
+// Redelegate is a paid mutator transaction binding the contract method 0xa33a3433.
+//
+// Solidity: function redelegate(address newOperator, (bytes,uint256) newOperatorApproverSig, bytes32 approverSalt) returns(bytes32[] withdrawalRoots)
+func (_DelegationManager *DelegationManagerTransactorSession) Redelegate(newOperator common.Address, newOperatorApproverSig ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) {
+ return _DelegationManager.Contract.Redelegate(&_DelegationManager.TransactOpts, newOperator, newOperatorApproverSig, approverSalt)
}
-// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59.
+// RegisterAsOperator is a paid mutator transaction binding the contract method 0x2aa6d888.
//
-// Solidity: function registerAsOperator((address,address,uint32) registeringOperatorDetails, string metadataURI) returns()
-func (_DelegationManager *DelegationManagerTransactor) RegisterAsOperator(opts *bind.TransactOpts, registeringOperatorDetails IDelegationManagerOperatorDetails, metadataURI string) (*types.Transaction, error) {
- return _DelegationManager.contract.Transact(opts, "registerAsOperator", registeringOperatorDetails, metadataURI)
+// Solidity: function registerAsOperator(address initDelegationApprover, uint32 allocationDelay, string metadataURI) returns()
+func (_DelegationManager *DelegationManagerTransactor) RegisterAsOperator(opts *bind.TransactOpts, initDelegationApprover common.Address, allocationDelay uint32, metadataURI string) (*types.Transaction, error) {
+ return _DelegationManager.contract.Transact(opts, "registerAsOperator", initDelegationApprover, allocationDelay, metadataURI)
}
-// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59.
+// RegisterAsOperator is a paid mutator transaction binding the contract method 0x2aa6d888.
//
-// Solidity: function registerAsOperator((address,address,uint32) registeringOperatorDetails, string metadataURI) returns()
-func (_DelegationManager *DelegationManagerSession) RegisterAsOperator(registeringOperatorDetails IDelegationManagerOperatorDetails, metadataURI string) (*types.Transaction, error) {
- return _DelegationManager.Contract.RegisterAsOperator(&_DelegationManager.TransactOpts, registeringOperatorDetails, metadataURI)
+// Solidity: function registerAsOperator(address initDelegationApprover, uint32 allocationDelay, string metadataURI) returns()
+func (_DelegationManager *DelegationManagerSession) RegisterAsOperator(initDelegationApprover common.Address, allocationDelay uint32, metadataURI string) (*types.Transaction, error) {
+ return _DelegationManager.Contract.RegisterAsOperator(&_DelegationManager.TransactOpts, initDelegationApprover, allocationDelay, metadataURI)
}
-// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59.
+// RegisterAsOperator is a paid mutator transaction binding the contract method 0x2aa6d888.
//
-// Solidity: function registerAsOperator((address,address,uint32) registeringOperatorDetails, string metadataURI) returns()
-func (_DelegationManager *DelegationManagerTransactorSession) RegisterAsOperator(registeringOperatorDetails IDelegationManagerOperatorDetails, metadataURI string) (*types.Transaction, error) {
- return _DelegationManager.Contract.RegisterAsOperator(&_DelegationManager.TransactOpts, registeringOperatorDetails, metadataURI)
+// Solidity: function registerAsOperator(address initDelegationApprover, uint32 allocationDelay, string metadataURI) returns()
+func (_DelegationManager *DelegationManagerTransactorSession) RegisterAsOperator(initDelegationApprover common.Address, allocationDelay uint32, metadataURI string) (*types.Transaction, error) {
+ return _DelegationManager.Contract.RegisterAsOperator(&_DelegationManager.TransactOpts, initDelegationApprover, allocationDelay, metadataURI)
}
// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
@@ -1561,67 +1520,25 @@ func (_DelegationManager *DelegationManagerTransactorSession) RenounceOwnership(
return _DelegationManager.Contract.RenounceOwnership(&_DelegationManager.TransactOpts)
}
-// SetMinWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x635bbd10.
-//
-// Solidity: function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) returns()
-func (_DelegationManager *DelegationManagerTransactor) SetMinWithdrawalDelayBlocks(opts *bind.TransactOpts, newMinWithdrawalDelayBlocks *big.Int) (*types.Transaction, error) {
- return _DelegationManager.contract.Transact(opts, "setMinWithdrawalDelayBlocks", newMinWithdrawalDelayBlocks)
-}
-
-// SetMinWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x635bbd10.
-//
-// Solidity: function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) returns()
-func (_DelegationManager *DelegationManagerSession) SetMinWithdrawalDelayBlocks(newMinWithdrawalDelayBlocks *big.Int) (*types.Transaction, error) {
- return _DelegationManager.Contract.SetMinWithdrawalDelayBlocks(&_DelegationManager.TransactOpts, newMinWithdrawalDelayBlocks)
-}
-
-// SetMinWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x635bbd10.
-//
-// Solidity: function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) returns()
-func (_DelegationManager *DelegationManagerTransactorSession) SetMinWithdrawalDelayBlocks(newMinWithdrawalDelayBlocks *big.Int) (*types.Transaction, error) {
- return _DelegationManager.Contract.SetMinWithdrawalDelayBlocks(&_DelegationManager.TransactOpts, newMinWithdrawalDelayBlocks)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_DelegationManager *DelegationManagerTransactor) SetPauserRegistry(opts *bind.TransactOpts, newPauserRegistry common.Address) (*types.Transaction, error) {
- return _DelegationManager.contract.Transact(opts, "setPauserRegistry", newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_DelegationManager *DelegationManagerSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _DelegationManager.Contract.SetPauserRegistry(&_DelegationManager.TransactOpts, newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_DelegationManager *DelegationManagerTransactorSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _DelegationManager.Contract.SetPauserRegistry(&_DelegationManager.TransactOpts, newPauserRegistry)
-}
-
-// SetStrategyWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x1522bf02.
+// SlashOperatorShares is a paid mutator transaction binding the contract method 0x601bb36f.
//
-// Solidity: function setStrategyWithdrawalDelayBlocks(address[] strategies, uint256[] withdrawalDelayBlocks) returns()
-func (_DelegationManager *DelegationManagerTransactor) SetStrategyWithdrawalDelayBlocks(opts *bind.TransactOpts, strategies []common.Address, withdrawalDelayBlocks []*big.Int) (*types.Transaction, error) {
- return _DelegationManager.contract.Transact(opts, "setStrategyWithdrawalDelayBlocks", strategies, withdrawalDelayBlocks)
+// Solidity: function slashOperatorShares(address operator, address strategy, uint64 prevMaxMagnitude, uint64 newMaxMagnitude) returns()
+func (_DelegationManager *DelegationManagerTransactor) SlashOperatorShares(opts *bind.TransactOpts, operator common.Address, strategy common.Address, prevMaxMagnitude uint64, newMaxMagnitude uint64) (*types.Transaction, error) {
+ return _DelegationManager.contract.Transact(opts, "slashOperatorShares", operator, strategy, prevMaxMagnitude, newMaxMagnitude)
}
-// SetStrategyWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x1522bf02.
+// SlashOperatorShares is a paid mutator transaction binding the contract method 0x601bb36f.
//
-// Solidity: function setStrategyWithdrawalDelayBlocks(address[] strategies, uint256[] withdrawalDelayBlocks) returns()
-func (_DelegationManager *DelegationManagerSession) SetStrategyWithdrawalDelayBlocks(strategies []common.Address, withdrawalDelayBlocks []*big.Int) (*types.Transaction, error) {
- return _DelegationManager.Contract.SetStrategyWithdrawalDelayBlocks(&_DelegationManager.TransactOpts, strategies, withdrawalDelayBlocks)
+// Solidity: function slashOperatorShares(address operator, address strategy, uint64 prevMaxMagnitude, uint64 newMaxMagnitude) returns()
+func (_DelegationManager *DelegationManagerSession) SlashOperatorShares(operator common.Address, strategy common.Address, prevMaxMagnitude uint64, newMaxMagnitude uint64) (*types.Transaction, error) {
+ return _DelegationManager.Contract.SlashOperatorShares(&_DelegationManager.TransactOpts, operator, strategy, prevMaxMagnitude, newMaxMagnitude)
}
-// SetStrategyWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x1522bf02.
+// SlashOperatorShares is a paid mutator transaction binding the contract method 0x601bb36f.
//
-// Solidity: function setStrategyWithdrawalDelayBlocks(address[] strategies, uint256[] withdrawalDelayBlocks) returns()
-func (_DelegationManager *DelegationManagerTransactorSession) SetStrategyWithdrawalDelayBlocks(strategies []common.Address, withdrawalDelayBlocks []*big.Int) (*types.Transaction, error) {
- return _DelegationManager.Contract.SetStrategyWithdrawalDelayBlocks(&_DelegationManager.TransactOpts, strategies, withdrawalDelayBlocks)
+// Solidity: function slashOperatorShares(address operator, address strategy, uint64 prevMaxMagnitude, uint64 newMaxMagnitude) returns()
+func (_DelegationManager *DelegationManagerTransactorSession) SlashOperatorShares(operator common.Address, strategy common.Address, prevMaxMagnitude uint64, newMaxMagnitude uint64) (*types.Transaction, error) {
+ return _DelegationManager.Contract.SlashOperatorShares(&_DelegationManager.TransactOpts, operator, strategy, prevMaxMagnitude, newMaxMagnitude)
}
// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
@@ -1687,30 +1604,30 @@ func (_DelegationManager *DelegationManagerTransactorSession) Unpause(newPausedS
return _DelegationManager.Contract.Unpause(&_DelegationManager.TransactOpts, newPausedStatus)
}
-// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8.
+// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x78296ec5.
//
-// Solidity: function updateOperatorMetadataURI(string metadataURI) returns()
-func (_DelegationManager *DelegationManagerTransactor) UpdateOperatorMetadataURI(opts *bind.TransactOpts, metadataURI string) (*types.Transaction, error) {
- return _DelegationManager.contract.Transact(opts, "updateOperatorMetadataURI", metadataURI)
+// Solidity: function updateOperatorMetadataURI(address operator, string metadataURI) returns()
+func (_DelegationManager *DelegationManagerTransactor) UpdateOperatorMetadataURI(opts *bind.TransactOpts, operator common.Address, metadataURI string) (*types.Transaction, error) {
+ return _DelegationManager.contract.Transact(opts, "updateOperatorMetadataURI", operator, metadataURI)
}
-// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8.
+// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x78296ec5.
//
-// Solidity: function updateOperatorMetadataURI(string metadataURI) returns()
-func (_DelegationManager *DelegationManagerSession) UpdateOperatorMetadataURI(metadataURI string) (*types.Transaction, error) {
- return _DelegationManager.Contract.UpdateOperatorMetadataURI(&_DelegationManager.TransactOpts, metadataURI)
+// Solidity: function updateOperatorMetadataURI(address operator, string metadataURI) returns()
+func (_DelegationManager *DelegationManagerSession) UpdateOperatorMetadataURI(operator common.Address, metadataURI string) (*types.Transaction, error) {
+ return _DelegationManager.Contract.UpdateOperatorMetadataURI(&_DelegationManager.TransactOpts, operator, metadataURI)
}
-// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8.
+// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x78296ec5.
//
-// Solidity: function updateOperatorMetadataURI(string metadataURI) returns()
-func (_DelegationManager *DelegationManagerTransactorSession) UpdateOperatorMetadataURI(metadataURI string) (*types.Transaction, error) {
- return _DelegationManager.Contract.UpdateOperatorMetadataURI(&_DelegationManager.TransactOpts, metadataURI)
+// Solidity: function updateOperatorMetadataURI(address operator, string metadataURI) returns()
+func (_DelegationManager *DelegationManagerTransactorSession) UpdateOperatorMetadataURI(operator common.Address, metadataURI string) (*types.Transaction, error) {
+ return _DelegationManager.Contract.UpdateOperatorMetadataURI(&_DelegationManager.TransactOpts, operator, metadataURI)
}
-// DelegationManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the DelegationManager contract.
-type DelegationManagerInitializedIterator struct {
- Event *DelegationManagerInitialized // Event containing the contract specifics and raw log
+// DelegationManagerDelegationApproverUpdatedIterator is returned from FilterDelegationApproverUpdated and is used to iterate over the raw logs and unpacked data for DelegationApproverUpdated events raised by the DelegationManager contract.
+type DelegationManagerDelegationApproverUpdatedIterator struct {
+ Event *DelegationManagerDelegationApproverUpdated // 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
@@ -1724,7 +1641,7 @@ type DelegationManagerInitializedIterator 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 *DelegationManagerInitializedIterator) Next() bool {
+func (it *DelegationManagerDelegationApproverUpdatedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -1733,7 +1650,7 @@ func (it *DelegationManagerInitializedIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerInitialized)
+ it.Event = new(DelegationManagerDelegationApproverUpdated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1748,7 +1665,7 @@ func (it *DelegationManagerInitializedIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerInitialized)
+ it.Event = new(DelegationManagerDelegationApproverUpdated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1764,41 +1681,52 @@ func (it *DelegationManagerInitializedIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *DelegationManagerInitializedIterator) Error() error {
+func (it *DelegationManagerDelegationApproverUpdatedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *DelegationManagerInitializedIterator) Close() error {
+func (it *DelegationManagerDelegationApproverUpdatedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// DelegationManagerInitialized represents a Initialized event raised by the DelegationManager contract.
-type DelegationManagerInitialized struct {
- Version uint8
- Raw types.Log // Blockchain specific contextual infos
+// DelegationManagerDelegationApproverUpdated represents a DelegationApproverUpdated event raised by the DelegationManager contract.
+type DelegationManagerDelegationApproverUpdated struct {
+ Operator common.Address
+ NewDelegationApprover common.Address
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498.
+// FilterDelegationApproverUpdated is a free log retrieval operation binding the contract event 0x773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6.
//
-// Solidity: event Initialized(uint8 version)
-func (_DelegationManager *DelegationManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*DelegationManagerInitializedIterator, error) {
+// Solidity: event DelegationApproverUpdated(address indexed operator, address newDelegationApprover)
+func (_DelegationManager *DelegationManagerFilterer) FilterDelegationApproverUpdated(opts *bind.FilterOpts, operator []common.Address) (*DelegationManagerDelegationApproverUpdatedIterator, error) {
- logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "Initialized")
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
+
+ logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "DelegationApproverUpdated", operatorRule)
if err != nil {
return nil, err
}
- return &DelegationManagerInitializedIterator{contract: _DelegationManager.contract, event: "Initialized", logs: logs, sub: sub}, nil
+ return &DelegationManagerDelegationApproverUpdatedIterator{contract: _DelegationManager.contract, event: "DelegationApproverUpdated", logs: logs, sub: sub}, nil
}
-// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498.
+// WatchDelegationApproverUpdated is a free log subscription operation binding the contract event 0x773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6.
//
-// Solidity: event Initialized(uint8 version)
-func (_DelegationManager *DelegationManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *DelegationManagerInitialized) (event.Subscription, error) {
+// Solidity: event DelegationApproverUpdated(address indexed operator, address newDelegationApprover)
+func (_DelegationManager *DelegationManagerFilterer) WatchDelegationApproverUpdated(opts *bind.WatchOpts, sink chan<- *DelegationManagerDelegationApproverUpdated, operator []common.Address) (event.Subscription, error) {
- logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "Initialized")
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
+
+ logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "DelegationApproverUpdated", operatorRule)
if err != nil {
return nil, err
}
@@ -1808,8 +1736,8 @@ func (_DelegationManager *DelegationManagerFilterer) WatchInitialized(opts *bind
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(DelegationManagerInitialized)
- if err := _DelegationManager.contract.UnpackLog(event, "Initialized", log); err != nil {
+ event := new(DelegationManagerDelegationApproverUpdated)
+ if err := _DelegationManager.contract.UnpackLog(event, "DelegationApproverUpdated", log); err != nil {
return err
}
event.Raw = log
@@ -1830,21 +1758,21 @@ func (_DelegationManager *DelegationManagerFilterer) WatchInitialized(opts *bind
}), nil
}
-// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498.
+// ParseDelegationApproverUpdated is a log parse operation binding the contract event 0x773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6.
//
-// Solidity: event Initialized(uint8 version)
-func (_DelegationManager *DelegationManagerFilterer) ParseInitialized(log types.Log) (*DelegationManagerInitialized, error) {
- event := new(DelegationManagerInitialized)
- if err := _DelegationManager.contract.UnpackLog(event, "Initialized", log); err != nil {
+// Solidity: event DelegationApproverUpdated(address indexed operator, address newDelegationApprover)
+func (_DelegationManager *DelegationManagerFilterer) ParseDelegationApproverUpdated(log types.Log) (*DelegationManagerDelegationApproverUpdated, error) {
+ event := new(DelegationManagerDelegationApproverUpdated)
+ if err := _DelegationManager.contract.UnpackLog(event, "DelegationApproverUpdated", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// DelegationManagerMinWithdrawalDelayBlocksSetIterator is returned from FilterMinWithdrawalDelayBlocksSet and is used to iterate over the raw logs and unpacked data for MinWithdrawalDelayBlocksSet events raised by the DelegationManager contract.
-type DelegationManagerMinWithdrawalDelayBlocksSetIterator struct {
- Event *DelegationManagerMinWithdrawalDelayBlocksSet // Event containing the contract specifics and raw log
+// DelegationManagerDepositScalingFactorUpdatedIterator is returned from FilterDepositScalingFactorUpdated and is used to iterate over the raw logs and unpacked data for DepositScalingFactorUpdated events raised by the DelegationManager contract.
+type DelegationManagerDepositScalingFactorUpdatedIterator struct {
+ Event *DelegationManagerDepositScalingFactorUpdated // 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
@@ -1858,7 +1786,7 @@ type DelegationManagerMinWithdrawalDelayBlocksSetIterator 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 *DelegationManagerMinWithdrawalDelayBlocksSetIterator) Next() bool {
+func (it *DelegationManagerDepositScalingFactorUpdatedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -1867,7 +1795,7 @@ func (it *DelegationManagerMinWithdrawalDelayBlocksSetIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerMinWithdrawalDelayBlocksSet)
+ it.Event = new(DelegationManagerDepositScalingFactorUpdated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1882,7 +1810,7 @@ func (it *DelegationManagerMinWithdrawalDelayBlocksSetIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerMinWithdrawalDelayBlocksSet)
+ it.Event = new(DelegationManagerDepositScalingFactorUpdated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1898,42 +1826,43 @@ func (it *DelegationManagerMinWithdrawalDelayBlocksSetIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *DelegationManagerMinWithdrawalDelayBlocksSetIterator) Error() error {
+func (it *DelegationManagerDepositScalingFactorUpdatedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *DelegationManagerMinWithdrawalDelayBlocksSetIterator) Close() error {
+func (it *DelegationManagerDepositScalingFactorUpdatedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// DelegationManagerMinWithdrawalDelayBlocksSet represents a MinWithdrawalDelayBlocksSet event raised by the DelegationManager contract.
-type DelegationManagerMinWithdrawalDelayBlocksSet struct {
- PreviousValue *big.Int
- NewValue *big.Int
- Raw types.Log // Blockchain specific contextual infos
+// DelegationManagerDepositScalingFactorUpdated represents a DepositScalingFactorUpdated event raised by the DelegationManager contract.
+type DelegationManagerDepositScalingFactorUpdated 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 (_DelegationManager *DelegationManagerFilterer) FilterMinWithdrawalDelayBlocksSet(opts *bind.FilterOpts) (*DelegationManagerMinWithdrawalDelayBlocksSetIterator, error) {
+// Solidity: event DepositScalingFactorUpdated(address staker, address strategy, uint256 newDepositScalingFactor)
+func (_DelegationManager *DelegationManagerFilterer) FilterDepositScalingFactorUpdated(opts *bind.FilterOpts) (*DelegationManagerDepositScalingFactorUpdatedIterator, error) {
- logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "MinWithdrawalDelayBlocksSet")
+ logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "DepositScalingFactorUpdated")
if err != nil {
return nil, err
}
- return &DelegationManagerMinWithdrawalDelayBlocksSetIterator{contract: _DelegationManager.contract, event: "MinWithdrawalDelayBlocksSet", logs: logs, sub: sub}, nil
+ return &DelegationManagerDepositScalingFactorUpdatedIterator{contract: _DelegationManager.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 (_DelegationManager *DelegationManagerFilterer) WatchMinWithdrawalDelayBlocksSet(opts *bind.WatchOpts, sink chan<- *DelegationManagerMinWithdrawalDelayBlocksSet) (event.Subscription, error) {
+// Solidity: event DepositScalingFactorUpdated(address staker, address strategy, uint256 newDepositScalingFactor)
+func (_DelegationManager *DelegationManagerFilterer) WatchDepositScalingFactorUpdated(opts *bind.WatchOpts, sink chan<- *DelegationManagerDepositScalingFactorUpdated) (event.Subscription, error) {
- logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "MinWithdrawalDelayBlocksSet")
+ logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "DepositScalingFactorUpdated")
if err != nil {
return nil, err
}
@@ -1943,8 +1872,8 @@ func (_DelegationManager *DelegationManagerFilterer) WatchMinWithdrawalDelayBloc
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(DelegationManagerMinWithdrawalDelayBlocksSet)
- if err := _DelegationManager.contract.UnpackLog(event, "MinWithdrawalDelayBlocksSet", log); err != nil {
+ event := new(DelegationManagerDepositScalingFactorUpdated)
+ if err := _DelegationManager.contract.UnpackLog(event, "DepositScalingFactorUpdated", log); err != nil {
return err
}
event.Raw = log
@@ -1965,21 +1894,21 @@ func (_DelegationManager *DelegationManagerFilterer) WatchMinWithdrawalDelayBloc
}), 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 (_DelegationManager *DelegationManagerFilterer) ParseMinWithdrawalDelayBlocksSet(log types.Log) (*DelegationManagerMinWithdrawalDelayBlocksSet, error) {
- event := new(DelegationManagerMinWithdrawalDelayBlocksSet)
- if err := _DelegationManager.contract.UnpackLog(event, "MinWithdrawalDelayBlocksSet", log); err != nil {
+// Solidity: event DepositScalingFactorUpdated(address staker, address strategy, uint256 newDepositScalingFactor)
+func (_DelegationManager *DelegationManagerFilterer) ParseDepositScalingFactorUpdated(log types.Log) (*DelegationManagerDepositScalingFactorUpdated, error) {
+ event := new(DelegationManagerDepositScalingFactorUpdated)
+ if err := _DelegationManager.contract.UnpackLog(event, "DepositScalingFactorUpdated", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// DelegationManagerOperatorDetailsModifiedIterator is returned from FilterOperatorDetailsModified and is used to iterate over the raw logs and unpacked data for OperatorDetailsModified events raised by the DelegationManager contract.
-type DelegationManagerOperatorDetailsModifiedIterator struct {
- Event *DelegationManagerOperatorDetailsModified // Event containing the contract specifics and raw log
+// DelegationManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the DelegationManager contract.
+type DelegationManagerInitializedIterator struct {
+ Event *DelegationManagerInitialized // 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
@@ -1993,7 +1922,7 @@ type DelegationManagerOperatorDetailsModifiedIterator 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 *DelegationManagerOperatorDetailsModifiedIterator) Next() bool {
+func (it *DelegationManagerInitializedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -2002,7 +1931,7 @@ func (it *DelegationManagerOperatorDetailsModifiedIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerOperatorDetailsModified)
+ it.Event = new(DelegationManagerInitialized)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2017,7 +1946,7 @@ func (it *DelegationManagerOperatorDetailsModifiedIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerOperatorDetailsModified)
+ it.Event = new(DelegationManagerInitialized)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2033,52 +1962,41 @@ func (it *DelegationManagerOperatorDetailsModifiedIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *DelegationManagerOperatorDetailsModifiedIterator) Error() error {
+func (it *DelegationManagerInitializedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *DelegationManagerOperatorDetailsModifiedIterator) Close() error {
+func (it *DelegationManagerInitializedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// DelegationManagerOperatorDetailsModified represents a OperatorDetailsModified event raised by the DelegationManager contract.
-type DelegationManagerOperatorDetailsModified struct {
- Operator common.Address
- NewOperatorDetails IDelegationManagerOperatorDetails
- Raw types.Log // Blockchain specific contextual infos
+// DelegationManagerInitialized represents a Initialized event raised by the DelegationManager contract.
+type DelegationManagerInitialized 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 (_DelegationManager *DelegationManagerFilterer) FilterOperatorDetailsModified(opts *bind.FilterOpts, operator []common.Address) (*DelegationManagerOperatorDetailsModifiedIterator, error) {
-
- var operatorRule []interface{}
- for _, operatorItem := range operator {
- operatorRule = append(operatorRule, operatorItem)
- }
+// Solidity: event Initialized(uint8 version)
+func (_DelegationManager *DelegationManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*DelegationManagerInitializedIterator, error) {
- logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "OperatorDetailsModified", operatorRule)
+ logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "Initialized")
if err != nil {
return nil, err
}
- return &DelegationManagerOperatorDetailsModifiedIterator{contract: _DelegationManager.contract, event: "OperatorDetailsModified", logs: logs, sub: sub}, nil
+ return &DelegationManagerInitializedIterator{contract: _DelegationManager.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 (_DelegationManager *DelegationManagerFilterer) WatchOperatorDetailsModified(opts *bind.WatchOpts, sink chan<- *DelegationManagerOperatorDetailsModified, operator []common.Address) (event.Subscription, error) {
-
- var operatorRule []interface{}
- for _, operatorItem := range operator {
- operatorRule = append(operatorRule, operatorItem)
- }
+// Solidity: event Initialized(uint8 version)
+func (_DelegationManager *DelegationManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *DelegationManagerInitialized) (event.Subscription, error) {
- logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "OperatorDetailsModified", operatorRule)
+ logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "Initialized")
if err != nil {
return nil, err
}
@@ -2088,8 +2006,8 @@ func (_DelegationManager *DelegationManagerFilterer) WatchOperatorDetailsModifie
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(DelegationManagerOperatorDetailsModified)
- if err := _DelegationManager.contract.UnpackLog(event, "OperatorDetailsModified", log); err != nil {
+ event := new(DelegationManagerInitialized)
+ if err := _DelegationManager.contract.UnpackLog(event, "Initialized", log); err != nil {
return err
}
event.Raw = log
@@ -2110,12 +2028,12 @@ func (_DelegationManager *DelegationManagerFilterer) WatchOperatorDetailsModifie
}), nil
}
-// ParseOperatorDetailsModified is a log parse operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac.
+// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498.
//
-// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails)
-func (_DelegationManager *DelegationManagerFilterer) ParseOperatorDetailsModified(log types.Log) (*DelegationManagerOperatorDetailsModified, error) {
- event := new(DelegationManagerOperatorDetailsModified)
- if err := _DelegationManager.contract.UnpackLog(event, "OperatorDetailsModified", log); err != nil {
+// Solidity: event Initialized(uint8 version)
+func (_DelegationManager *DelegationManagerFilterer) ParseInitialized(log types.Log) (*DelegationManagerInitialized, error) {
+ event := new(DelegationManagerInitialized)
+ if err := _DelegationManager.contract.UnpackLog(event, "Initialized", log); err != nil {
return nil, err
}
event.Raw = log
@@ -2336,14 +2254,14 @@ func (it *DelegationManagerOperatorRegisteredIterator) Close() error {
// DelegationManagerOperatorRegistered represents a OperatorRegistered event raised by the DelegationManager contract.
type DelegationManagerOperatorRegistered struct {
- Operator common.Address
- OperatorDetails IDelegationManagerOperatorDetails
- Raw types.Log // Blockchain specific contextual infos
+ Operator common.Address
+ DelegationApprover common.Address
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2.
+// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0xa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c1.
//
-// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails)
+// Solidity: event OperatorRegistered(address indexed operator, address delegationApprover)
func (_DelegationManager *DelegationManagerFilterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address) (*DelegationManagerOperatorRegisteredIterator, error) {
var operatorRule []interface{}
@@ -2358,9 +2276,9 @@ func (_DelegationManager *DelegationManagerFilterer) FilterOperatorRegistered(op
return &DelegationManagerOperatorRegisteredIterator{contract: _DelegationManager.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil
}
-// WatchOperatorRegistered is a free log subscription operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2.
+// WatchOperatorRegistered is a free log subscription operation binding the contract event 0xa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c1.
//
-// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails)
+// Solidity: event OperatorRegistered(address indexed operator, address delegationApprover)
func (_DelegationManager *DelegationManagerFilterer) WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *DelegationManagerOperatorRegistered, operator []common.Address) (event.Subscription, error) {
var operatorRule []interface{}
@@ -2400,9 +2318,9 @@ func (_DelegationManager *DelegationManagerFilterer) WatchOperatorRegistered(opt
}), nil
}
-// ParseOperatorRegistered is a log parse operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2.
+// ParseOperatorRegistered is a log parse operation binding the contract event 0xa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c1.
//
-// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails)
+// Solidity: event OperatorRegistered(address indexed operator, address delegationApprover)
func (_DelegationManager *DelegationManagerFilterer) ParseOperatorRegistered(log types.Log) (*DelegationManagerOperatorRegistered, error) {
event := new(DelegationManagerOperatorRegistered)
if err := _DelegationManager.contract.UnpackLog(event, "OperatorRegistered", log); err != nil {
@@ -3004,9 +2922,9 @@ func (_DelegationManager *DelegationManagerFilterer) ParsePaused(log types.Log)
return event, nil
}
-// DelegationManagerPauserRegistrySetIterator is returned from FilterPauserRegistrySet and is used to iterate over the raw logs and unpacked data for PauserRegistrySet events raised by the DelegationManager contract.
-type DelegationManagerPauserRegistrySetIterator struct {
- Event *DelegationManagerPauserRegistrySet // Event containing the contract specifics and raw log
+// DelegationManagerSlashingWithdrawalCompletedIterator is returned from FilterSlashingWithdrawalCompleted and is used to iterate over the raw logs and unpacked data for SlashingWithdrawalCompleted events raised by the DelegationManager contract.
+type DelegationManagerSlashingWithdrawalCompletedIterator struct {
+ Event *DelegationManagerSlashingWithdrawalCompleted // 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
@@ -3020,7 +2938,7 @@ type DelegationManagerPauserRegistrySetIterator 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 *DelegationManagerPauserRegistrySetIterator) Next() bool {
+func (it *DelegationManagerSlashingWithdrawalCompletedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -3029,7 +2947,7 @@ func (it *DelegationManagerPauserRegistrySetIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerPauserRegistrySet)
+ it.Event = new(DelegationManagerSlashingWithdrawalCompleted)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -3044,7 +2962,7 @@ func (it *DelegationManagerPauserRegistrySetIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerPauserRegistrySet)
+ it.Event = new(DelegationManagerSlashingWithdrawalCompleted)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -3060,42 +2978,41 @@ func (it *DelegationManagerPauserRegistrySetIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *DelegationManagerPauserRegistrySetIterator) Error() error {
+func (it *DelegationManagerSlashingWithdrawalCompletedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *DelegationManagerPauserRegistrySetIterator) Close() error {
+func (it *DelegationManagerSlashingWithdrawalCompletedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// DelegationManagerPauserRegistrySet represents a PauserRegistrySet event raised by the DelegationManager contract.
-type DelegationManagerPauserRegistrySet struct {
- PauserRegistry common.Address
- NewPauserRegistry common.Address
- Raw types.Log // Blockchain specific contextual infos
+// DelegationManagerSlashingWithdrawalCompleted represents a SlashingWithdrawalCompleted event raised by the DelegationManager contract.
+type DelegationManagerSlashingWithdrawalCompleted struct {
+ WithdrawalRoot [32]byte
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterPauserRegistrySet is a free log retrieval operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
+// FilterSlashingWithdrawalCompleted is a free log retrieval operation binding the contract event 0x1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a00.
//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_DelegationManager *DelegationManagerFilterer) FilterPauserRegistrySet(opts *bind.FilterOpts) (*DelegationManagerPauserRegistrySetIterator, error) {
+// Solidity: event SlashingWithdrawalCompleted(bytes32 withdrawalRoot)
+func (_DelegationManager *DelegationManagerFilterer) FilterSlashingWithdrawalCompleted(opts *bind.FilterOpts) (*DelegationManagerSlashingWithdrawalCompletedIterator, error) {
- logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "PauserRegistrySet")
+ logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "SlashingWithdrawalCompleted")
if err != nil {
return nil, err
}
- return &DelegationManagerPauserRegistrySetIterator{contract: _DelegationManager.contract, event: "PauserRegistrySet", logs: logs, sub: sub}, nil
+ return &DelegationManagerSlashingWithdrawalCompletedIterator{contract: _DelegationManager.contract, event: "SlashingWithdrawalCompleted", logs: logs, sub: sub}, nil
}
-// WatchPauserRegistrySet is a free log subscription operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
+// WatchSlashingWithdrawalCompleted is a free log subscription operation binding the contract event 0x1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a00.
//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_DelegationManager *DelegationManagerFilterer) WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *DelegationManagerPauserRegistrySet) (event.Subscription, error) {
+// Solidity: event SlashingWithdrawalCompleted(bytes32 withdrawalRoot)
+func (_DelegationManager *DelegationManagerFilterer) WatchSlashingWithdrawalCompleted(opts *bind.WatchOpts, sink chan<- *DelegationManagerSlashingWithdrawalCompleted) (event.Subscription, error) {
- logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "PauserRegistrySet")
+ logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "SlashingWithdrawalCompleted")
if err != nil {
return nil, err
}
@@ -3105,8 +3022,8 @@ func (_DelegationManager *DelegationManagerFilterer) WatchPauserRegistrySet(opts
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(DelegationManagerPauserRegistrySet)
- if err := _DelegationManager.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
+ event := new(DelegationManagerSlashingWithdrawalCompleted)
+ if err := _DelegationManager.contract.UnpackLog(event, "SlashingWithdrawalCompleted", log); err != nil {
return err
}
event.Raw = log
@@ -3127,21 +3044,21 @@ func (_DelegationManager *DelegationManagerFilterer) WatchPauserRegistrySet(opts
}), nil
}
-// ParsePauserRegistrySet is a log parse operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
+// ParseSlashingWithdrawalCompleted is a log parse operation binding the contract event 0x1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a00.
//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_DelegationManager *DelegationManagerFilterer) ParsePauserRegistrySet(log types.Log) (*DelegationManagerPauserRegistrySet, error) {
- event := new(DelegationManagerPauserRegistrySet)
- if err := _DelegationManager.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
+// Solidity: event SlashingWithdrawalCompleted(bytes32 withdrawalRoot)
+func (_DelegationManager *DelegationManagerFilterer) ParseSlashingWithdrawalCompleted(log types.Log) (*DelegationManagerSlashingWithdrawalCompleted, error) {
+ event := new(DelegationManagerSlashingWithdrawalCompleted)
+ if err := _DelegationManager.contract.UnpackLog(event, "SlashingWithdrawalCompleted", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// DelegationManagerStakerDelegatedIterator is returned from FilterStakerDelegated and is used to iterate over the raw logs and unpacked data for StakerDelegated events raised by the DelegationManager contract.
-type DelegationManagerStakerDelegatedIterator struct {
- Event *DelegationManagerStakerDelegated // Event containing the contract specifics and raw log
+// DelegationManagerSlashingWithdrawalQueuedIterator is returned from FilterSlashingWithdrawalQueued and is used to iterate over the raw logs and unpacked data for SlashingWithdrawalQueued events raised by the DelegationManager contract.
+type DelegationManagerSlashingWithdrawalQueuedIterator struct {
+ Event *DelegationManagerSlashingWithdrawalQueued // 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
@@ -3155,7 +3072,7 @@ type DelegationManagerStakerDelegatedIterator 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 *DelegationManagerStakerDelegatedIterator) Next() bool {
+func (it *DelegationManagerSlashingWithdrawalQueuedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -3164,7 +3081,7 @@ func (it *DelegationManagerStakerDelegatedIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStakerDelegated)
+ it.Event = new(DelegationManagerSlashingWithdrawalQueued)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -3179,7 +3096,7 @@ func (it *DelegationManagerStakerDelegatedIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStakerDelegated)
+ it.Event = new(DelegationManagerSlashingWithdrawalQueued)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -3195,60 +3112,43 @@ func (it *DelegationManagerStakerDelegatedIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *DelegationManagerStakerDelegatedIterator) Error() error {
+func (it *DelegationManagerSlashingWithdrawalQueuedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *DelegationManagerStakerDelegatedIterator) Close() error {
+func (it *DelegationManagerSlashingWithdrawalQueuedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// DelegationManagerStakerDelegated represents a StakerDelegated event raised by the DelegationManager contract.
-type DelegationManagerStakerDelegated struct {
- Staker common.Address
- Operator common.Address
- Raw types.Log // Blockchain specific contextual infos
+// DelegationManagerSlashingWithdrawalQueued represents a SlashingWithdrawalQueued event raised by the DelegationManager contract.
+type DelegationManagerSlashingWithdrawalQueued struct {
+ WithdrawalRoot [32]byte
+ Withdrawal IDelegationManagerTypesWithdrawal
+ SharesToWithdraw []*big.Int
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterStakerDelegated is a free log retrieval operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304.
+// FilterSlashingWithdrawalQueued is a free log retrieval operation binding the contract event 0x26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30.
//
-// Solidity: event StakerDelegated(address indexed staker, address indexed operator)
-func (_DelegationManager *DelegationManagerFilterer) FilterStakerDelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*DelegationManagerStakerDelegatedIterator, 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, uint256[] sharesToWithdraw)
+func (_DelegationManager *DelegationManagerFilterer) FilterSlashingWithdrawalQueued(opts *bind.FilterOpts) (*DelegationManagerSlashingWithdrawalQueuedIterator, error) {
- logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "StakerDelegated", stakerRule, operatorRule)
+ logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "SlashingWithdrawalQueued")
if err != nil {
return nil, err
}
- return &DelegationManagerStakerDelegatedIterator{contract: _DelegationManager.contract, event: "StakerDelegated", logs: logs, sub: sub}, nil
+ return &DelegationManagerSlashingWithdrawalQueuedIterator{contract: _DelegationManager.contract, event: "SlashingWithdrawalQueued", logs: logs, sub: sub}, nil
}
-// WatchStakerDelegated is a free log subscription operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304.
+// WatchSlashingWithdrawalQueued is a free log subscription operation binding the contract event 0x26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30.
//
-// Solidity: event StakerDelegated(address indexed staker, address indexed operator)
-func (_DelegationManager *DelegationManagerFilterer) WatchStakerDelegated(opts *bind.WatchOpts, sink chan<- *DelegationManagerStakerDelegated, 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, uint256[] sharesToWithdraw)
+func (_DelegationManager *DelegationManagerFilterer) WatchSlashingWithdrawalQueued(opts *bind.WatchOpts, sink chan<- *DelegationManagerSlashingWithdrawalQueued) (event.Subscription, error) {
- logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "StakerDelegated", stakerRule, operatorRule)
+ logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "SlashingWithdrawalQueued")
if err != nil {
return nil, err
}
@@ -3258,8 +3158,8 @@ func (_DelegationManager *DelegationManagerFilterer) WatchStakerDelegated(opts *
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(DelegationManagerStakerDelegated)
- if err := _DelegationManager.contract.UnpackLog(event, "StakerDelegated", log); err != nil {
+ event := new(DelegationManagerSlashingWithdrawalQueued)
+ if err := _DelegationManager.contract.UnpackLog(event, "SlashingWithdrawalQueued", log); err != nil {
return err
}
event.Raw = log
@@ -3280,21 +3180,21 @@ func (_DelegationManager *DelegationManagerFilterer) WatchStakerDelegated(opts *
}), nil
}
-// ParseStakerDelegated is a log parse operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304.
+// ParseSlashingWithdrawalQueued is a log parse operation binding the contract event 0x26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30.
//
-// Solidity: event StakerDelegated(address indexed staker, address indexed operator)
-func (_DelegationManager *DelegationManagerFilterer) ParseStakerDelegated(log types.Log) (*DelegationManagerStakerDelegated, error) {
- event := new(DelegationManagerStakerDelegated)
- if err := _DelegationManager.contract.UnpackLog(event, "StakerDelegated", log); err != nil {
+// Solidity: event SlashingWithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal, uint256[] sharesToWithdraw)
+func (_DelegationManager *DelegationManagerFilterer) ParseSlashingWithdrawalQueued(log types.Log) (*DelegationManagerSlashingWithdrawalQueued, error) {
+ event := new(DelegationManagerSlashingWithdrawalQueued)
+ if err := _DelegationManager.contract.UnpackLog(event, "SlashingWithdrawalQueued", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// DelegationManagerStakerForceUndelegatedIterator is returned from FilterStakerForceUndelegated and is used to iterate over the raw logs and unpacked data for StakerForceUndelegated events raised by the DelegationManager contract.
-type DelegationManagerStakerForceUndelegatedIterator struct {
- Event *DelegationManagerStakerForceUndelegated // Event containing the contract specifics and raw log
+// DelegationManagerStakerDelegatedIterator is returned from FilterStakerDelegated and is used to iterate over the raw logs and unpacked data for StakerDelegated events raised by the DelegationManager contract.
+type DelegationManagerStakerDelegatedIterator struct {
+ Event *DelegationManagerStakerDelegated // 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
@@ -3308,7 +3208,7 @@ type DelegationManagerStakerForceUndelegatedIterator 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 *DelegationManagerStakerForceUndelegatedIterator) Next() bool {
+func (it *DelegationManagerStakerDelegatedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -3317,7 +3217,7 @@ func (it *DelegationManagerStakerForceUndelegatedIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStakerForceUndelegated)
+ it.Event = new(DelegationManagerStakerDelegated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -3332,7 +3232,7 @@ func (it *DelegationManagerStakerForceUndelegatedIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStakerForceUndelegated)
+ it.Event = new(DelegationManagerStakerDelegated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -3348,28 +3248,28 @@ func (it *DelegationManagerStakerForceUndelegatedIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *DelegationManagerStakerForceUndelegatedIterator) Error() error {
+func (it *DelegationManagerStakerDelegatedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *DelegationManagerStakerForceUndelegatedIterator) Close() error {
+func (it *DelegationManagerStakerDelegatedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// DelegationManagerStakerForceUndelegated represents a StakerForceUndelegated event raised by the DelegationManager contract.
-type DelegationManagerStakerForceUndelegated struct {
- Staker common.Address
+// DelegationManagerStakerDelegated represents a StakerDelegated event raised by the DelegationManager contract.
+type DelegationManagerStakerDelegated struct {
+ Staker common.Address
Operator common.Address
Raw types.Log // Blockchain specific contextual infos
}
-// FilterStakerForceUndelegated is a free log retrieval operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a.
+// FilterStakerDelegated is a free log retrieval operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304.
//
-// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator)
-func (_DelegationManager *DelegationManagerFilterer) FilterStakerForceUndelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*DelegationManagerStakerForceUndelegatedIterator, error) {
+// Solidity: event StakerDelegated(address indexed staker, address indexed operator)
+func (_DelegationManager *DelegationManagerFilterer) FilterStakerDelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*DelegationManagerStakerDelegatedIterator, error) {
var stakerRule []interface{}
for _, stakerItem := range staker {
@@ -3380,17 +3280,17 @@ func (_DelegationManager *DelegationManagerFilterer) FilterStakerForceUndelegate
operatorRule = append(operatorRule, operatorItem)
}
- logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule)
+ logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "StakerDelegated", stakerRule, operatorRule)
if err != nil {
return nil, err
}
- return &DelegationManagerStakerForceUndelegatedIterator{contract: _DelegationManager.contract, event: "StakerForceUndelegated", logs: logs, sub: sub}, nil
+ return &DelegationManagerStakerDelegatedIterator{contract: _DelegationManager.contract, event: "StakerDelegated", logs: logs, sub: sub}, nil
}
-// WatchStakerForceUndelegated is a free log subscription operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a.
+// WatchStakerDelegated is a free log subscription operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304.
//
-// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator)
-func (_DelegationManager *DelegationManagerFilterer) WatchStakerForceUndelegated(opts *bind.WatchOpts, sink chan<- *DelegationManagerStakerForceUndelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) {
+// Solidity: event StakerDelegated(address indexed staker, address indexed operator)
+func (_DelegationManager *DelegationManagerFilterer) WatchStakerDelegated(opts *bind.WatchOpts, sink chan<- *DelegationManagerStakerDelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) {
var stakerRule []interface{}
for _, stakerItem := range staker {
@@ -3401,7 +3301,7 @@ func (_DelegationManager *DelegationManagerFilterer) WatchStakerForceUndelegated
operatorRule = append(operatorRule, operatorItem)
}
- logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule)
+ logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "StakerDelegated", stakerRule, operatorRule)
if err != nil {
return nil, err
}
@@ -3411,8 +3311,8 @@ func (_DelegationManager *DelegationManagerFilterer) WatchStakerForceUndelegated
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(DelegationManagerStakerForceUndelegated)
- if err := _DelegationManager.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil {
+ event := new(DelegationManagerStakerDelegated)
+ if err := _DelegationManager.contract.UnpackLog(event, "StakerDelegated", log); err != nil {
return err
}
event.Raw = log
@@ -3433,21 +3333,21 @@ func (_DelegationManager *DelegationManagerFilterer) WatchStakerForceUndelegated
}), nil
}
-// ParseStakerForceUndelegated is a log parse operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a.
+// ParseStakerDelegated is a log parse operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304.
//
-// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator)
-func (_DelegationManager *DelegationManagerFilterer) ParseStakerForceUndelegated(log types.Log) (*DelegationManagerStakerForceUndelegated, error) {
- event := new(DelegationManagerStakerForceUndelegated)
- if err := _DelegationManager.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil {
+// Solidity: event StakerDelegated(address indexed staker, address indexed operator)
+func (_DelegationManager *DelegationManagerFilterer) ParseStakerDelegated(log types.Log) (*DelegationManagerStakerDelegated, error) {
+ event := new(DelegationManagerStakerDelegated)
+ if err := _DelegationManager.contract.UnpackLog(event, "StakerDelegated", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// DelegationManagerStakerUndelegatedIterator is returned from FilterStakerUndelegated and is used to iterate over the raw logs and unpacked data for StakerUndelegated events raised by the DelegationManager contract.
-type DelegationManagerStakerUndelegatedIterator struct {
- Event *DelegationManagerStakerUndelegated // Event containing the contract specifics and raw log
+// DelegationManagerStakerForceUndelegatedIterator is returned from FilterStakerForceUndelegated and is used to iterate over the raw logs and unpacked data for StakerForceUndelegated events raised by the DelegationManager contract.
+type DelegationManagerStakerForceUndelegatedIterator struct {
+ Event *DelegationManagerStakerForceUndelegated // 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
@@ -3461,7 +3361,7 @@ type DelegationManagerStakerUndelegatedIterator 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 *DelegationManagerStakerUndelegatedIterator) Next() bool {
+func (it *DelegationManagerStakerForceUndelegatedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -3470,7 +3370,7 @@ func (it *DelegationManagerStakerUndelegatedIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStakerUndelegated)
+ it.Event = new(DelegationManagerStakerForceUndelegated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -3485,7 +3385,7 @@ func (it *DelegationManagerStakerUndelegatedIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStakerUndelegated)
+ it.Event = new(DelegationManagerStakerForceUndelegated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -3501,28 +3401,28 @@ func (it *DelegationManagerStakerUndelegatedIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *DelegationManagerStakerUndelegatedIterator) Error() error {
+func (it *DelegationManagerStakerForceUndelegatedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *DelegationManagerStakerUndelegatedIterator) Close() error {
+func (it *DelegationManagerStakerForceUndelegatedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// DelegationManagerStakerUndelegated represents a StakerUndelegated event raised by the DelegationManager contract.
-type DelegationManagerStakerUndelegated struct {
+// DelegationManagerStakerForceUndelegated represents a StakerForceUndelegated event raised by the DelegationManager contract.
+type DelegationManagerStakerForceUndelegated 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.
+// FilterStakerForceUndelegated is a free log retrieval operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a.
//
-// Solidity: event StakerUndelegated(address indexed staker, address indexed operator)
-func (_DelegationManager *DelegationManagerFilterer) FilterStakerUndelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*DelegationManagerStakerUndelegatedIterator, error) {
+// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator)
+func (_DelegationManager *DelegationManagerFilterer) FilterStakerForceUndelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*DelegationManagerStakerForceUndelegatedIterator, error) {
var stakerRule []interface{}
for _, stakerItem := range staker {
@@ -3533,17 +3433,17 @@ func (_DelegationManager *DelegationManagerFilterer) FilterStakerUndelegated(opt
operatorRule = append(operatorRule, operatorItem)
}
- logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "StakerUndelegated", stakerRule, operatorRule)
+ logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule)
if err != nil {
return nil, err
}
- return &DelegationManagerStakerUndelegatedIterator{contract: _DelegationManager.contract, event: "StakerUndelegated", logs: logs, sub: sub}, nil
+ return &DelegationManagerStakerForceUndelegatedIterator{contract: _DelegationManager.contract, event: "StakerForceUndelegated", logs: logs, sub: sub}, nil
}
-// WatchStakerUndelegated is a free log subscription operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676.
+// WatchStakerForceUndelegated is a free log subscription operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a.
//
-// Solidity: event StakerUndelegated(address indexed staker, address indexed operator)
-func (_DelegationManager *DelegationManagerFilterer) WatchStakerUndelegated(opts *bind.WatchOpts, sink chan<- *DelegationManagerStakerUndelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) {
+// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator)
+func (_DelegationManager *DelegationManagerFilterer) WatchStakerForceUndelegated(opts *bind.WatchOpts, sink chan<- *DelegationManagerStakerForceUndelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) {
var stakerRule []interface{}
for _, stakerItem := range staker {
@@ -3554,7 +3454,7 @@ func (_DelegationManager *DelegationManagerFilterer) WatchStakerUndelegated(opts
operatorRule = append(operatorRule, operatorItem)
}
- logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "StakerUndelegated", stakerRule, operatorRule)
+ logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule)
if err != nil {
return nil, err
}
@@ -3564,8 +3464,8 @@ func (_DelegationManager *DelegationManagerFilterer) WatchStakerUndelegated(opts
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(DelegationManagerStakerUndelegated)
- if err := _DelegationManager.contract.UnpackLog(event, "StakerUndelegated", log); err != nil {
+ event := new(DelegationManagerStakerForceUndelegated)
+ if err := _DelegationManager.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil {
return err
}
event.Raw = log
@@ -3586,21 +3486,21 @@ func (_DelegationManager *DelegationManagerFilterer) WatchStakerUndelegated(opts
}), nil
}
-// ParseStakerUndelegated is a log parse operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676.
+// ParseStakerForceUndelegated is a log parse operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a.
//
-// Solidity: event StakerUndelegated(address indexed staker, address indexed operator)
-func (_DelegationManager *DelegationManagerFilterer) ParseStakerUndelegated(log types.Log) (*DelegationManagerStakerUndelegated, error) {
- event := new(DelegationManagerStakerUndelegated)
- if err := _DelegationManager.contract.UnpackLog(event, "StakerUndelegated", log); err != nil {
+// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator)
+func (_DelegationManager *DelegationManagerFilterer) ParseStakerForceUndelegated(log types.Log) (*DelegationManagerStakerForceUndelegated, error) {
+ event := new(DelegationManagerStakerForceUndelegated)
+ if err := _DelegationManager.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// DelegationManagerStrategyWithdrawalDelayBlocksSetIterator is returned from FilterStrategyWithdrawalDelayBlocksSet and is used to iterate over the raw logs and unpacked data for StrategyWithdrawalDelayBlocksSet events raised by the DelegationManager contract.
-type DelegationManagerStrategyWithdrawalDelayBlocksSetIterator struct {
- Event *DelegationManagerStrategyWithdrawalDelayBlocksSet // Event containing the contract specifics and raw log
+// DelegationManagerStakerUndelegatedIterator is returned from FilterStakerUndelegated and is used to iterate over the raw logs and unpacked data for StakerUndelegated events raised by the DelegationManager contract.
+type DelegationManagerStakerUndelegatedIterator struct {
+ Event *DelegationManagerStakerUndelegated // 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
@@ -3614,7 +3514,7 @@ type DelegationManagerStrategyWithdrawalDelayBlocksSetIterator 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 *DelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Next() bool {
+func (it *DelegationManagerStakerUndelegatedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -3623,7 +3523,7 @@ func (it *DelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Next() bool
if it.done {
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStrategyWithdrawalDelayBlocksSet)
+ it.Event = new(DelegationManagerStakerUndelegated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -3638,7 +3538,7 @@ func (it *DelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Next() bool
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStrategyWithdrawalDelayBlocksSet)
+ it.Event = new(DelegationManagerStakerUndelegated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -3654,43 +3554,60 @@ func (it *DelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Next() bool
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *DelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Error() error {
+func (it *DelegationManagerStakerUndelegatedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *DelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Close() error {
+func (it *DelegationManagerStakerUndelegatedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// DelegationManagerStrategyWithdrawalDelayBlocksSet represents a StrategyWithdrawalDelayBlocksSet event raised by the DelegationManager contract.
-type DelegationManagerStrategyWithdrawalDelayBlocksSet struct {
- Strategy common.Address
- PreviousValue *big.Int
- NewValue *big.Int
- Raw types.Log // Blockchain specific contextual infos
+// DelegationManagerStakerUndelegated represents a StakerUndelegated event raised by the DelegationManager contract.
+type DelegationManagerStakerUndelegated 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.
+// FilterStakerUndelegated is a free log retrieval operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676.
//
-// Solidity: event StrategyWithdrawalDelayBlocksSet(address strategy, uint256 previousValue, uint256 newValue)
-func (_DelegationManager *DelegationManagerFilterer) FilterStrategyWithdrawalDelayBlocksSet(opts *bind.FilterOpts) (*DelegationManagerStrategyWithdrawalDelayBlocksSetIterator, error) {
+// Solidity: event StakerUndelegated(address indexed staker, address indexed operator)
+func (_DelegationManager *DelegationManagerFilterer) FilterStakerUndelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*DelegationManagerStakerUndelegatedIterator, 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 := _DelegationManager.contract.FilterLogs(opts, "StrategyWithdrawalDelayBlocksSet")
+ logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "StakerUndelegated", stakerRule, operatorRule)
if err != nil {
return nil, err
}
- return &DelegationManagerStrategyWithdrawalDelayBlocksSetIterator{contract: _DelegationManager.contract, event: "StrategyWithdrawalDelayBlocksSet", logs: logs, sub: sub}, nil
+ return &DelegationManagerStakerUndelegatedIterator{contract: _DelegationManager.contract, event: "StakerUndelegated", logs: logs, sub: sub}, nil
}
-// WatchStrategyWithdrawalDelayBlocksSet is a free log subscription operation binding the contract event 0x0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d.
+// WatchStakerUndelegated is a free log subscription operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676.
//
-// Solidity: event StrategyWithdrawalDelayBlocksSet(address strategy, uint256 previousValue, uint256 newValue)
-func (_DelegationManager *DelegationManagerFilterer) WatchStrategyWithdrawalDelayBlocksSet(opts *bind.WatchOpts, sink chan<- *DelegationManagerStrategyWithdrawalDelayBlocksSet) (event.Subscription, error) {
+// Solidity: event StakerUndelegated(address indexed staker, address indexed operator)
+func (_DelegationManager *DelegationManagerFilterer) WatchStakerUndelegated(opts *bind.WatchOpts, sink chan<- *DelegationManagerStakerUndelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) {
+
+ var stakerRule []interface{}
+ for _, stakerItem := range staker {
+ stakerRule = append(stakerRule, stakerItem)
+ }
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
- logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "StrategyWithdrawalDelayBlocksSet")
+ logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "StakerUndelegated", stakerRule, operatorRule)
if err != nil {
return nil, err
}
@@ -3700,8 +3617,8 @@ func (_DelegationManager *DelegationManagerFilterer) WatchStrategyWithdrawalDela
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(DelegationManagerStrategyWithdrawalDelayBlocksSet)
- if err := _DelegationManager.contract.UnpackLog(event, "StrategyWithdrawalDelayBlocksSet", log); err != nil {
+ event := new(DelegationManagerStakerUndelegated)
+ if err := _DelegationManager.contract.UnpackLog(event, "StakerUndelegated", log); err != nil {
return err
}
event.Raw = log
@@ -3722,12 +3639,12 @@ func (_DelegationManager *DelegationManagerFilterer) WatchStrategyWithdrawalDela
}), nil
}
-// ParseStrategyWithdrawalDelayBlocksSet is a log parse operation binding the contract event 0x0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d.
+// ParseStakerUndelegated is a log parse operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676.
//
-// Solidity: event StrategyWithdrawalDelayBlocksSet(address strategy, uint256 previousValue, uint256 newValue)
-func (_DelegationManager *DelegationManagerFilterer) ParseStrategyWithdrawalDelayBlocksSet(log types.Log) (*DelegationManagerStrategyWithdrawalDelayBlocksSet, error) {
- event := new(DelegationManagerStrategyWithdrawalDelayBlocksSet)
- if err := _DelegationManager.contract.UnpackLog(event, "StrategyWithdrawalDelayBlocksSet", log); err != nil {
+// Solidity: event StakerUndelegated(address indexed staker, address indexed operator)
+func (_DelegationManager *DelegationManagerFilterer) ParseStakerUndelegated(log types.Log) (*DelegationManagerStakerUndelegated, error) {
+ event := new(DelegationManagerStakerUndelegated)
+ if err := _DelegationManager.contract.UnpackLog(event, "StakerUndelegated", log); err != nil {
return nil, err
}
event.Raw = log
@@ -3878,272 +3795,3 @@ func (_DelegationManager *DelegationManagerFilterer) ParseUnpaused(log types.Log
event.Raw = log
return event, nil
}
-
-// DelegationManagerWithdrawalCompletedIterator is returned from FilterWithdrawalCompleted and is used to iterate over the raw logs and unpacked data for WithdrawalCompleted events raised by the DelegationManager contract.
-type DelegationManagerWithdrawalCompletedIterator struct {
- Event *DelegationManagerWithdrawalCompleted // 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 *DelegationManagerWithdrawalCompletedIterator) 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(DelegationManagerWithdrawalCompleted)
- 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(DelegationManagerWithdrawalCompleted)
- 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 *DelegationManagerWithdrawalCompletedIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *DelegationManagerWithdrawalCompletedIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// DelegationManagerWithdrawalCompleted represents a WithdrawalCompleted event raised by the DelegationManager contract.
-type DelegationManagerWithdrawalCompleted struct {
- WithdrawalRoot [32]byte
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterWithdrawalCompleted is a free log retrieval operation binding the contract event 0xc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d.
-//
-// Solidity: event WithdrawalCompleted(bytes32 withdrawalRoot)
-func (_DelegationManager *DelegationManagerFilterer) FilterWithdrawalCompleted(opts *bind.FilterOpts) (*DelegationManagerWithdrawalCompletedIterator, error) {
-
- logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "WithdrawalCompleted")
- if err != nil {
- return nil, err
- }
- return &DelegationManagerWithdrawalCompletedIterator{contract: _DelegationManager.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 (_DelegationManager *DelegationManagerFilterer) WatchWithdrawalCompleted(opts *bind.WatchOpts, sink chan<- *DelegationManagerWithdrawalCompleted) (event.Subscription, error) {
-
- logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "WithdrawalCompleted")
- if err != nil {
- return nil, err
- }
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(DelegationManagerWithdrawalCompleted)
- if err := _DelegationManager.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 (_DelegationManager *DelegationManagerFilterer) ParseWithdrawalCompleted(log types.Log) (*DelegationManagerWithdrawalCompleted, error) {
- event := new(DelegationManagerWithdrawalCompleted)
- if err := _DelegationManager.contract.UnpackLog(event, "WithdrawalCompleted", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
-// DelegationManagerWithdrawalQueuedIterator is returned from FilterWithdrawalQueued and is used to iterate over the raw logs and unpacked data for WithdrawalQueued events raised by the DelegationManager contract.
-type DelegationManagerWithdrawalQueuedIterator struct {
- Event *DelegationManagerWithdrawalQueued // 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 *DelegationManagerWithdrawalQueuedIterator) 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(DelegationManagerWithdrawalQueued)
- 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(DelegationManagerWithdrawalQueued)
- 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 *DelegationManagerWithdrawalQueuedIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *DelegationManagerWithdrawalQueuedIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// DelegationManagerWithdrawalQueued represents a WithdrawalQueued event raised by the DelegationManager contract.
-type DelegationManagerWithdrawalQueued struct {
- WithdrawalRoot [32]byte
- Withdrawal IDelegationManagerWithdrawal
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterWithdrawalQueued is a free log retrieval operation binding the contract event 0x9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9.
-//
-// Solidity: event WithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal)
-func (_DelegationManager *DelegationManagerFilterer) FilterWithdrawalQueued(opts *bind.FilterOpts) (*DelegationManagerWithdrawalQueuedIterator, error) {
-
- logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "WithdrawalQueued")
- if err != nil {
- return nil, err
- }
- return &DelegationManagerWithdrawalQueuedIterator{contract: _DelegationManager.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 (_DelegationManager *DelegationManagerFilterer) WatchWithdrawalQueued(opts *bind.WatchOpts, sink chan<- *DelegationManagerWithdrawalQueued) (event.Subscription, error) {
-
- logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "WithdrawalQueued")
- if err != nil {
- return nil, err
- }
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(DelegationManagerWithdrawalQueued)
- if err := _DelegationManager.contract.UnpackLog(event, "WithdrawalQueued", log); err != nil {
- return err
- }
- event.Raw = log
-
- select {
- case sink <- event:
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- }
- }), nil
-}
-
-// ParseWithdrawalQueued is a log parse operation binding the contract event 0x9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9.
-//
-// Solidity: event WithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal)
-func (_DelegationManager *DelegationManagerFilterer) ParseWithdrawalQueued(log types.Log) (*DelegationManagerWithdrawalQueued, error) {
- event := new(DelegationManagerWithdrawalQueued)
- if err := _DelegationManager.contract.UnpackLog(event, "WithdrawalQueued", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
diff --git a/pkg/bindings/DelegationManagerStorage/binding.go b/pkg/bindings/DelegationManagerStorage/binding.go
index 9629208ebf..82f7a6fdf4 100644
--- a/pkg/bindings/DelegationManagerStorage/binding.go
+++ b/pkg/bindings/DelegationManagerStorage/binding.go
@@ -29,29 +29,22 @@ 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
+// IDelegationManagerTypesQueuedWithdrawalParams is an auto generated low-level Go binding around an user-defined struct.
+type IDelegationManagerTypesQueuedWithdrawalParams struct {
+ Strategies []common.Address
+ DepositShares []*big.Int
+ DeprecatedWithdrawer common.Address
}
-// IDelegationManagerQueuedWithdrawalParams is an auto generated low-level Go binding around an user-defined struct.
-type IDelegationManagerQueuedWithdrawalParams struct {
- Strategies []common.Address
- Shares []*big.Int
- Withdrawer common.Address
-}
-
-// IDelegationManagerWithdrawal is an auto generated low-level Go binding around an user-defined struct.
-type IDelegationManagerWithdrawal struct {
- Staker common.Address
- DelegatedTo common.Address
- Withdrawer common.Address
- Nonce *big.Int
- StartBlock uint32
- Strategies []common.Address
- Shares []*big.Int
+// 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
+ StartBlock uint32
+ Strategies []common.Address
+ ScaledShares []*big.Int
}
// ISignatureUtilsSignatureWithExpiry is an auto generated low-level Go binding around an user-defined struct.
@@ -62,7 +55,7 @@ type ISignatureUtilsSignatureWithExpiry struct {
// DelegationManagerStorageMetaData contains all meta data concerning the DelegationManagerStorage contract.
var DelegationManagerStorageMetaData = &bind.MetaData{
- ABI: "[{\"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_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\":\"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\":\"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\":\"setMinWithdrawalDelayBlocks\",\"inputs\":[{\"name\":\"newMinWithdrawalDelayBlocks\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"undelegate\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorMetadataURI\",\"inputs\":[{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"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\":\"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}]",
+ ABI: "[{\"type\":\"function\",\"name\":\"DELEGATION_APPROVAL_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\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateDelegationApprovalDigestHash\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_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\":\"calculateWithdrawalRoot\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawal\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal[]\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[][]\",\"internalType\":\"contractIERC20[][]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"convertToDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"withdrawableShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"cumulativeWithdrawalsQueued\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"totalQueued\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"curDepositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"beaconChainSlashingFactorDecrease\",\"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\":\"delegatedTo\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationApprover\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationApproverSaltIsSpent\",\"inputs\":[{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"spent\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositScalingFactor\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDepositedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorsShares\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQueuedWithdrawal\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQueuedWithdrawalRoots\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQueuedWithdrawals\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal[]\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"shares\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSlashableSharesInQueue\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWithdrawableShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"withdrawableShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"depositShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"prevDepositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addedShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isDelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minWithdrawalDelayBlocks\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyOperatorDetails\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newDelegationApprover\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingWithdrawals\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"pending\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"queueWithdrawals\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.QueuedWithdrawalParams[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"depositShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"__deprecated_withdrawer\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"redelegate\",\"inputs\":[{\"name\":\"newOperator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newOperatorApproverSig\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"withdrawalRoots\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerAsOperator\",\"inputs\":[{\"name\":\"initDelegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allocationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slashOperatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"prevMaxMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"newMaxMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"undelegate\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"withdrawalRoots\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorMetadataURI\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"DelegationApproverUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newDelegationApprover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DepositScalingFactorUpdated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"newDepositScalingFactor\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorMetadataURIUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRegistered\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"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\":\"SlashingWithdrawalCompleted\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SlashingWithdrawalQueued\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"withdrawal\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManagerTypes.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"sharesToWithdraw\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerDelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerForceUndelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerUndelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ActivelyDelegated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerCannotUndelegate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FullySlashed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotActivelyDelegated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyAllocationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyManagerOrEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorsCannotUndelegate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SaltSpent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalDelayNotElapsed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalNotQueued\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawerNotCaller\",\"inputs\":[]}]",
}
// DelegationManagerStorageABI is the input ABI used to generate the binding from.
@@ -242,97 +235,35 @@ func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) DELEGATI
return _DelegationManagerStorage.Contract.DELEGATIONAPPROVALTYPEHASH(&_DelegationManagerStorage.CallOpts)
}
-// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70.
-//
-// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) DOMAINTYPEHASH(opts *bind.CallOpts) ([32]byte, error) {
- var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "DOMAIN_TYPEHASH")
-
- if err != nil {
- return *new([32]byte), err
- }
-
- out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
-
- return out0, err
-
-}
-
-// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70.
-//
-// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) DOMAINTYPEHASH() ([32]byte, error) {
- return _DelegationManagerStorage.Contract.DOMAINTYPEHASH(&_DelegationManagerStorage.CallOpts)
-}
-
-// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70.
-//
-// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) DOMAINTYPEHASH() ([32]byte, error) {
- return _DelegationManagerStorage.Contract.DOMAINTYPEHASH(&_DelegationManagerStorage.CallOpts)
-}
-
-// MAXWITHDRAWALDELAYBLOCKS is a free data retrieval call binding the contract method 0xca661c04.
-//
-// Solidity: function MAX_WITHDRAWAL_DELAY_BLOCKS() view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) MAXWITHDRAWALDELAYBLOCKS(opts *bind.CallOpts) (*big.Int, error) {
- var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "MAX_WITHDRAWAL_DELAY_BLOCKS")
-
- if err != nil {
- return *new(*big.Int), err
- }
-
- out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
-
- return out0, err
-
-}
-
-// MAXWITHDRAWALDELAYBLOCKS is a free data retrieval call binding the contract method 0xca661c04.
-//
-// Solidity: function MAX_WITHDRAWAL_DELAY_BLOCKS() view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) MAXWITHDRAWALDELAYBLOCKS() (*big.Int, error) {
- return _DelegationManagerStorage.Contract.MAXWITHDRAWALDELAYBLOCKS(&_DelegationManagerStorage.CallOpts)
-}
-
-// MAXWITHDRAWALDELAYBLOCKS is a free data retrieval call binding the contract method 0xca661c04.
-//
-// Solidity: function MAX_WITHDRAWAL_DELAY_BLOCKS() view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) MAXWITHDRAWALDELAYBLOCKS() (*big.Int, error) {
- return _DelegationManagerStorage.Contract.MAXWITHDRAWALDELAYBLOCKS(&_DelegationManagerStorage.CallOpts)
-}
-
-// STAKERDELEGATIONTYPEHASH is a free data retrieval call binding the contract method 0x43377382.
+// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7.
//
-// Solidity: function STAKER_DELEGATION_TYPEHASH() view returns(bytes32)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) STAKERDELEGATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) {
+// Solidity: function allocationManager() view returns(address)
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) AllocationManager(opts *bind.CallOpts) (common.Address, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "STAKER_DELEGATION_TYPEHASH")
+ err := _DelegationManagerStorage.contract.Call(opts, &out, "allocationManager")
if err != nil {
- return *new([32]byte), err
+ return *new(common.Address), err
}
- out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
+ out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
return out0, err
}
-// STAKERDELEGATIONTYPEHASH is a free data retrieval call binding the contract method 0x43377382.
+// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7.
//
-// Solidity: function STAKER_DELEGATION_TYPEHASH() view returns(bytes32)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) STAKERDELEGATIONTYPEHASH() ([32]byte, error) {
- return _DelegationManagerStorage.Contract.STAKERDELEGATIONTYPEHASH(&_DelegationManagerStorage.CallOpts)
+// Solidity: function allocationManager() view returns(address)
+func (_DelegationManagerStorage *DelegationManagerStorageSession) AllocationManager() (common.Address, error) {
+ return _DelegationManagerStorage.Contract.AllocationManager(&_DelegationManagerStorage.CallOpts)
}
-// STAKERDELEGATIONTYPEHASH is a free data retrieval call binding the contract method 0x43377382.
+// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7.
//
-// Solidity: function STAKER_DELEGATION_TYPEHASH() view returns(bytes32)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) STAKERDELEGATIONTYPEHASH() ([32]byte, error) {
- return _DelegationManagerStorage.Contract.STAKERDELEGATIONTYPEHASH(&_DelegationManagerStorage.CallOpts)
+// Solidity: function allocationManager() view returns(address)
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) AllocationManager() (common.Address, error) {
+ return _DelegationManagerStorage.Contract.AllocationManager(&_DelegationManagerStorage.CallOpts)
}
// BeaconChainETHStrategy is a free data retrieval call binding the contract method 0x9104c319.
@@ -366,37 +297,6 @@ func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) BeaconCh
return _DelegationManagerStorage.Contract.BeaconChainETHStrategy(&_DelegationManagerStorage.CallOpts)
}
-// CalculateCurrentStakerDelegationDigestHash is a free data retrieval call binding the contract method 0x1bbce091.
-//
-// Solidity: function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) view returns(bytes32)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) CalculateCurrentStakerDelegationDigestHash(opts *bind.CallOpts, staker common.Address, operator common.Address, expiry *big.Int) ([32]byte, error) {
- var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "calculateCurrentStakerDelegationDigestHash", staker, operator, expiry)
-
- if err != nil {
- return *new([32]byte), err
- }
-
- out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
-
- return out0, err
-
-}
-
-// CalculateCurrentStakerDelegationDigestHash is a free data retrieval call binding the contract method 0x1bbce091.
-//
-// Solidity: function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) view returns(bytes32)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) CalculateCurrentStakerDelegationDigestHash(staker common.Address, operator common.Address, expiry *big.Int) ([32]byte, error) {
- return _DelegationManagerStorage.Contract.CalculateCurrentStakerDelegationDigestHash(&_DelegationManagerStorage.CallOpts, staker, operator, expiry)
-}
-
-// CalculateCurrentStakerDelegationDigestHash is a free data retrieval call binding the contract method 0x1bbce091.
-//
-// Solidity: function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) view returns(bytes32)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) CalculateCurrentStakerDelegationDigestHash(staker common.Address, operator common.Address, expiry *big.Int) ([32]byte, error) {
- return _DelegationManagerStorage.Contract.CalculateCurrentStakerDelegationDigestHash(&_DelegationManagerStorage.CallOpts, staker, operator, expiry)
-}
-
// CalculateDelegationApprovalDigestHash is a free data retrieval call binding the contract method 0x0b9f487a.
//
// Solidity: function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) view returns(bytes32)
@@ -428,12 +328,12 @@ func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) Calculat
return _DelegationManagerStorage.Contract.CalculateDelegationApprovalDigestHash(&_DelegationManagerStorage.CallOpts, staker, operator, _delegationApprover, approverSalt, expiry)
}
-// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111.
+// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da.
//
-// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) CalculateStakerDelegationDigestHash(opts *bind.CallOpts, staker common.Address, _stakerNonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) {
+// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32)
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) CalculateWithdrawalRoot(opts *bind.CallOpts, withdrawal IDelegationManagerTypesWithdrawal) ([32]byte, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "calculateStakerDelegationDigestHash", staker, _stakerNonce, operator, expiry)
+ err := _DelegationManagerStorage.contract.Call(opts, &out, "calculateWithdrawalRoot", withdrawal)
if err != nil {
return *new([32]byte), err
@@ -445,57 +345,57 @@ func (_DelegationManagerStorage *DelegationManagerStorageCaller) CalculateStaker
}
-// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111.
+// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da.
//
-// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) CalculateStakerDelegationDigestHash(staker common.Address, _stakerNonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) {
- return _DelegationManagerStorage.Contract.CalculateStakerDelegationDigestHash(&_DelegationManagerStorage.CallOpts, staker, _stakerNonce, operator, expiry)
+// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32)
+func (_DelegationManagerStorage *DelegationManagerStorageSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerTypesWithdrawal) ([32]byte, error) {
+ return _DelegationManagerStorage.Contract.CalculateWithdrawalRoot(&_DelegationManagerStorage.CallOpts, withdrawal)
}
-// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111.
+// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da.
//
-// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) CalculateStakerDelegationDigestHash(staker common.Address, _stakerNonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) {
- return _DelegationManagerStorage.Contract.CalculateStakerDelegationDigestHash(&_DelegationManagerStorage.CallOpts, staker, _stakerNonce, operator, expiry)
+// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32)
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerTypesWithdrawal) ([32]byte, error) {
+ return _DelegationManagerStorage.Contract.CalculateWithdrawalRoot(&_DelegationManagerStorage.CallOpts, withdrawal)
}
-// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da.
+// ConvertToDepositShares is a free data retrieval call binding the contract method 0x25df922e.
//
-// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) CalculateWithdrawalRoot(opts *bind.CallOpts, withdrawal IDelegationManagerWithdrawal) ([32]byte, error) {
+// Solidity: function convertToDepositShares(address staker, address[] strategies, uint256[] withdrawableShares) view returns(uint256[])
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) ConvertToDepositShares(opts *bind.CallOpts, staker common.Address, strategies []common.Address, withdrawableShares []*big.Int) ([]*big.Int, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "calculateWithdrawalRoot", withdrawal)
+ err := _DelegationManagerStorage.contract.Call(opts, &out, "convertToDepositShares", staker, strategies, withdrawableShares)
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
}
-// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da.
+// ConvertToDepositShares is a free data retrieval call binding the contract method 0x25df922e.
//
-// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerWithdrawal) ([32]byte, error) {
- return _DelegationManagerStorage.Contract.CalculateWithdrawalRoot(&_DelegationManagerStorage.CallOpts, withdrawal)
+// Solidity: function convertToDepositShares(address staker, address[] strategies, uint256[] withdrawableShares) view returns(uint256[])
+func (_DelegationManagerStorage *DelegationManagerStorageSession) ConvertToDepositShares(staker common.Address, strategies []common.Address, withdrawableShares []*big.Int) ([]*big.Int, error) {
+ return _DelegationManagerStorage.Contract.ConvertToDepositShares(&_DelegationManagerStorage.CallOpts, staker, strategies, withdrawableShares)
}
-// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da.
+// ConvertToDepositShares is a free data retrieval call binding the contract method 0x25df922e.
//
-// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerWithdrawal) ([32]byte, error) {
- return _DelegationManagerStorage.Contract.CalculateWithdrawalRoot(&_DelegationManagerStorage.CallOpts, withdrawal)
+// Solidity: function convertToDepositShares(address staker, address[] strategies, uint256[] withdrawableShares) view returns(uint256[])
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) ConvertToDepositShares(staker common.Address, strategies []common.Address, withdrawableShares []*big.Int) ([]*big.Int, error) {
+ return _DelegationManagerStorage.Contract.ConvertToDepositShares(&_DelegationManagerStorage.CallOpts, staker, strategies, withdrawableShares)
}
// CumulativeWithdrawalsQueued is a free data retrieval call binding the contract method 0xa1788484.
//
-// Solidity: function cumulativeWithdrawalsQueued(address ) view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) CumulativeWithdrawalsQueued(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
+// Solidity: function cumulativeWithdrawalsQueued(address staker) view returns(uint256 totalQueued)
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) CumulativeWithdrawalsQueued(opts *bind.CallOpts, staker common.Address) (*big.Int, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "cumulativeWithdrawalsQueued", arg0)
+ err := _DelegationManagerStorage.contract.Call(opts, &out, "cumulativeWithdrawalsQueued", staker)
if err != nil {
return *new(*big.Int), err
@@ -509,24 +409,24 @@ func (_DelegationManagerStorage *DelegationManagerStorageCaller) CumulativeWithd
// CumulativeWithdrawalsQueued is a free data retrieval call binding the contract method 0xa1788484.
//
-// Solidity: function cumulativeWithdrawalsQueued(address ) view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) CumulativeWithdrawalsQueued(arg0 common.Address) (*big.Int, error) {
- return _DelegationManagerStorage.Contract.CumulativeWithdrawalsQueued(&_DelegationManagerStorage.CallOpts, arg0)
+// Solidity: function cumulativeWithdrawalsQueued(address staker) view returns(uint256 totalQueued)
+func (_DelegationManagerStorage *DelegationManagerStorageSession) CumulativeWithdrawalsQueued(staker common.Address) (*big.Int, error) {
+ return _DelegationManagerStorage.Contract.CumulativeWithdrawalsQueued(&_DelegationManagerStorage.CallOpts, staker)
}
// CumulativeWithdrawalsQueued is a free data retrieval call binding the contract method 0xa1788484.
//
-// Solidity: function cumulativeWithdrawalsQueued(address ) view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) CumulativeWithdrawalsQueued(arg0 common.Address) (*big.Int, error) {
- return _DelegationManagerStorage.Contract.CumulativeWithdrawalsQueued(&_DelegationManagerStorage.CallOpts, arg0)
+// Solidity: function cumulativeWithdrawalsQueued(address staker) view returns(uint256 totalQueued)
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) CumulativeWithdrawalsQueued(staker common.Address) (*big.Int, error) {
+ return _DelegationManagerStorage.Contract.CumulativeWithdrawalsQueued(&_DelegationManagerStorage.CallOpts, staker)
}
// DelegatedTo is a free data retrieval call binding the contract method 0x65da1264.
//
-// Solidity: function delegatedTo(address ) view returns(address)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) DelegatedTo(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
+// Solidity: function delegatedTo(address staker) view returns(address operator)
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) DelegatedTo(opts *bind.CallOpts, staker common.Address) (common.Address, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "delegatedTo", arg0)
+ err := _DelegationManagerStorage.contract.Call(opts, &out, "delegatedTo", staker)
if err != nil {
return *new(common.Address), err
@@ -540,16 +440,16 @@ func (_DelegationManagerStorage *DelegationManagerStorageCaller) DelegatedTo(opt
// DelegatedTo is a free data retrieval call binding the contract method 0x65da1264.
//
-// Solidity: function delegatedTo(address ) view returns(address)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) DelegatedTo(arg0 common.Address) (common.Address, error) {
- return _DelegationManagerStorage.Contract.DelegatedTo(&_DelegationManagerStorage.CallOpts, arg0)
+// Solidity: function delegatedTo(address staker) view returns(address operator)
+func (_DelegationManagerStorage *DelegationManagerStorageSession) DelegatedTo(staker common.Address) (common.Address, error) {
+ return _DelegationManagerStorage.Contract.DelegatedTo(&_DelegationManagerStorage.CallOpts, staker)
}
// DelegatedTo is a free data retrieval call binding the contract method 0x65da1264.
//
-// Solidity: function delegatedTo(address ) view returns(address)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) DelegatedTo(arg0 common.Address) (common.Address, error) {
- return _DelegationManagerStorage.Contract.DelegatedTo(&_DelegationManagerStorage.CallOpts, arg0)
+// Solidity: function delegatedTo(address staker) view returns(address operator)
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) DelegatedTo(staker common.Address) (common.Address, error) {
+ return _DelegationManagerStorage.Contract.DelegatedTo(&_DelegationManagerStorage.CallOpts, staker)
}
// DelegationApprover is a free data retrieval call binding the contract method 0x3cdeb5e0.
@@ -585,10 +485,10 @@ func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) Delegati
// DelegationApproverSaltIsSpent is a free data retrieval call binding the contract method 0xbb45fef2.
//
-// Solidity: function delegationApproverSaltIsSpent(address , bytes32 ) view returns(bool)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) DelegationApproverSaltIsSpent(opts *bind.CallOpts, arg0 common.Address, arg1 [32]byte) (bool, error) {
+// Solidity: function delegationApproverSaltIsSpent(address delegationApprover, bytes32 salt) view returns(bool spent)
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) DelegationApproverSaltIsSpent(opts *bind.CallOpts, delegationApprover common.Address, salt [32]byte) (bool, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "delegationApproverSaltIsSpent", arg0, arg1)
+ err := _DelegationManagerStorage.contract.Call(opts, &out, "delegationApproverSaltIsSpent", delegationApprover, salt)
if err != nil {
return *new(bool), err
@@ -602,47 +502,47 @@ func (_DelegationManagerStorage *DelegationManagerStorageCaller) DelegationAppro
// DelegationApproverSaltIsSpent is a free data retrieval call binding the contract method 0xbb45fef2.
//
-// Solidity: function delegationApproverSaltIsSpent(address , bytes32 ) view returns(bool)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) DelegationApproverSaltIsSpent(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _DelegationManagerStorage.Contract.DelegationApproverSaltIsSpent(&_DelegationManagerStorage.CallOpts, arg0, arg1)
+// Solidity: function delegationApproverSaltIsSpent(address delegationApprover, bytes32 salt) view returns(bool spent)
+func (_DelegationManagerStorage *DelegationManagerStorageSession) DelegationApproverSaltIsSpent(delegationApprover common.Address, salt [32]byte) (bool, error) {
+ return _DelegationManagerStorage.Contract.DelegationApproverSaltIsSpent(&_DelegationManagerStorage.CallOpts, delegationApprover, salt)
}
// DelegationApproverSaltIsSpent is a free data retrieval call binding the contract method 0xbb45fef2.
//
-// Solidity: function delegationApproverSaltIsSpent(address , bytes32 ) view returns(bool)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) DelegationApproverSaltIsSpent(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _DelegationManagerStorage.Contract.DelegationApproverSaltIsSpent(&_DelegationManagerStorage.CallOpts, arg0, arg1)
+// Solidity: function delegationApproverSaltIsSpent(address delegationApprover, bytes32 salt) view returns(bool spent)
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) DelegationApproverSaltIsSpent(delegationApprover common.Address, salt [32]byte) (bool, error) {
+ return _DelegationManagerStorage.Contract.DelegationApproverSaltIsSpent(&_DelegationManagerStorage.CallOpts, delegationApprover, salt)
}
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
+// DepositScalingFactor is a free data retrieval call binding the contract method 0xbfae3fd2.
//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) {
+// Solidity: function depositScalingFactor(address staker, address strategy) view returns(uint256)
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) DepositScalingFactor(opts *bind.CallOpts, staker common.Address, strategy common.Address) (*big.Int, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "domainSeparator")
+ err := _DelegationManagerStorage.contract.Call(opts, &out, "depositScalingFactor", staker, strategy)
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
}
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
+// DepositScalingFactor is a free data retrieval call binding the contract method 0xbfae3fd2.
//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) DomainSeparator() ([32]byte, error) {
- return _DelegationManagerStorage.Contract.DomainSeparator(&_DelegationManagerStorage.CallOpts)
+// Solidity: function depositScalingFactor(address staker, address strategy) view returns(uint256)
+func (_DelegationManagerStorage *DelegationManagerStorageSession) DepositScalingFactor(staker common.Address, strategy common.Address) (*big.Int, error) {
+ return _DelegationManagerStorage.Contract.DepositScalingFactor(&_DelegationManagerStorage.CallOpts, staker, strategy)
}
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
+// DepositScalingFactor is a free data retrieval call binding the contract method 0xbfae3fd2.
//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) DomainSeparator() ([32]byte, error) {
- return _DelegationManagerStorage.Contract.DomainSeparator(&_DelegationManagerStorage.CallOpts)
+// Solidity: function depositScalingFactor(address staker, address strategy) view returns(uint256)
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) DepositScalingFactor(staker common.Address, strategy common.Address) (*big.Int, error) {
+ return _DelegationManagerStorage.Contract.DepositScalingFactor(&_DelegationManagerStorage.CallOpts, staker, strategy)
}
// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda.
@@ -676,12 +576,12 @@ func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) EigenPod
return _DelegationManagerStorage.Contract.EigenPodManager(&_DelegationManagerStorage.CallOpts)
}
-// 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 (_DelegationManagerStorage *DelegationManagerStorageCaller) GetDelegatableShares(opts *bind.CallOpts, staker common.Address) ([]common.Address, []*big.Int, error) {
+// Solidity: function getDepositedShares(address staker) view returns(address[], uint256[])
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) GetDepositedShares(opts *bind.CallOpts, staker common.Address) ([]common.Address, []*big.Int, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "getDelegatableShares", staker)
+ err := _DelegationManagerStorage.contract.Call(opts, &out, "getDepositedShares", staker)
if err != nil {
return *new([]common.Address), *new([]*big.Int), err
@@ -694,18 +594,18 @@ func (_DelegationManagerStorage *DelegationManagerStorageCaller) GetDelegatableS
}
-// 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 (_DelegationManagerStorage *DelegationManagerStorageSession) GetDelegatableShares(staker common.Address) ([]common.Address, []*big.Int, error) {
- return _DelegationManagerStorage.Contract.GetDelegatableShares(&_DelegationManagerStorage.CallOpts, staker)
+// Solidity: function getDepositedShares(address staker) view returns(address[], uint256[])
+func (_DelegationManagerStorage *DelegationManagerStorageSession) GetDepositedShares(staker common.Address) ([]common.Address, []*big.Int, error) {
+ return _DelegationManagerStorage.Contract.GetDepositedShares(&_DelegationManagerStorage.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 (_DelegationManagerStorage *DelegationManagerStorageCallerSession) GetDelegatableShares(staker common.Address) ([]common.Address, []*big.Int, error) {
- return _DelegationManagerStorage.Contract.GetDelegatableShares(&_DelegationManagerStorage.CallOpts, staker)
+// Solidity: function getDepositedShares(address staker) view returns(address[], uint256[])
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) GetDepositedShares(staker common.Address) ([]common.Address, []*big.Int, error) {
+ return _DelegationManagerStorage.Contract.GetDepositedShares(&_DelegationManagerStorage.CallOpts, staker)
}
// GetOperatorShares is a free data retrieval call binding the contract method 0x90041347.
@@ -739,198 +639,226 @@ func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) GetOpera
return _DelegationManagerStorage.Contract.GetOperatorShares(&_DelegationManagerStorage.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 (_DelegationManagerStorage *DelegationManagerStorageCaller) GetWithdrawalDelay(opts *bind.CallOpts, strategies []common.Address) (*big.Int, error) {
+// Solidity: function getOperatorsShares(address[] operators, address[] strategies) view returns(uint256[][])
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) GetOperatorsShares(opts *bind.CallOpts, operators []common.Address, strategies []common.Address) ([][]*big.Int, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "getWithdrawalDelay", strategies)
+ err := _DelegationManagerStorage.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
}
-// 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 (_DelegationManagerStorage *DelegationManagerStorageSession) GetWithdrawalDelay(strategies []common.Address) (*big.Int, error) {
- return _DelegationManagerStorage.Contract.GetWithdrawalDelay(&_DelegationManagerStorage.CallOpts, strategies)
+// Solidity: function getOperatorsShares(address[] operators, address[] strategies) view returns(uint256[][])
+func (_DelegationManagerStorage *DelegationManagerStorageSession) GetOperatorsShares(operators []common.Address, strategies []common.Address) ([][]*big.Int, error) {
+ return _DelegationManagerStorage.Contract.GetOperatorsShares(&_DelegationManagerStorage.CallOpts, operators, 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 (_DelegationManagerStorage *DelegationManagerStorageCallerSession) GetWithdrawalDelay(strategies []common.Address) (*big.Int, error) {
- return _DelegationManagerStorage.Contract.GetWithdrawalDelay(&_DelegationManagerStorage.CallOpts, strategies)
+// Solidity: function getOperatorsShares(address[] operators, address[] strategies) view returns(uint256[][])
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) GetOperatorsShares(operators []common.Address, strategies []common.Address) ([][]*big.Int, error) {
+ return _DelegationManagerStorage.Contract.GetOperatorsShares(&_DelegationManagerStorage.CallOpts, operators, strategies)
}
-// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d.
+// GetQueuedWithdrawal is a free data retrieval call binding the contract method 0x5d975e88.
//
-// Solidity: function isDelegated(address staker) view returns(bool)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) IsDelegated(opts *bind.CallOpts, staker common.Address) (bool, error) {
+// Solidity: function getQueuedWithdrawal(bytes32 withdrawalRoot) view returns((address,address,address,uint256,uint32,address[],uint256[]))
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) GetQueuedWithdrawal(opts *bind.CallOpts, withdrawalRoot [32]byte) (IDelegationManagerTypesWithdrawal, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "isDelegated", staker)
+ err := _DelegationManagerStorage.contract.Call(opts, &out, "getQueuedWithdrawal", withdrawalRoot)
if err != nil {
- return *new(bool), err
+ return *new(IDelegationManagerTypesWithdrawal), err
}
- out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
+ out0 := *abi.ConvertType(out[0], new(IDelegationManagerTypesWithdrawal)).(*IDelegationManagerTypesWithdrawal)
return out0, err
}
-// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d.
+// GetQueuedWithdrawal is a free data retrieval call binding the contract method 0x5d975e88.
//
-// Solidity: function isDelegated(address staker) view returns(bool)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) IsDelegated(staker common.Address) (bool, error) {
- return _DelegationManagerStorage.Contract.IsDelegated(&_DelegationManagerStorage.CallOpts, staker)
+// Solidity: function getQueuedWithdrawal(bytes32 withdrawalRoot) view returns((address,address,address,uint256,uint32,address[],uint256[]))
+func (_DelegationManagerStorage *DelegationManagerStorageSession) GetQueuedWithdrawal(withdrawalRoot [32]byte) (IDelegationManagerTypesWithdrawal, error) {
+ return _DelegationManagerStorage.Contract.GetQueuedWithdrawal(&_DelegationManagerStorage.CallOpts, withdrawalRoot)
}
-// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d.
+// GetQueuedWithdrawal is a free data retrieval call binding the contract method 0x5d975e88.
//
-// Solidity: function isDelegated(address staker) view returns(bool)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) IsDelegated(staker common.Address) (bool, error) {
- return _DelegationManagerStorage.Contract.IsDelegated(&_DelegationManagerStorage.CallOpts, staker)
+// Solidity: function getQueuedWithdrawal(bytes32 withdrawalRoot) view returns((address,address,address,uint256,uint32,address[],uint256[]))
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) GetQueuedWithdrawal(withdrawalRoot [32]byte) (IDelegationManagerTypesWithdrawal, error) {
+ return _DelegationManagerStorage.Contract.GetQueuedWithdrawal(&_DelegationManagerStorage.CallOpts, withdrawalRoot)
}
-// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae.
+// GetQueuedWithdrawalRoots is a free data retrieval call binding the contract method 0xfd8aa88d.
//
-// Solidity: function isOperator(address operator) view returns(bool)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) IsOperator(opts *bind.CallOpts, operator common.Address) (bool, error) {
+// Solidity: function getQueuedWithdrawalRoots(address staker) view returns(bytes32[])
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) GetQueuedWithdrawalRoots(opts *bind.CallOpts, staker common.Address) ([][32]byte, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "isOperator", operator)
+ err := _DelegationManagerStorage.contract.Call(opts, &out, "getQueuedWithdrawalRoots", staker)
if err != nil {
- return *new(bool), err
+ return *new([][32]byte), err
}
- out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
+ out0 := *abi.ConvertType(out[0], new([][32]byte)).(*[][32]byte)
return out0, err
}
-// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae.
+// GetQueuedWithdrawalRoots is a free data retrieval call binding the contract method 0xfd8aa88d.
//
-// Solidity: function isOperator(address operator) view returns(bool)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) IsOperator(operator common.Address) (bool, error) {
- return _DelegationManagerStorage.Contract.IsOperator(&_DelegationManagerStorage.CallOpts, operator)
+// Solidity: function getQueuedWithdrawalRoots(address staker) view returns(bytes32[])
+func (_DelegationManagerStorage *DelegationManagerStorageSession) GetQueuedWithdrawalRoots(staker common.Address) ([][32]byte, error) {
+ return _DelegationManagerStorage.Contract.GetQueuedWithdrawalRoots(&_DelegationManagerStorage.CallOpts, staker)
}
-// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae.
+// GetQueuedWithdrawalRoots is a free data retrieval call binding the contract method 0xfd8aa88d.
//
-// Solidity: function isOperator(address operator) view returns(bool)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) IsOperator(operator common.Address) (bool, error) {
- return _DelegationManagerStorage.Contract.IsOperator(&_DelegationManagerStorage.CallOpts, operator)
+// Solidity: function getQueuedWithdrawalRoots(address staker) view returns(bytes32[])
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) GetQueuedWithdrawalRoots(staker common.Address) ([][32]byte, error) {
+ return _DelegationManagerStorage.Contract.GetQueuedWithdrawalRoots(&_DelegationManagerStorage.CallOpts, staker)
}
-// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8.
+// GetQueuedWithdrawals is a free data retrieval call binding the contract method 0x5dd68579.
//
-// Solidity: function minWithdrawalDelayBlocks() view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) MinWithdrawalDelayBlocks(opts *bind.CallOpts) (*big.Int, error) {
+// Solidity: function getQueuedWithdrawals(address staker) view returns((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, uint256[][] shares)
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) GetQueuedWithdrawals(opts *bind.CallOpts, staker common.Address) (struct {
+ Withdrawals []IDelegationManagerTypesWithdrawal
+ Shares [][]*big.Int
+}, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "minWithdrawalDelayBlocks")
+ err := _DelegationManagerStorage.contract.Call(opts, &out, "getQueuedWithdrawals", staker)
+ outstruct := new(struct {
+ Withdrawals []IDelegationManagerTypesWithdrawal
+ Shares [][]*big.Int
+ })
if err != nil {
- return *new(*big.Int), err
+ return *outstruct, err
}
- out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+ outstruct.Withdrawals = *abi.ConvertType(out[0], new([]IDelegationManagerTypesWithdrawal)).(*[]IDelegationManagerTypesWithdrawal)
+ outstruct.Shares = *abi.ConvertType(out[1], new([][]*big.Int)).(*[][]*big.Int)
- return out0, err
+ return *outstruct, err
}
-// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8.
+// GetQueuedWithdrawals is a free data retrieval call binding the contract method 0x5dd68579.
//
-// Solidity: function minWithdrawalDelayBlocks() view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) MinWithdrawalDelayBlocks() (*big.Int, error) {
- return _DelegationManagerStorage.Contract.MinWithdrawalDelayBlocks(&_DelegationManagerStorage.CallOpts)
+// Solidity: function getQueuedWithdrawals(address staker) view returns((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, uint256[][] shares)
+func (_DelegationManagerStorage *DelegationManagerStorageSession) GetQueuedWithdrawals(staker common.Address) (struct {
+ Withdrawals []IDelegationManagerTypesWithdrawal
+ Shares [][]*big.Int
+}, error) {
+ return _DelegationManagerStorage.Contract.GetQueuedWithdrawals(&_DelegationManagerStorage.CallOpts, staker)
}
-// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8.
+// GetQueuedWithdrawals is a free data retrieval call binding the contract method 0x5dd68579.
//
-// Solidity: function minWithdrawalDelayBlocks() view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) MinWithdrawalDelayBlocks() (*big.Int, error) {
- return _DelegationManagerStorage.Contract.MinWithdrawalDelayBlocks(&_DelegationManagerStorage.CallOpts)
+// Solidity: function getQueuedWithdrawals(address staker) view returns((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, uint256[][] shares)
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) GetQueuedWithdrawals(staker common.Address) (struct {
+ Withdrawals []IDelegationManagerTypesWithdrawal
+ Shares [][]*big.Int
+}, error) {
+ return _DelegationManagerStorage.Contract.GetQueuedWithdrawals(&_DelegationManagerStorage.CallOpts, staker)
}
-// OperatorDetails is a free data retrieval call binding the contract method 0xc5e480db.
+// GetSlashableSharesInQueue is a free data retrieval call binding the contract method 0x6e174448.
//
-// Solidity: function operatorDetails(address operator) view returns((address,address,uint32))
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) OperatorDetails(opts *bind.CallOpts, operator common.Address) (IDelegationManagerOperatorDetails, error) {
+// Solidity: function getSlashableSharesInQueue(address operator, address strategy) view returns(uint256)
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) GetSlashableSharesInQueue(opts *bind.CallOpts, operator common.Address, strategy common.Address) (*big.Int, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "operatorDetails", operator)
+ err := _DelegationManagerStorage.contract.Call(opts, &out, "getSlashableSharesInQueue", operator, strategy)
if err != nil {
- return *new(IDelegationManagerOperatorDetails), err
+ return *new(*big.Int), err
}
- out0 := *abi.ConvertType(out[0], new(IDelegationManagerOperatorDetails)).(*IDelegationManagerOperatorDetails)
+ out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
return out0, err
}
-// OperatorDetails is a free data retrieval call binding the contract method 0xc5e480db.
+// GetSlashableSharesInQueue is a free data retrieval call binding the contract method 0x6e174448.
//
-// Solidity: function operatorDetails(address operator) view returns((address,address,uint32))
-func (_DelegationManagerStorage *DelegationManagerStorageSession) OperatorDetails(operator common.Address) (IDelegationManagerOperatorDetails, error) {
- return _DelegationManagerStorage.Contract.OperatorDetails(&_DelegationManagerStorage.CallOpts, operator)
+// Solidity: function getSlashableSharesInQueue(address operator, address strategy) view returns(uint256)
+func (_DelegationManagerStorage *DelegationManagerStorageSession) GetSlashableSharesInQueue(operator common.Address, strategy common.Address) (*big.Int, error) {
+ return _DelegationManagerStorage.Contract.GetSlashableSharesInQueue(&_DelegationManagerStorage.CallOpts, operator, strategy)
}
-// OperatorDetails is a free data retrieval call binding the contract method 0xc5e480db.
+// GetSlashableSharesInQueue is a free data retrieval call binding the contract method 0x6e174448.
//
-// Solidity: function operatorDetails(address operator) view returns((address,address,uint32))
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) OperatorDetails(operator common.Address) (IDelegationManagerOperatorDetails, error) {
- return _DelegationManagerStorage.Contract.OperatorDetails(&_DelegationManagerStorage.CallOpts, operator)
+// Solidity: function getSlashableSharesInQueue(address operator, address strategy) view returns(uint256)
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) GetSlashableSharesInQueue(operator common.Address, strategy common.Address) (*big.Int, error) {
+ return _DelegationManagerStorage.Contract.GetSlashableSharesInQueue(&_DelegationManagerStorage.CallOpts, operator, strategy)
}
-// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3.
+// GetWithdrawableShares is a free data retrieval call binding the contract method 0xc978f7ac.
//
-// Solidity: function operatorShares(address , address ) view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) OperatorShares(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) {
+// Solidity: function getWithdrawableShares(address staker, address[] strategies) view returns(uint256[] withdrawableShares, uint256[] depositShares)
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) GetWithdrawableShares(opts *bind.CallOpts, staker common.Address, strategies []common.Address) (struct {
+ WithdrawableShares []*big.Int
+ DepositShares []*big.Int
+}, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "operatorShares", arg0, arg1)
+ err := _DelegationManagerStorage.contract.Call(opts, &out, "getWithdrawableShares", staker, strategies)
+ outstruct := new(struct {
+ WithdrawableShares []*big.Int
+ DepositShares []*big.Int
+ })
if err != nil {
- return *new(*big.Int), err
+ return *outstruct, err
}
- out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+ outstruct.WithdrawableShares = *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int)
+ outstruct.DepositShares = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int)
- return out0, err
+ return *outstruct, err
}
-// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3.
+// GetWithdrawableShares is a free data retrieval call binding the contract method 0xc978f7ac.
//
-// Solidity: function operatorShares(address , address ) view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) OperatorShares(arg0 common.Address, arg1 common.Address) (*big.Int, error) {
- return _DelegationManagerStorage.Contract.OperatorShares(&_DelegationManagerStorage.CallOpts, arg0, arg1)
+// Solidity: function getWithdrawableShares(address staker, address[] strategies) view returns(uint256[] withdrawableShares, uint256[] depositShares)
+func (_DelegationManagerStorage *DelegationManagerStorageSession) GetWithdrawableShares(staker common.Address, strategies []common.Address) (struct {
+ WithdrawableShares []*big.Int
+ DepositShares []*big.Int
+}, error) {
+ return _DelegationManagerStorage.Contract.GetWithdrawableShares(&_DelegationManagerStorage.CallOpts, staker, strategies)
}
-// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3.
+// GetWithdrawableShares is a free data retrieval call binding the contract method 0xc978f7ac.
//
-// Solidity: function operatorShares(address , address ) view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) OperatorShares(arg0 common.Address, arg1 common.Address) (*big.Int, error) {
- return _DelegationManagerStorage.Contract.OperatorShares(&_DelegationManagerStorage.CallOpts, arg0, arg1)
+// Solidity: function getWithdrawableShares(address staker, address[] strategies) view returns(uint256[] withdrawableShares, uint256[] depositShares)
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) GetWithdrawableShares(staker common.Address, strategies []common.Address) (struct {
+ WithdrawableShares []*big.Int
+ DepositShares []*big.Int
+}, error) {
+ return _DelegationManagerStorage.Contract.GetWithdrawableShares(&_DelegationManagerStorage.CallOpts, staker, strategies)
}
-// PendingWithdrawals is a free data retrieval call binding the contract method 0xb7f06ebe.
+// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d.
//
-// Solidity: function pendingWithdrawals(bytes32 ) view returns(bool)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) PendingWithdrawals(opts *bind.CallOpts, arg0 [32]byte) (bool, error) {
+// Solidity: function isDelegated(address staker) view returns(bool)
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) IsDelegated(opts *bind.CallOpts, staker common.Address) (bool, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "pendingWithdrawals", arg0)
+ err := _DelegationManagerStorage.contract.Call(opts, &out, "isDelegated", staker)
if err != nil {
return *new(bool), err
@@ -942,88 +870,88 @@ func (_DelegationManagerStorage *DelegationManagerStorageCaller) PendingWithdraw
}
-// PendingWithdrawals is a free data retrieval call binding the contract method 0xb7f06ebe.
+// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d.
//
-// Solidity: function pendingWithdrawals(bytes32 ) view returns(bool)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) PendingWithdrawals(arg0 [32]byte) (bool, error) {
- return _DelegationManagerStorage.Contract.PendingWithdrawals(&_DelegationManagerStorage.CallOpts, arg0)
+// Solidity: function isDelegated(address staker) view returns(bool)
+func (_DelegationManagerStorage *DelegationManagerStorageSession) IsDelegated(staker common.Address) (bool, error) {
+ return _DelegationManagerStorage.Contract.IsDelegated(&_DelegationManagerStorage.CallOpts, staker)
}
-// PendingWithdrawals is a free data retrieval call binding the contract method 0xb7f06ebe.
+// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d.
//
-// Solidity: function pendingWithdrawals(bytes32 ) view returns(bool)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) PendingWithdrawals(arg0 [32]byte) (bool, error) {
- return _DelegationManagerStorage.Contract.PendingWithdrawals(&_DelegationManagerStorage.CallOpts, arg0)
+// Solidity: function isDelegated(address staker) view returns(bool)
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) IsDelegated(staker common.Address) (bool, error) {
+ return _DelegationManagerStorage.Contract.IsDelegated(&_DelegationManagerStorage.CallOpts, staker)
}
-// Slasher is a free data retrieval call binding the contract method 0xb1344271.
+// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae.
//
-// Solidity: function slasher() view returns(address)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) Slasher(opts *bind.CallOpts) (common.Address, error) {
+// Solidity: function isOperator(address operator) view returns(bool)
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) IsOperator(opts *bind.CallOpts, operator common.Address) (bool, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "slasher")
+ err := _DelegationManagerStorage.contract.Call(opts, &out, "isOperator", operator)
if err != nil {
- return *new(common.Address), err
+ return *new(bool), err
}
- out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
+ out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
return out0, err
}
-// Slasher is a free data retrieval call binding the contract method 0xb1344271.
+// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae.
//
-// Solidity: function slasher() view returns(address)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) Slasher() (common.Address, error) {
- return _DelegationManagerStorage.Contract.Slasher(&_DelegationManagerStorage.CallOpts)
+// Solidity: function isOperator(address operator) view returns(bool)
+func (_DelegationManagerStorage *DelegationManagerStorageSession) IsOperator(operator common.Address) (bool, error) {
+ return _DelegationManagerStorage.Contract.IsOperator(&_DelegationManagerStorage.CallOpts, operator)
}
-// Slasher is a free data retrieval call binding the contract method 0xb1344271.
+// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae.
//
-// Solidity: function slasher() view returns(address)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) Slasher() (common.Address, error) {
- return _DelegationManagerStorage.Contract.Slasher(&_DelegationManagerStorage.CallOpts)
+// Solidity: function isOperator(address operator) view returns(bool)
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) IsOperator(operator common.Address) (bool, error) {
+ return _DelegationManagerStorage.Contract.IsOperator(&_DelegationManagerStorage.CallOpts, operator)
}
-// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f.
+// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8.
//
-// Solidity: function stakerNonce(address ) view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) StakerNonce(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
+// Solidity: function minWithdrawalDelayBlocks() view returns(uint32)
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) MinWithdrawalDelayBlocks(opts *bind.CallOpts) (uint32, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "stakerNonce", arg0)
+ err := _DelegationManagerStorage.contract.Call(opts, &out, "minWithdrawalDelayBlocks")
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
}
-// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f.
+// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8.
//
-// Solidity: function stakerNonce(address ) view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) StakerNonce(arg0 common.Address) (*big.Int, error) {
- return _DelegationManagerStorage.Contract.StakerNonce(&_DelegationManagerStorage.CallOpts, arg0)
+// Solidity: function minWithdrawalDelayBlocks() view returns(uint32)
+func (_DelegationManagerStorage *DelegationManagerStorageSession) MinWithdrawalDelayBlocks() (uint32, error) {
+ return _DelegationManagerStorage.Contract.MinWithdrawalDelayBlocks(&_DelegationManagerStorage.CallOpts)
}
-// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f.
+// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8.
//
-// Solidity: function stakerNonce(address ) view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) StakerNonce(arg0 common.Address) (*big.Int, error) {
- return _DelegationManagerStorage.Contract.StakerNonce(&_DelegationManagerStorage.CallOpts, arg0)
+// Solidity: function minWithdrawalDelayBlocks() view returns(uint32)
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) MinWithdrawalDelayBlocks() (uint32, error) {
+ return _DelegationManagerStorage.Contract.MinWithdrawalDelayBlocks(&_DelegationManagerStorage.CallOpts)
}
-// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365.
+// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3.
//
-// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) StakerOptOutWindowBlocks(opts *bind.CallOpts, operator common.Address) (*big.Int, error) {
+// Solidity: function operatorShares(address operator, address strategy) view returns(uint256 shares)
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) OperatorShares(opts *bind.CallOpts, operator common.Address, strategy common.Address) (*big.Int, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "stakerOptOutWindowBlocks", operator)
+ err := _DelegationManagerStorage.contract.Call(opts, &out, "operatorShares", operator, strategy)
if err != nil {
return *new(*big.Int), err
@@ -1035,143 +963,143 @@ func (_DelegationManagerStorage *DelegationManagerStorageCaller) StakerOptOutWin
}
-// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365.
+// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3.
//
-// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) StakerOptOutWindowBlocks(operator common.Address) (*big.Int, error) {
- return _DelegationManagerStorage.Contract.StakerOptOutWindowBlocks(&_DelegationManagerStorage.CallOpts, operator)
+// Solidity: function operatorShares(address operator, address strategy) view returns(uint256 shares)
+func (_DelegationManagerStorage *DelegationManagerStorageSession) OperatorShares(operator common.Address, strategy common.Address) (*big.Int, error) {
+ return _DelegationManagerStorage.Contract.OperatorShares(&_DelegationManagerStorage.CallOpts, operator, strategy)
}
-// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365.
+// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3.
//
-// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) StakerOptOutWindowBlocks(operator common.Address) (*big.Int, error) {
- return _DelegationManagerStorage.Contract.StakerOptOutWindowBlocks(&_DelegationManagerStorage.CallOpts, operator)
+// Solidity: function operatorShares(address operator, address strategy) view returns(uint256 shares)
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) OperatorShares(operator common.Address, strategy common.Address) (*big.Int, error) {
+ return _DelegationManagerStorage.Contract.OperatorShares(&_DelegationManagerStorage.CallOpts, operator, strategy)
}
-// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
+// PendingWithdrawals is a free data retrieval call binding the contract method 0xb7f06ebe.
//
-// Solidity: function strategyManager() view returns(address)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) StrategyManager(opts *bind.CallOpts) (common.Address, error) {
+// Solidity: function pendingWithdrawals(bytes32 withdrawalRoot) view returns(bool pending)
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) PendingWithdrawals(opts *bind.CallOpts, withdrawalRoot [32]byte) (bool, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "strategyManager")
+ err := _DelegationManagerStorage.contract.Call(opts, &out, "pendingWithdrawals", withdrawalRoot)
if err != nil {
- return *new(common.Address), err
+ return *new(bool), err
}
- out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
+ out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
return out0, err
}
-// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
+// PendingWithdrawals is a free data retrieval call binding the contract method 0xb7f06ebe.
//
-// Solidity: function strategyManager() view returns(address)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) StrategyManager() (common.Address, error) {
- return _DelegationManagerStorage.Contract.StrategyManager(&_DelegationManagerStorage.CallOpts)
+// Solidity: function pendingWithdrawals(bytes32 withdrawalRoot) view returns(bool pending)
+func (_DelegationManagerStorage *DelegationManagerStorageSession) PendingWithdrawals(withdrawalRoot [32]byte) (bool, error) {
+ return _DelegationManagerStorage.Contract.PendingWithdrawals(&_DelegationManagerStorage.CallOpts, withdrawalRoot)
}
-// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
+// PendingWithdrawals is a free data retrieval call binding the contract method 0xb7f06ebe.
//
-// Solidity: function strategyManager() view returns(address)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) StrategyManager() (common.Address, error) {
- return _DelegationManagerStorage.Contract.StrategyManager(&_DelegationManagerStorage.CallOpts)
+// Solidity: function pendingWithdrawals(bytes32 withdrawalRoot) view returns(bool pending)
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) PendingWithdrawals(withdrawalRoot [32]byte) (bool, error) {
+ return _DelegationManagerStorage.Contract.PendingWithdrawals(&_DelegationManagerStorage.CallOpts, withdrawalRoot)
}
-// StrategyWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc488375a.
+// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
//
-// Solidity: function strategyWithdrawalDelayBlocks(address ) view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageCaller) StrategyWithdrawalDelayBlocks(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
+// Solidity: function strategyManager() view returns(address)
+func (_DelegationManagerStorage *DelegationManagerStorageCaller) StrategyManager(opts *bind.CallOpts) (common.Address, error) {
var out []interface{}
- err := _DelegationManagerStorage.contract.Call(opts, &out, "strategyWithdrawalDelayBlocks", arg0)
+ err := _DelegationManagerStorage.contract.Call(opts, &out, "strategyManager")
if err != nil {
- return *new(*big.Int), err
+ return *new(common.Address), err
}
- out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+ out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
return out0, err
}
-// StrategyWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc488375a.
+// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
//
-// Solidity: function strategyWithdrawalDelayBlocks(address ) view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageSession) StrategyWithdrawalDelayBlocks(arg0 common.Address) (*big.Int, error) {
- return _DelegationManagerStorage.Contract.StrategyWithdrawalDelayBlocks(&_DelegationManagerStorage.CallOpts, arg0)
+// Solidity: function strategyManager() view returns(address)
+func (_DelegationManagerStorage *DelegationManagerStorageSession) StrategyManager() (common.Address, error) {
+ return _DelegationManagerStorage.Contract.StrategyManager(&_DelegationManagerStorage.CallOpts)
}
-// StrategyWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc488375a.
+// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
//
-// Solidity: function strategyWithdrawalDelayBlocks(address ) view returns(uint256)
-func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) StrategyWithdrawalDelayBlocks(arg0 common.Address) (*big.Int, error) {
- return _DelegationManagerStorage.Contract.StrategyWithdrawalDelayBlocks(&_DelegationManagerStorage.CallOpts, arg0)
+// Solidity: function strategyManager() view returns(address)
+func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) StrategyManager() (common.Address, error) {
+ return _DelegationManagerStorage.Contract.StrategyManager(&_DelegationManagerStorage.CallOpts)
}
-// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x60d7faed.
+// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0xe4cc3f90.
//
-// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactor) CompleteQueuedWithdrawal(opts *bind.TransactOpts, withdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) {
- return _DelegationManagerStorage.contract.Transact(opts, "completeQueuedWithdrawal", withdrawal, tokens, middlewareTimesIndex, receiveAsTokens)
+// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, bool receiveAsTokens) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageTransactor) CompleteQueuedWithdrawal(opts *bind.TransactOpts, withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) {
+ return _DelegationManagerStorage.contract.Transact(opts, "completeQueuedWithdrawal", withdrawal, tokens, receiveAsTokens)
}
-// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x60d7faed.
+// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0xe4cc3f90.
//
-// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.CompleteQueuedWithdrawal(&_DelegationManagerStorage.TransactOpts, withdrawal, tokens, middlewareTimesIndex, receiveAsTokens)
+// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, bool receiveAsTokens) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.CompleteQueuedWithdrawal(&_DelegationManagerStorage.TransactOpts, withdrawal, tokens, receiveAsTokens)
}
-// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x60d7faed.
+// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0xe4cc3f90.
//
-// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.CompleteQueuedWithdrawal(&_DelegationManagerStorage.TransactOpts, withdrawal, tokens, middlewareTimesIndex, receiveAsTokens)
+// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, bool receiveAsTokens) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.CompleteQueuedWithdrawal(&_DelegationManagerStorage.TransactOpts, withdrawal, tokens, receiveAsTokens)
}
-// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x33404396.
+// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x9435bb43.
//
-// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, uint256[] middlewareTimesIndexes, bool[] receiveAsTokens) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactor) CompleteQueuedWithdrawals(opts *bind.TransactOpts, withdrawals []IDelegationManagerWithdrawal, tokens [][]common.Address, middlewareTimesIndexes []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) {
- return _DelegationManagerStorage.contract.Transact(opts, "completeQueuedWithdrawals", withdrawals, tokens, middlewareTimesIndexes, receiveAsTokens)
+// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, bool[] receiveAsTokens) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageTransactor) CompleteQueuedWithdrawals(opts *bind.TransactOpts, withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) {
+ return _DelegationManagerStorage.contract.Transact(opts, "completeQueuedWithdrawals", withdrawals, tokens, receiveAsTokens)
}
-// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x33404396.
+// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x9435bb43.
//
-// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, uint256[] middlewareTimesIndexes, bool[] receiveAsTokens) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerWithdrawal, tokens [][]common.Address, middlewareTimesIndexes []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.CompleteQueuedWithdrawals(&_DelegationManagerStorage.TransactOpts, withdrawals, tokens, middlewareTimesIndexes, receiveAsTokens)
+// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, bool[] receiveAsTokens) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.CompleteQueuedWithdrawals(&_DelegationManagerStorage.TransactOpts, withdrawals, tokens, receiveAsTokens)
}
-// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x33404396.
+// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x9435bb43.
//
-// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, uint256[] middlewareTimesIndexes, bool[] receiveAsTokens) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerWithdrawal, tokens [][]common.Address, middlewareTimesIndexes []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.CompleteQueuedWithdrawals(&_DelegationManagerStorage.TransactOpts, withdrawals, tokens, middlewareTimesIndexes, receiveAsTokens)
+// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, bool[] receiveAsTokens) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.CompleteQueuedWithdrawals(&_DelegationManagerStorage.TransactOpts, withdrawals, tokens, receiveAsTokens)
}
-// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967.
+// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x60a0d1ce.
//
-// Solidity: function decreaseDelegatedShares(address staker, address strategy, uint256 shares) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactor) DecreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _DelegationManagerStorage.contract.Transact(opts, "decreaseDelegatedShares", staker, strategy, shares)
+// Solidity: function decreaseDelegatedShares(address staker, uint256 curDepositShares, uint64 beaconChainSlashingFactorDecrease) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageTransactor) DecreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, curDepositShares *big.Int, beaconChainSlashingFactorDecrease uint64) (*types.Transaction, error) {
+ return _DelegationManagerStorage.contract.Transact(opts, "decreaseDelegatedShares", staker, curDepositShares, beaconChainSlashingFactorDecrease)
}
-// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967.
+// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x60a0d1ce.
//
-// Solidity: function decreaseDelegatedShares(address staker, address strategy, uint256 shares) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageSession) DecreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.DecreaseDelegatedShares(&_DelegationManagerStorage.TransactOpts, staker, strategy, shares)
+// Solidity: function decreaseDelegatedShares(address staker, uint256 curDepositShares, uint64 beaconChainSlashingFactorDecrease) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageSession) DecreaseDelegatedShares(staker common.Address, curDepositShares *big.Int, beaconChainSlashingFactorDecrease uint64) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.DecreaseDelegatedShares(&_DelegationManagerStorage.TransactOpts, staker, curDepositShares, beaconChainSlashingFactorDecrease)
}
-// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967.
+// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x60a0d1ce.
//
-// Solidity: function decreaseDelegatedShares(address staker, address strategy, uint256 shares) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) DecreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.DecreaseDelegatedShares(&_DelegationManagerStorage.TransactOpts, staker, strategy, shares)
+// Solidity: function decreaseDelegatedShares(address staker, uint256 curDepositShares, uint64 beaconChainSlashingFactorDecrease) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) DecreaseDelegatedShares(staker common.Address, curDepositShares *big.Int, beaconChainSlashingFactorDecrease uint64) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.DecreaseDelegatedShares(&_DelegationManagerStorage.TransactOpts, staker, curDepositShares, beaconChainSlashingFactorDecrease)
}
// DelegateTo is a paid mutator transaction binding the contract method 0xeea9064b.
@@ -1195,198 +1123,198 @@ func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) Dele
return _DelegationManagerStorage.Contract.DelegateTo(&_DelegationManagerStorage.TransactOpts, operator, approverSignatureAndExpiry, approverSalt)
}
-// DelegateToBySignature is a paid mutator transaction binding the contract method 0x7f548071.
+// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x3c651cf2.
//
-// Solidity: function delegateToBySignature(address staker, address operator, (bytes,uint256) stakerSignatureAndExpiry, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactor) DelegateToBySignature(opts *bind.TransactOpts, staker common.Address, operator common.Address, stakerSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) {
- return _DelegationManagerStorage.contract.Transact(opts, "delegateToBySignature", staker, operator, stakerSignatureAndExpiry, approverSignatureAndExpiry, approverSalt)
+// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 prevDepositShares, uint256 addedShares) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageTransactor) IncreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, prevDepositShares *big.Int, addedShares *big.Int) (*types.Transaction, error) {
+ return _DelegationManagerStorage.contract.Transact(opts, "increaseDelegatedShares", staker, strategy, prevDepositShares, addedShares)
}
-// DelegateToBySignature is a paid mutator transaction binding the contract method 0x7f548071.
+// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x3c651cf2.
//
-// Solidity: function delegateToBySignature(address staker, address operator, (bytes,uint256) stakerSignatureAndExpiry, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageSession) DelegateToBySignature(staker common.Address, operator common.Address, stakerSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.DelegateToBySignature(&_DelegationManagerStorage.TransactOpts, staker, operator, stakerSignatureAndExpiry, approverSignatureAndExpiry, approverSalt)
+// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 prevDepositShares, uint256 addedShares) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, prevDepositShares *big.Int, addedShares *big.Int) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.IncreaseDelegatedShares(&_DelegationManagerStorage.TransactOpts, staker, strategy, prevDepositShares, addedShares)
}
-// DelegateToBySignature is a paid mutator transaction binding the contract method 0x7f548071.
+// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x3c651cf2.
//
-// Solidity: function delegateToBySignature(address staker, address operator, (bytes,uint256) stakerSignatureAndExpiry, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) DelegateToBySignature(staker common.Address, operator common.Address, stakerSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.DelegateToBySignature(&_DelegationManagerStorage.TransactOpts, staker, operator, stakerSignatureAndExpiry, approverSignatureAndExpiry, approverSalt)
+// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 prevDepositShares, uint256 addedShares) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, prevDepositShares *big.Int, addedShares *big.Int) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.IncreaseDelegatedShares(&_DelegationManagerStorage.TransactOpts, staker, strategy, prevDepositShares, addedShares)
}
-// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae.
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
//
-// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 shares) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactor) IncreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _DelegationManagerStorage.contract.Transact(opts, "increaseDelegatedShares", staker, strategy, shares)
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _DelegationManagerStorage.contract.Transact(opts, "initialize", initialOwner, initialPausedStatus)
}
-// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae.
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
//
-// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 shares) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.IncreaseDelegatedShares(&_DelegationManagerStorage.TransactOpts, staker, strategy, shares)
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.Initialize(&_DelegationManagerStorage.TransactOpts, initialOwner, initialPausedStatus)
}
-// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae.
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
//
-// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 shares) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.IncreaseDelegatedShares(&_DelegationManagerStorage.TransactOpts, staker, strategy, shares)
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.Initialize(&_DelegationManagerStorage.TransactOpts, initialOwner, initialPausedStatus)
}
-// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0.
+// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0x54b7c96c.
//
-// Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactor) ModifyOperatorDetails(opts *bind.TransactOpts, newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) {
- return _DelegationManagerStorage.contract.Transact(opts, "modifyOperatorDetails", newOperatorDetails)
+// Solidity: function modifyOperatorDetails(address operator, address newDelegationApprover) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageTransactor) ModifyOperatorDetails(opts *bind.TransactOpts, operator common.Address, newDelegationApprover common.Address) (*types.Transaction, error) {
+ return _DelegationManagerStorage.contract.Transact(opts, "modifyOperatorDetails", operator, newDelegationApprover)
}
-// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0.
+// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0x54b7c96c.
//
-// Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageSession) ModifyOperatorDetails(newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.ModifyOperatorDetails(&_DelegationManagerStorage.TransactOpts, newOperatorDetails)
+// Solidity: function modifyOperatorDetails(address operator, address newDelegationApprover) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageSession) ModifyOperatorDetails(operator common.Address, newDelegationApprover common.Address) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.ModifyOperatorDetails(&_DelegationManagerStorage.TransactOpts, operator, newDelegationApprover)
}
-// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0.
+// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0x54b7c96c.
//
-// Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) ModifyOperatorDetails(newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.ModifyOperatorDetails(&_DelegationManagerStorage.TransactOpts, newOperatorDetails)
+// Solidity: function modifyOperatorDetails(address operator, address newDelegationApprover) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) ModifyOperatorDetails(operator common.Address, newDelegationApprover common.Address) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.ModifyOperatorDetails(&_DelegationManagerStorage.TransactOpts, operator, newDelegationApprover)
}
// QueueWithdrawals is a paid mutator transaction binding the contract method 0x0dd8dd02.
//
-// Solidity: function queueWithdrawals((address[],uint256[],address)[] queuedWithdrawalParams) returns(bytes32[])
-func (_DelegationManagerStorage *DelegationManagerStorageTransactor) QueueWithdrawals(opts *bind.TransactOpts, queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) {
- return _DelegationManagerStorage.contract.Transact(opts, "queueWithdrawals", queuedWithdrawalParams)
+// Solidity: function queueWithdrawals((address[],uint256[],address)[] params) returns(bytes32[])
+func (_DelegationManagerStorage *DelegationManagerStorageTransactor) QueueWithdrawals(opts *bind.TransactOpts, params []IDelegationManagerTypesQueuedWithdrawalParams) (*types.Transaction, error) {
+ return _DelegationManagerStorage.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 (_DelegationManagerStorage *DelegationManagerStorageSession) QueueWithdrawals(queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.QueueWithdrawals(&_DelegationManagerStorage.TransactOpts, queuedWithdrawalParams)
+// Solidity: function queueWithdrawals((address[],uint256[],address)[] params) returns(bytes32[])
+func (_DelegationManagerStorage *DelegationManagerStorageSession) QueueWithdrawals(params []IDelegationManagerTypesQueuedWithdrawalParams) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.QueueWithdrawals(&_DelegationManagerStorage.TransactOpts, params)
}
// QueueWithdrawals is a paid mutator transaction binding the contract method 0x0dd8dd02.
//
-// Solidity: function queueWithdrawals((address[],uint256[],address)[] queuedWithdrawalParams) returns(bytes32[])
-func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) QueueWithdrawals(queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.QueueWithdrawals(&_DelegationManagerStorage.TransactOpts, queuedWithdrawalParams)
+// Solidity: function queueWithdrawals((address[],uint256[],address)[] params) returns(bytes32[])
+func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) QueueWithdrawals(params []IDelegationManagerTypesQueuedWithdrawalParams) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.QueueWithdrawals(&_DelegationManagerStorage.TransactOpts, params)
}
-// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59.
+// Redelegate is a paid mutator transaction binding the contract method 0xa33a3433.
//
-// Solidity: function registerAsOperator((address,address,uint32) registeringOperatorDetails, string metadataURI) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactor) RegisterAsOperator(opts *bind.TransactOpts, registeringOperatorDetails IDelegationManagerOperatorDetails, metadataURI string) (*types.Transaction, error) {
- return _DelegationManagerStorage.contract.Transact(opts, "registerAsOperator", registeringOperatorDetails, metadataURI)
+// Solidity: function redelegate(address newOperator, (bytes,uint256) newOperatorApproverSig, bytes32 approverSalt) returns(bytes32[] withdrawalRoots)
+func (_DelegationManagerStorage *DelegationManagerStorageTransactor) Redelegate(opts *bind.TransactOpts, newOperator common.Address, newOperatorApproverSig ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) {
+ return _DelegationManagerStorage.contract.Transact(opts, "redelegate", newOperator, newOperatorApproverSig, approverSalt)
}
-// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59.
+// Redelegate is a paid mutator transaction binding the contract method 0xa33a3433.
//
-// Solidity: function registerAsOperator((address,address,uint32) registeringOperatorDetails, string metadataURI) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageSession) RegisterAsOperator(registeringOperatorDetails IDelegationManagerOperatorDetails, metadataURI string) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.RegisterAsOperator(&_DelegationManagerStorage.TransactOpts, registeringOperatorDetails, metadataURI)
+// Solidity: function redelegate(address newOperator, (bytes,uint256) newOperatorApproverSig, bytes32 approverSalt) returns(bytes32[] withdrawalRoots)
+func (_DelegationManagerStorage *DelegationManagerStorageSession) Redelegate(newOperator common.Address, newOperatorApproverSig ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.Redelegate(&_DelegationManagerStorage.TransactOpts, newOperator, newOperatorApproverSig, approverSalt)
}
-// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59.
+// Redelegate is a paid mutator transaction binding the contract method 0xa33a3433.
//
-// Solidity: function registerAsOperator((address,address,uint32) registeringOperatorDetails, string metadataURI) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) RegisterAsOperator(registeringOperatorDetails IDelegationManagerOperatorDetails, metadataURI string) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.RegisterAsOperator(&_DelegationManagerStorage.TransactOpts, registeringOperatorDetails, metadataURI)
+// Solidity: function redelegate(address newOperator, (bytes,uint256) newOperatorApproverSig, bytes32 approverSalt) returns(bytes32[] withdrawalRoots)
+func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) Redelegate(newOperator common.Address, newOperatorApproverSig ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.Redelegate(&_DelegationManagerStorage.TransactOpts, newOperator, newOperatorApproverSig, approverSalt)
}
-// SetMinWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x635bbd10.
+// RegisterAsOperator is a paid mutator transaction binding the contract method 0x2aa6d888.
//
-// Solidity: function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactor) SetMinWithdrawalDelayBlocks(opts *bind.TransactOpts, newMinWithdrawalDelayBlocks *big.Int) (*types.Transaction, error) {
- return _DelegationManagerStorage.contract.Transact(opts, "setMinWithdrawalDelayBlocks", newMinWithdrawalDelayBlocks)
+// Solidity: function registerAsOperator(address initDelegationApprover, uint32 allocationDelay, string metadataURI) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageTransactor) RegisterAsOperator(opts *bind.TransactOpts, initDelegationApprover common.Address, allocationDelay uint32, metadataURI string) (*types.Transaction, error) {
+ return _DelegationManagerStorage.contract.Transact(opts, "registerAsOperator", initDelegationApprover, allocationDelay, metadataURI)
}
-// SetMinWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x635bbd10.
+// RegisterAsOperator is a paid mutator transaction binding the contract method 0x2aa6d888.
//
-// Solidity: function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageSession) SetMinWithdrawalDelayBlocks(newMinWithdrawalDelayBlocks *big.Int) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.SetMinWithdrawalDelayBlocks(&_DelegationManagerStorage.TransactOpts, newMinWithdrawalDelayBlocks)
+// Solidity: function registerAsOperator(address initDelegationApprover, uint32 allocationDelay, string metadataURI) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageSession) RegisterAsOperator(initDelegationApprover common.Address, allocationDelay uint32, metadataURI string) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.RegisterAsOperator(&_DelegationManagerStorage.TransactOpts, initDelegationApprover, allocationDelay, metadataURI)
}
-// SetMinWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x635bbd10.
+// RegisterAsOperator is a paid mutator transaction binding the contract method 0x2aa6d888.
//
-// Solidity: function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) SetMinWithdrawalDelayBlocks(newMinWithdrawalDelayBlocks *big.Int) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.SetMinWithdrawalDelayBlocks(&_DelegationManagerStorage.TransactOpts, newMinWithdrawalDelayBlocks)
+// Solidity: function registerAsOperator(address initDelegationApprover, uint32 allocationDelay, string metadataURI) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) RegisterAsOperator(initDelegationApprover common.Address, allocationDelay uint32, metadataURI string) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.RegisterAsOperator(&_DelegationManagerStorage.TransactOpts, initDelegationApprover, allocationDelay, metadataURI)
}
-// SetStrategyWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x1522bf02.
+// SlashOperatorShares is a paid mutator transaction binding the contract method 0x601bb36f.
//
-// Solidity: function setStrategyWithdrawalDelayBlocks(address[] strategies, uint256[] withdrawalDelayBlocks) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactor) SetStrategyWithdrawalDelayBlocks(opts *bind.TransactOpts, strategies []common.Address, withdrawalDelayBlocks []*big.Int) (*types.Transaction, error) {
- return _DelegationManagerStorage.contract.Transact(opts, "setStrategyWithdrawalDelayBlocks", strategies, withdrawalDelayBlocks)
+// Solidity: function slashOperatorShares(address operator, address strategy, uint64 prevMaxMagnitude, uint64 newMaxMagnitude) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageTransactor) SlashOperatorShares(opts *bind.TransactOpts, operator common.Address, strategy common.Address, prevMaxMagnitude uint64, newMaxMagnitude uint64) (*types.Transaction, error) {
+ return _DelegationManagerStorage.contract.Transact(opts, "slashOperatorShares", operator, strategy, prevMaxMagnitude, newMaxMagnitude)
}
-// SetStrategyWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x1522bf02.
+// SlashOperatorShares is a paid mutator transaction binding the contract method 0x601bb36f.
//
-// Solidity: function setStrategyWithdrawalDelayBlocks(address[] strategies, uint256[] withdrawalDelayBlocks) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageSession) SetStrategyWithdrawalDelayBlocks(strategies []common.Address, withdrawalDelayBlocks []*big.Int) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.SetStrategyWithdrawalDelayBlocks(&_DelegationManagerStorage.TransactOpts, strategies, withdrawalDelayBlocks)
+// Solidity: function slashOperatorShares(address operator, address strategy, uint64 prevMaxMagnitude, uint64 newMaxMagnitude) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageSession) SlashOperatorShares(operator common.Address, strategy common.Address, prevMaxMagnitude uint64, newMaxMagnitude uint64) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.SlashOperatorShares(&_DelegationManagerStorage.TransactOpts, operator, strategy, prevMaxMagnitude, newMaxMagnitude)
}
-// SetStrategyWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x1522bf02.
+// SlashOperatorShares is a paid mutator transaction binding the contract method 0x601bb36f.
//
-// Solidity: function setStrategyWithdrawalDelayBlocks(address[] strategies, uint256[] withdrawalDelayBlocks) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) SetStrategyWithdrawalDelayBlocks(strategies []common.Address, withdrawalDelayBlocks []*big.Int) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.SetStrategyWithdrawalDelayBlocks(&_DelegationManagerStorage.TransactOpts, strategies, withdrawalDelayBlocks)
+// Solidity: function slashOperatorShares(address operator, address strategy, uint64 prevMaxMagnitude, uint64 newMaxMagnitude) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) SlashOperatorShares(operator common.Address, strategy common.Address, prevMaxMagnitude uint64, newMaxMagnitude uint64) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.SlashOperatorShares(&_DelegationManagerStorage.TransactOpts, operator, strategy, prevMaxMagnitude, newMaxMagnitude)
}
// Undelegate is a paid mutator transaction binding the contract method 0xda8be864.
//
-// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoot)
+// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoots)
func (_DelegationManagerStorage *DelegationManagerStorageTransactor) Undelegate(opts *bind.TransactOpts, staker common.Address) (*types.Transaction, error) {
return _DelegationManagerStorage.contract.Transact(opts, "undelegate", staker)
}
// Undelegate is a paid mutator transaction binding the contract method 0xda8be864.
//
-// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoot)
+// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoots)
func (_DelegationManagerStorage *DelegationManagerStorageSession) Undelegate(staker common.Address) (*types.Transaction, error) {
return _DelegationManagerStorage.Contract.Undelegate(&_DelegationManagerStorage.TransactOpts, staker)
}
// Undelegate is a paid mutator transaction binding the contract method 0xda8be864.
//
-// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoot)
+// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoots)
func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) Undelegate(staker common.Address) (*types.Transaction, error) {
return _DelegationManagerStorage.Contract.Undelegate(&_DelegationManagerStorage.TransactOpts, staker)
}
-// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8.
+// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x78296ec5.
//
-// Solidity: function updateOperatorMetadataURI(string metadataURI) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactor) UpdateOperatorMetadataURI(opts *bind.TransactOpts, metadataURI string) (*types.Transaction, error) {
- return _DelegationManagerStorage.contract.Transact(opts, "updateOperatorMetadataURI", metadataURI)
+// Solidity: function updateOperatorMetadataURI(address operator, string metadataURI) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageTransactor) UpdateOperatorMetadataURI(opts *bind.TransactOpts, operator common.Address, metadataURI string) (*types.Transaction, error) {
+ return _DelegationManagerStorage.contract.Transact(opts, "updateOperatorMetadataURI", operator, metadataURI)
}
-// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8.
+// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x78296ec5.
//
-// Solidity: function updateOperatorMetadataURI(string metadataURI) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageSession) UpdateOperatorMetadataURI(metadataURI string) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.UpdateOperatorMetadataURI(&_DelegationManagerStorage.TransactOpts, metadataURI)
+// Solidity: function updateOperatorMetadataURI(address operator, string metadataURI) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageSession) UpdateOperatorMetadataURI(operator common.Address, metadataURI string) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.UpdateOperatorMetadataURI(&_DelegationManagerStorage.TransactOpts, operator, metadataURI)
}
-// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8.
+// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x78296ec5.
//
-// Solidity: function updateOperatorMetadataURI(string metadataURI) returns()
-func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) UpdateOperatorMetadataURI(metadataURI string) (*types.Transaction, error) {
- return _DelegationManagerStorage.Contract.UpdateOperatorMetadataURI(&_DelegationManagerStorage.TransactOpts, metadataURI)
+// Solidity: function updateOperatorMetadataURI(address operator, string metadataURI) returns()
+func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) UpdateOperatorMetadataURI(operator common.Address, metadataURI string) (*types.Transaction, error) {
+ return _DelegationManagerStorage.Contract.UpdateOperatorMetadataURI(&_DelegationManagerStorage.TransactOpts, operator, metadataURI)
}
-// DelegationManagerStorageMinWithdrawalDelayBlocksSetIterator is returned from FilterMinWithdrawalDelayBlocksSet and is used to iterate over the raw logs and unpacked data for MinWithdrawalDelayBlocksSet events raised by the DelegationManagerStorage contract.
-type DelegationManagerStorageMinWithdrawalDelayBlocksSetIterator struct {
- Event *DelegationManagerStorageMinWithdrawalDelayBlocksSet // Event containing the contract specifics and raw log
+// DelegationManagerStorageDelegationApproverUpdatedIterator is returned from FilterDelegationApproverUpdated and is used to iterate over the raw logs and unpacked data for DelegationApproverUpdated events raised by the DelegationManagerStorage contract.
+type DelegationManagerStorageDelegationApproverUpdatedIterator struct {
+ Event *DelegationManagerStorageDelegationApproverUpdated // 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
@@ -1400,7 +1328,7 @@ type DelegationManagerStorageMinWithdrawalDelayBlocksSetIterator 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 *DelegationManagerStorageMinWithdrawalDelayBlocksSetIterator) Next() bool {
+func (it *DelegationManagerStorageDelegationApproverUpdatedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -1409,7 +1337,7 @@ func (it *DelegationManagerStorageMinWithdrawalDelayBlocksSetIterator) Next() bo
if it.done {
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStorageMinWithdrawalDelayBlocksSet)
+ it.Event = new(DelegationManagerStorageDelegationApproverUpdated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1424,7 +1352,7 @@ func (it *DelegationManagerStorageMinWithdrawalDelayBlocksSetIterator) Next() bo
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStorageMinWithdrawalDelayBlocksSet)
+ it.Event = new(DelegationManagerStorageDelegationApproverUpdated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1440,42 +1368,52 @@ func (it *DelegationManagerStorageMinWithdrawalDelayBlocksSetIterator) Next() bo
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *DelegationManagerStorageMinWithdrawalDelayBlocksSetIterator) Error() error {
+func (it *DelegationManagerStorageDelegationApproverUpdatedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *DelegationManagerStorageMinWithdrawalDelayBlocksSetIterator) Close() error {
+func (it *DelegationManagerStorageDelegationApproverUpdatedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// DelegationManagerStorageMinWithdrawalDelayBlocksSet represents a MinWithdrawalDelayBlocksSet event raised by the DelegationManagerStorage contract.
-type DelegationManagerStorageMinWithdrawalDelayBlocksSet struct {
- PreviousValue *big.Int
- NewValue *big.Int
- Raw types.Log // Blockchain specific contextual infos
+// DelegationManagerStorageDelegationApproverUpdated represents a DelegationApproverUpdated event raised by the DelegationManagerStorage contract.
+type DelegationManagerStorageDelegationApproverUpdated struct {
+ Operator common.Address
+ NewDelegationApprover common.Address
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterMinWithdrawalDelayBlocksSet is a free log retrieval operation binding the contract event 0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69.
+// FilterDelegationApproverUpdated is a free log retrieval operation binding the contract event 0x773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6.
//
-// Solidity: event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue)
-func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterMinWithdrawalDelayBlocksSet(opts *bind.FilterOpts) (*DelegationManagerStorageMinWithdrawalDelayBlocksSetIterator, error) {
+// Solidity: event DelegationApproverUpdated(address indexed operator, address newDelegationApprover)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterDelegationApproverUpdated(opts *bind.FilterOpts, operator []common.Address) (*DelegationManagerStorageDelegationApproverUpdatedIterator, error) {
+
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
- logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "MinWithdrawalDelayBlocksSet")
+ logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "DelegationApproverUpdated", operatorRule)
if err != nil {
return nil, err
}
- return &DelegationManagerStorageMinWithdrawalDelayBlocksSetIterator{contract: _DelegationManagerStorage.contract, event: "MinWithdrawalDelayBlocksSet", logs: logs, sub: sub}, nil
+ return &DelegationManagerStorageDelegationApproverUpdatedIterator{contract: _DelegationManagerStorage.contract, event: "DelegationApproverUpdated", logs: logs, sub: sub}, nil
}
-// WatchMinWithdrawalDelayBlocksSet is a free log subscription operation binding the contract event 0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69.
+// WatchDelegationApproverUpdated is a free log subscription operation binding the contract event 0x773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6.
//
-// Solidity: event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue)
-func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchMinWithdrawalDelayBlocksSet(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageMinWithdrawalDelayBlocksSet) (event.Subscription, error) {
+// Solidity: event DelegationApproverUpdated(address indexed operator, address newDelegationApprover)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchDelegationApproverUpdated(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageDelegationApproverUpdated, operator []common.Address) (event.Subscription, error) {
+
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
- logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "MinWithdrawalDelayBlocksSet")
+ logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "DelegationApproverUpdated", operatorRule)
if err != nil {
return nil, err
}
@@ -1485,8 +1423,8 @@ func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchMinWithd
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(DelegationManagerStorageMinWithdrawalDelayBlocksSet)
- if err := _DelegationManagerStorage.contract.UnpackLog(event, "MinWithdrawalDelayBlocksSet", log); err != nil {
+ event := new(DelegationManagerStorageDelegationApproverUpdated)
+ if err := _DelegationManagerStorage.contract.UnpackLog(event, "DelegationApproverUpdated", log); err != nil {
return err
}
event.Raw = log
@@ -1507,21 +1445,21 @@ func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchMinWithd
}), nil
}
-// ParseMinWithdrawalDelayBlocksSet is a log parse operation binding the contract event 0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69.
+// ParseDelegationApproverUpdated is a log parse operation binding the contract event 0x773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6.
//
-// Solidity: event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue)
-func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseMinWithdrawalDelayBlocksSet(log types.Log) (*DelegationManagerStorageMinWithdrawalDelayBlocksSet, error) {
- event := new(DelegationManagerStorageMinWithdrawalDelayBlocksSet)
- if err := _DelegationManagerStorage.contract.UnpackLog(event, "MinWithdrawalDelayBlocksSet", log); err != nil {
+// Solidity: event DelegationApproverUpdated(address indexed operator, address newDelegationApprover)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseDelegationApproverUpdated(log types.Log) (*DelegationManagerStorageDelegationApproverUpdated, error) {
+ event := new(DelegationManagerStorageDelegationApproverUpdated)
+ if err := _DelegationManagerStorage.contract.UnpackLog(event, "DelegationApproverUpdated", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// DelegationManagerStorageOperatorDetailsModifiedIterator is returned from FilterOperatorDetailsModified and is used to iterate over the raw logs and unpacked data for OperatorDetailsModified events raised by the DelegationManagerStorage contract.
-type DelegationManagerStorageOperatorDetailsModifiedIterator struct {
- Event *DelegationManagerStorageOperatorDetailsModified // Event containing the contract specifics and raw log
+// DelegationManagerStorageDepositScalingFactorUpdatedIterator is returned from FilterDepositScalingFactorUpdated and is used to iterate over the raw logs and unpacked data for DepositScalingFactorUpdated events raised by the DelegationManagerStorage contract.
+type DelegationManagerStorageDepositScalingFactorUpdatedIterator struct {
+ Event *DelegationManagerStorageDepositScalingFactorUpdated // 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
@@ -1535,7 +1473,7 @@ type DelegationManagerStorageOperatorDetailsModifiedIterator 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 *DelegationManagerStorageOperatorDetailsModifiedIterator) Next() bool {
+func (it *DelegationManagerStorageDepositScalingFactorUpdatedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -1544,7 +1482,7 @@ func (it *DelegationManagerStorageOperatorDetailsModifiedIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStorageOperatorDetailsModified)
+ it.Event = new(DelegationManagerStorageDepositScalingFactorUpdated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1559,7 +1497,7 @@ func (it *DelegationManagerStorageOperatorDetailsModifiedIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStorageOperatorDetailsModified)
+ it.Event = new(DelegationManagerStorageDepositScalingFactorUpdated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1575,52 +1513,43 @@ func (it *DelegationManagerStorageOperatorDetailsModifiedIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *DelegationManagerStorageOperatorDetailsModifiedIterator) Error() error {
+func (it *DelegationManagerStorageDepositScalingFactorUpdatedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *DelegationManagerStorageOperatorDetailsModifiedIterator) Close() error {
+func (it *DelegationManagerStorageDepositScalingFactorUpdatedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// DelegationManagerStorageOperatorDetailsModified represents a OperatorDetailsModified event raised by the DelegationManagerStorage contract.
-type DelegationManagerStorageOperatorDetailsModified struct {
- Operator common.Address
- NewOperatorDetails IDelegationManagerOperatorDetails
- Raw types.Log // Blockchain specific contextual infos
+// DelegationManagerStorageDepositScalingFactorUpdated represents a DepositScalingFactorUpdated event raised by the DelegationManagerStorage contract.
+type DelegationManagerStorageDepositScalingFactorUpdated struct {
+ Staker common.Address
+ Strategy common.Address
+ NewDepositScalingFactor *big.Int
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterOperatorDetailsModified is a free log retrieval operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac.
+// FilterDepositScalingFactorUpdated is a free log retrieval operation binding the contract event 0x8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f.
//
-// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails)
-func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterOperatorDetailsModified(opts *bind.FilterOpts, operator []common.Address) (*DelegationManagerStorageOperatorDetailsModifiedIterator, error) {
-
- var operatorRule []interface{}
- for _, operatorItem := range operator {
- operatorRule = append(operatorRule, operatorItem)
- }
+// Solidity: event DepositScalingFactorUpdated(address staker, address strategy, uint256 newDepositScalingFactor)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterDepositScalingFactorUpdated(opts *bind.FilterOpts) (*DelegationManagerStorageDepositScalingFactorUpdatedIterator, error) {
- logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "OperatorDetailsModified", operatorRule)
+ logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "DepositScalingFactorUpdated")
if err != nil {
return nil, err
}
- return &DelegationManagerStorageOperatorDetailsModifiedIterator{contract: _DelegationManagerStorage.contract, event: "OperatorDetailsModified", logs: logs, sub: sub}, nil
+ return &DelegationManagerStorageDepositScalingFactorUpdatedIterator{contract: _DelegationManagerStorage.contract, event: "DepositScalingFactorUpdated", logs: logs, sub: sub}, nil
}
-// WatchOperatorDetailsModified is a free log subscription operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac.
+// WatchDepositScalingFactorUpdated is a free log subscription operation binding the contract event 0x8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f.
//
-// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails)
-func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchOperatorDetailsModified(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageOperatorDetailsModified, operator []common.Address) (event.Subscription, error) {
-
- var operatorRule []interface{}
- for _, operatorItem := range operator {
- operatorRule = append(operatorRule, operatorItem)
- }
+// Solidity: event DepositScalingFactorUpdated(address staker, address strategy, uint256 newDepositScalingFactor)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchDepositScalingFactorUpdated(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageDepositScalingFactorUpdated) (event.Subscription, error) {
- logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "OperatorDetailsModified", operatorRule)
+ logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "DepositScalingFactorUpdated")
if err != nil {
return nil, err
}
@@ -1630,8 +1559,8 @@ func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchOperator
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(DelegationManagerStorageOperatorDetailsModified)
- if err := _DelegationManagerStorage.contract.UnpackLog(event, "OperatorDetailsModified", log); err != nil {
+ event := new(DelegationManagerStorageDepositScalingFactorUpdated)
+ if err := _DelegationManagerStorage.contract.UnpackLog(event, "DepositScalingFactorUpdated", log); err != nil {
return err
}
event.Raw = log
@@ -1652,12 +1581,12 @@ func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchOperator
}), nil
}
-// ParseOperatorDetailsModified is a log parse operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac.
+// ParseDepositScalingFactorUpdated is a log parse operation binding the contract event 0x8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f.
//
-// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails)
-func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseOperatorDetailsModified(log types.Log) (*DelegationManagerStorageOperatorDetailsModified, error) {
- event := new(DelegationManagerStorageOperatorDetailsModified)
- if err := _DelegationManagerStorage.contract.UnpackLog(event, "OperatorDetailsModified", log); err != nil {
+// Solidity: event DepositScalingFactorUpdated(address staker, address strategy, uint256 newDepositScalingFactor)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseDepositScalingFactorUpdated(log types.Log) (*DelegationManagerStorageDepositScalingFactorUpdated, error) {
+ event := new(DelegationManagerStorageDepositScalingFactorUpdated)
+ if err := _DelegationManagerStorage.contract.UnpackLog(event, "DepositScalingFactorUpdated", log); err != nil {
return nil, err
}
event.Raw = log
@@ -1878,14 +1807,14 @@ func (it *DelegationManagerStorageOperatorRegisteredIterator) Close() error {
// DelegationManagerStorageOperatorRegistered represents a OperatorRegistered event raised by the DelegationManagerStorage contract.
type DelegationManagerStorageOperatorRegistered struct {
- Operator common.Address
- OperatorDetails IDelegationManagerOperatorDetails
- Raw types.Log // Blockchain specific contextual infos
+ Operator common.Address
+ DelegationApprover common.Address
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2.
+// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0xa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c1.
//
-// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails)
+// Solidity: event OperatorRegistered(address indexed operator, address delegationApprover)
func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address) (*DelegationManagerStorageOperatorRegisteredIterator, error) {
var operatorRule []interface{}
@@ -1900,9 +1829,9 @@ func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterOperato
return &DelegationManagerStorageOperatorRegisteredIterator{contract: _DelegationManagerStorage.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil
}
-// WatchOperatorRegistered is a free log subscription operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2.
+// WatchOperatorRegistered is a free log subscription operation binding the contract event 0xa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c1.
//
-// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails)
+// Solidity: event OperatorRegistered(address indexed operator, address delegationApprover)
func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageOperatorRegistered, operator []common.Address) (event.Subscription, error) {
var operatorRule []interface{}
@@ -1942,9 +1871,9 @@ func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchOperator
}), nil
}
-// ParseOperatorRegistered is a log parse operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2.
+// ParseOperatorRegistered is a log parse operation binding the contract event 0xa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c1.
//
-// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails)
+// Solidity: event OperatorRegistered(address indexed operator, address delegationApprover)
func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseOperatorRegistered(log types.Log) (*DelegationManagerStorageOperatorRegistered, error) {
event := new(DelegationManagerStorageOperatorRegistered)
if err := _DelegationManagerStorage.contract.UnpackLog(event, "OperatorRegistered", log); err != nil {
@@ -2248,9 +2177,9 @@ func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseOperator
return event, nil
}
-// DelegationManagerStorageStakerDelegatedIterator is returned from FilterStakerDelegated and is used to iterate over the raw logs and unpacked data for StakerDelegated events raised by the DelegationManagerStorage contract.
-type DelegationManagerStorageStakerDelegatedIterator struct {
- Event *DelegationManagerStorageStakerDelegated // Event containing the contract specifics and raw log
+// DelegationManagerStorageSlashingWithdrawalCompletedIterator is returned from FilterSlashingWithdrawalCompleted and is used to iterate over the raw logs and unpacked data for SlashingWithdrawalCompleted events raised by the DelegationManagerStorage contract.
+type DelegationManagerStorageSlashingWithdrawalCompletedIterator struct {
+ Event *DelegationManagerStorageSlashingWithdrawalCompleted // 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
@@ -2264,7 +2193,7 @@ type DelegationManagerStorageStakerDelegatedIterator 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 *DelegationManagerStorageStakerDelegatedIterator) Next() bool {
+func (it *DelegationManagerStorageSlashingWithdrawalCompletedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -2273,7 +2202,7 @@ func (it *DelegationManagerStorageStakerDelegatedIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStorageStakerDelegated)
+ it.Event = new(DelegationManagerStorageSlashingWithdrawalCompleted)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2288,7 +2217,7 @@ func (it *DelegationManagerStorageStakerDelegatedIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStorageStakerDelegated)
+ it.Event = new(DelegationManagerStorageSlashingWithdrawalCompleted)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2304,60 +2233,41 @@ func (it *DelegationManagerStorageStakerDelegatedIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *DelegationManagerStorageStakerDelegatedIterator) Error() error {
+func (it *DelegationManagerStorageSlashingWithdrawalCompletedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *DelegationManagerStorageStakerDelegatedIterator) Close() error {
+func (it *DelegationManagerStorageSlashingWithdrawalCompletedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// DelegationManagerStorageStakerDelegated represents a StakerDelegated event raised by the DelegationManagerStorage contract.
-type DelegationManagerStorageStakerDelegated struct {
- Staker common.Address
- Operator common.Address
- Raw types.Log // Blockchain specific contextual infos
+// DelegationManagerStorageSlashingWithdrawalCompleted represents a SlashingWithdrawalCompleted event raised by the DelegationManagerStorage contract.
+type DelegationManagerStorageSlashingWithdrawalCompleted 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 (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterStakerDelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*DelegationManagerStorageStakerDelegatedIterator, error) {
+// Solidity: event SlashingWithdrawalCompleted(bytes32 withdrawalRoot)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterSlashingWithdrawalCompleted(opts *bind.FilterOpts) (*DelegationManagerStorageSlashingWithdrawalCompletedIterator, 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 := _DelegationManagerStorage.contract.FilterLogs(opts, "StakerDelegated", stakerRule, operatorRule)
+ logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "SlashingWithdrawalCompleted")
if err != nil {
return nil, err
}
- return &DelegationManagerStorageStakerDelegatedIterator{contract: _DelegationManagerStorage.contract, event: "StakerDelegated", logs: logs, sub: sub}, nil
+ return &DelegationManagerStorageSlashingWithdrawalCompletedIterator{contract: _DelegationManagerStorage.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 (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchStakerDelegated(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageStakerDelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) {
+// Solidity: event SlashingWithdrawalCompleted(bytes32 withdrawalRoot)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchSlashingWithdrawalCompleted(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageSlashingWithdrawalCompleted) (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 := _DelegationManagerStorage.contract.WatchLogs(opts, "StakerDelegated", stakerRule, operatorRule)
+ logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "SlashingWithdrawalCompleted")
if err != nil {
return nil, err
}
@@ -2367,8 +2277,8 @@ func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchStakerDe
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(DelegationManagerStorageStakerDelegated)
- if err := _DelegationManagerStorage.contract.UnpackLog(event, "StakerDelegated", log); err != nil {
+ event := new(DelegationManagerStorageSlashingWithdrawalCompleted)
+ if err := _DelegationManagerStorage.contract.UnpackLog(event, "SlashingWithdrawalCompleted", log); err != nil {
return err
}
event.Raw = log
@@ -2389,21 +2299,21 @@ func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchStakerDe
}), 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 (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseStakerDelegated(log types.Log) (*DelegationManagerStorageStakerDelegated, error) {
- event := new(DelegationManagerStorageStakerDelegated)
- if err := _DelegationManagerStorage.contract.UnpackLog(event, "StakerDelegated", log); err != nil {
+// Solidity: event SlashingWithdrawalCompleted(bytes32 withdrawalRoot)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseSlashingWithdrawalCompleted(log types.Log) (*DelegationManagerStorageSlashingWithdrawalCompleted, error) {
+ event := new(DelegationManagerStorageSlashingWithdrawalCompleted)
+ if err := _DelegationManagerStorage.contract.UnpackLog(event, "SlashingWithdrawalCompleted", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// DelegationManagerStorageStakerForceUndelegatedIterator is returned from FilterStakerForceUndelegated and is used to iterate over the raw logs and unpacked data for StakerForceUndelegated events raised by the DelegationManagerStorage contract.
-type DelegationManagerStorageStakerForceUndelegatedIterator struct {
- Event *DelegationManagerStorageStakerForceUndelegated // Event containing the contract specifics and raw log
+// DelegationManagerStorageSlashingWithdrawalQueuedIterator is returned from FilterSlashingWithdrawalQueued and is used to iterate over the raw logs and unpacked data for SlashingWithdrawalQueued events raised by the DelegationManagerStorage contract.
+type DelegationManagerStorageSlashingWithdrawalQueuedIterator struct {
+ Event *DelegationManagerStorageSlashingWithdrawalQueued // 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
@@ -2417,7 +2327,7 @@ type DelegationManagerStorageStakerForceUndelegatedIterator 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 *DelegationManagerStorageStakerForceUndelegatedIterator) Next() bool {
+func (it *DelegationManagerStorageSlashingWithdrawalQueuedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -2426,7 +2336,7 @@ func (it *DelegationManagerStorageStakerForceUndelegatedIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStorageStakerForceUndelegated)
+ it.Event = new(DelegationManagerStorageSlashingWithdrawalQueued)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2441,7 +2351,7 @@ func (it *DelegationManagerStorageStakerForceUndelegatedIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStorageStakerForceUndelegated)
+ it.Event = new(DelegationManagerStorageSlashingWithdrawalQueued)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2457,60 +2367,43 @@ func (it *DelegationManagerStorageStakerForceUndelegatedIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *DelegationManagerStorageStakerForceUndelegatedIterator) Error() error {
+func (it *DelegationManagerStorageSlashingWithdrawalQueuedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *DelegationManagerStorageStakerForceUndelegatedIterator) Close() error {
+func (it *DelegationManagerStorageSlashingWithdrawalQueuedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// DelegationManagerStorageStakerForceUndelegated represents a StakerForceUndelegated event raised by the DelegationManagerStorage contract.
-type DelegationManagerStorageStakerForceUndelegated struct {
- Staker common.Address
- Operator common.Address
- Raw types.Log // Blockchain specific contextual infos
+// DelegationManagerStorageSlashingWithdrawalQueued represents a SlashingWithdrawalQueued event raised by the DelegationManagerStorage contract.
+type DelegationManagerStorageSlashingWithdrawalQueued struct {
+ WithdrawalRoot [32]byte
+ Withdrawal IDelegationManagerTypesWithdrawal
+ SharesToWithdraw []*big.Int
+ 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 0x26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30.
//
-// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator)
-func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterStakerForceUndelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*DelegationManagerStorageStakerForceUndelegatedIterator, 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, uint256[] sharesToWithdraw)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterSlashingWithdrawalQueued(opts *bind.FilterOpts) (*DelegationManagerStorageSlashingWithdrawalQueuedIterator, error) {
- logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule)
+ logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "SlashingWithdrawalQueued")
if err != nil {
return nil, err
}
- return &DelegationManagerStorageStakerForceUndelegatedIterator{contract: _DelegationManagerStorage.contract, event: "StakerForceUndelegated", logs: logs, sub: sub}, nil
+ return &DelegationManagerStorageSlashingWithdrawalQueuedIterator{contract: _DelegationManagerStorage.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 0x26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30.
//
-// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator)
-func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchStakerForceUndelegated(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageStakerForceUndelegated, 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, uint256[] sharesToWithdraw)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchSlashingWithdrawalQueued(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageSlashingWithdrawalQueued) (event.Subscription, error) {
- logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule)
+ logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "SlashingWithdrawalQueued")
if err != nil {
return nil, err
}
@@ -2520,8 +2413,8 @@ func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchStakerFo
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(DelegationManagerStorageStakerForceUndelegated)
- if err := _DelegationManagerStorage.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil {
+ event := new(DelegationManagerStorageSlashingWithdrawalQueued)
+ if err := _DelegationManagerStorage.contract.UnpackLog(event, "SlashingWithdrawalQueued", log); err != nil {
return err
}
event.Raw = log
@@ -2542,21 +2435,21 @@ func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchStakerFo
}), nil
}
-// ParseStakerForceUndelegated is a log parse operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a.
+// ParseSlashingWithdrawalQueued is a log parse operation binding the contract event 0x26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30.
//
-// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator)
-func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseStakerForceUndelegated(log types.Log) (*DelegationManagerStorageStakerForceUndelegated, error) {
- event := new(DelegationManagerStorageStakerForceUndelegated)
- if err := _DelegationManagerStorage.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil {
+// Solidity: event SlashingWithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal, uint256[] sharesToWithdraw)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseSlashingWithdrawalQueued(log types.Log) (*DelegationManagerStorageSlashingWithdrawalQueued, error) {
+ event := new(DelegationManagerStorageSlashingWithdrawalQueued)
+ if err := _DelegationManagerStorage.contract.UnpackLog(event, "SlashingWithdrawalQueued", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// DelegationManagerStorageStakerUndelegatedIterator is returned from FilterStakerUndelegated and is used to iterate over the raw logs and unpacked data for StakerUndelegated events raised by the DelegationManagerStorage contract.
-type DelegationManagerStorageStakerUndelegatedIterator struct {
- Event *DelegationManagerStorageStakerUndelegated // Event containing the contract specifics and raw log
+// DelegationManagerStorageStakerDelegatedIterator is returned from FilterStakerDelegated and is used to iterate over the raw logs and unpacked data for StakerDelegated events raised by the DelegationManagerStorage contract.
+type DelegationManagerStorageStakerDelegatedIterator struct {
+ Event *DelegationManagerStorageStakerDelegated // 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
@@ -2570,7 +2463,7 @@ type DelegationManagerStorageStakerUndelegatedIterator 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 *DelegationManagerStorageStakerUndelegatedIterator) Next() bool {
+func (it *DelegationManagerStorageStakerDelegatedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -2579,7 +2472,7 @@ func (it *DelegationManagerStorageStakerUndelegatedIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStorageStakerUndelegated)
+ it.Event = new(DelegationManagerStorageStakerDelegated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2594,7 +2487,7 @@ func (it *DelegationManagerStorageStakerUndelegatedIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStorageStakerUndelegated)
+ it.Event = new(DelegationManagerStorageStakerDelegated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2610,28 +2503,28 @@ func (it *DelegationManagerStorageStakerUndelegatedIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *DelegationManagerStorageStakerUndelegatedIterator) Error() error {
+func (it *DelegationManagerStorageStakerDelegatedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *DelegationManagerStorageStakerUndelegatedIterator) Close() error {
+func (it *DelegationManagerStorageStakerDelegatedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// DelegationManagerStorageStakerUndelegated represents a StakerUndelegated event raised by the DelegationManagerStorage contract.
-type DelegationManagerStorageStakerUndelegated struct {
+// DelegationManagerStorageStakerDelegated represents a StakerDelegated event raised by the DelegationManagerStorage contract.
+type DelegationManagerStorageStakerDelegated 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 (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterStakerUndelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*DelegationManagerStorageStakerUndelegatedIterator, error) {
+// Solidity: event StakerDelegated(address indexed staker, address indexed operator)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterStakerDelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*DelegationManagerStorageStakerDelegatedIterator, error) {
var stakerRule []interface{}
for _, stakerItem := range staker {
@@ -2642,17 +2535,17 @@ func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterStakerU
operatorRule = append(operatorRule, operatorItem)
}
- logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "StakerUndelegated", stakerRule, operatorRule)
+ logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "StakerDelegated", stakerRule, operatorRule)
if err != nil {
return nil, err
}
- return &DelegationManagerStorageStakerUndelegatedIterator{contract: _DelegationManagerStorage.contract, event: "StakerUndelegated", logs: logs, sub: sub}, nil
+ return &DelegationManagerStorageStakerDelegatedIterator{contract: _DelegationManagerStorage.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 (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchStakerUndelegated(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageStakerUndelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) {
+// Solidity: event StakerDelegated(address indexed staker, address indexed operator)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchStakerDelegated(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageStakerDelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) {
var stakerRule []interface{}
for _, stakerItem := range staker {
@@ -2663,7 +2556,7 @@ func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchStakerUn
operatorRule = append(operatorRule, operatorItem)
}
- logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "StakerUndelegated", stakerRule, operatorRule)
+ logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "StakerDelegated", stakerRule, operatorRule)
if err != nil {
return nil, err
}
@@ -2673,8 +2566,8 @@ func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchStakerUn
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(DelegationManagerStorageStakerUndelegated)
- if err := _DelegationManagerStorage.contract.UnpackLog(event, "StakerUndelegated", log); err != nil {
+ event := new(DelegationManagerStorageStakerDelegated)
+ if err := _DelegationManagerStorage.contract.UnpackLog(event, "StakerDelegated", log); err != nil {
return err
}
event.Raw = log
@@ -2695,21 +2588,21 @@ func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchStakerUn
}), 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 (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseStakerUndelegated(log types.Log) (*DelegationManagerStorageStakerUndelegated, error) {
- event := new(DelegationManagerStorageStakerUndelegated)
- if err := _DelegationManagerStorage.contract.UnpackLog(event, "StakerUndelegated", log); err != nil {
+// Solidity: event StakerDelegated(address indexed staker, address indexed operator)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseStakerDelegated(log types.Log) (*DelegationManagerStorageStakerDelegated, error) {
+ event := new(DelegationManagerStorageStakerDelegated)
+ if err := _DelegationManagerStorage.contract.UnpackLog(event, "StakerDelegated", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// DelegationManagerStorageStrategyWithdrawalDelayBlocksSetIterator is returned from FilterStrategyWithdrawalDelayBlocksSet and is used to iterate over the raw logs and unpacked data for StrategyWithdrawalDelayBlocksSet events raised by the DelegationManagerStorage contract.
-type DelegationManagerStorageStrategyWithdrawalDelayBlocksSetIterator struct {
- Event *DelegationManagerStorageStrategyWithdrawalDelayBlocksSet // Event containing the contract specifics and raw log
+// DelegationManagerStorageStakerForceUndelegatedIterator is returned from FilterStakerForceUndelegated and is used to iterate over the raw logs and unpacked data for StakerForceUndelegated events raised by the DelegationManagerStorage contract.
+type DelegationManagerStorageStakerForceUndelegatedIterator struct {
+ Event *DelegationManagerStorageStakerForceUndelegated // 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
@@ -2723,7 +2616,7 @@ type DelegationManagerStorageStrategyWithdrawalDelayBlocksSetIterator 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 *DelegationManagerStorageStrategyWithdrawalDelayBlocksSetIterator) Next() bool {
+func (it *DelegationManagerStorageStakerForceUndelegatedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -2732,7 +2625,7 @@ func (it *DelegationManagerStorageStrategyWithdrawalDelayBlocksSetIterator) Next
if it.done {
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStorageStrategyWithdrawalDelayBlocksSet)
+ it.Event = new(DelegationManagerStorageStakerForceUndelegated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2747,7 +2640,7 @@ func (it *DelegationManagerStorageStrategyWithdrawalDelayBlocksSetIterator) Next
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStorageStrategyWithdrawalDelayBlocksSet)
+ it.Event = new(DelegationManagerStorageStakerForceUndelegated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2763,177 +2656,60 @@ func (it *DelegationManagerStorageStrategyWithdrawalDelayBlocksSetIterator) Next
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *DelegationManagerStorageStrategyWithdrawalDelayBlocksSetIterator) Error() error {
+func (it *DelegationManagerStorageStakerForceUndelegatedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *DelegationManagerStorageStrategyWithdrawalDelayBlocksSetIterator) Close() error {
+func (it *DelegationManagerStorageStakerForceUndelegatedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// DelegationManagerStorageStrategyWithdrawalDelayBlocksSet represents a StrategyWithdrawalDelayBlocksSet event raised by the DelegationManagerStorage contract.
-type DelegationManagerStorageStrategyWithdrawalDelayBlocksSet struct {
- Strategy common.Address
- PreviousValue *big.Int
- NewValue *big.Int
- Raw types.Log // Blockchain specific contextual infos
+// DelegationManagerStorageStakerForceUndelegated represents a StakerForceUndelegated event raised by the DelegationManagerStorage contract.
+type DelegationManagerStorageStakerForceUndelegated 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 (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterStrategyWithdrawalDelayBlocksSet(opts *bind.FilterOpts) (*DelegationManagerStorageStrategyWithdrawalDelayBlocksSetIterator, error) {
+// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterStakerForceUndelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*DelegationManagerStorageStakerForceUndelegatedIterator, error) {
- logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "StrategyWithdrawalDelayBlocksSet")
- if err != nil {
- return nil, err
+ var stakerRule []interface{}
+ for _, stakerItem := range staker {
+ stakerRule = append(stakerRule, stakerItem)
+ }
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
}
- return &DelegationManagerStorageStrategyWithdrawalDelayBlocksSetIterator{contract: _DelegationManagerStorage.contract, event: "StrategyWithdrawalDelayBlocksSet", logs: logs, sub: sub}, nil
-}
-
-// WatchStrategyWithdrawalDelayBlocksSet is a free log subscription operation binding the contract event 0x0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d.
-//
-// Solidity: event StrategyWithdrawalDelayBlocksSet(address strategy, uint256 previousValue, uint256 newValue)
-func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchStrategyWithdrawalDelayBlocksSet(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageStrategyWithdrawalDelayBlocksSet) (event.Subscription, error) {
- logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "StrategyWithdrawalDelayBlocksSet")
+ logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule)
if err != nil {
return nil, err
}
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(DelegationManagerStorageStrategyWithdrawalDelayBlocksSet)
- if err := _DelegationManagerStorage.contract.UnpackLog(event, "StrategyWithdrawalDelayBlocksSet", 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
+ return &DelegationManagerStorageStakerForceUndelegatedIterator{contract: _DelegationManagerStorage.contract, event: "StakerForceUndelegated", logs: logs, sub: sub}, nil
}
-// ParseStrategyWithdrawalDelayBlocksSet is a log parse 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 (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseStrategyWithdrawalDelayBlocksSet(log types.Log) (*DelegationManagerStorageStrategyWithdrawalDelayBlocksSet, error) {
- event := new(DelegationManagerStorageStrategyWithdrawalDelayBlocksSet)
- if err := _DelegationManagerStorage.contract.UnpackLog(event, "StrategyWithdrawalDelayBlocksSet", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
-// DelegationManagerStorageWithdrawalCompletedIterator is returned from FilterWithdrawalCompleted and is used to iterate over the raw logs and unpacked data for WithdrawalCompleted events raised by the DelegationManagerStorage contract.
-type DelegationManagerStorageWithdrawalCompletedIterator struct {
- Event *DelegationManagerStorageWithdrawalCompleted // 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 *DelegationManagerStorageWithdrawalCompletedIterator) 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(DelegationManagerStorageWithdrawalCompleted)
- 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(DelegationManagerStorageWithdrawalCompleted)
- if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
- it.fail = err
- return false
- }
- it.Event.Raw = log
- return true
+// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchStakerForceUndelegated(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageStakerForceUndelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) {
- case err := <-it.sub.Err():
- it.done = true
- it.fail = err
- return it.Next()
+ var stakerRule []interface{}
+ for _, stakerItem := range staker {
+ stakerRule = append(stakerRule, stakerItem)
}
-}
-
-// Error returns any retrieval or parsing error occurred during filtering.
-func (it *DelegationManagerStorageWithdrawalCompletedIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *DelegationManagerStorageWithdrawalCompletedIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// DelegationManagerStorageWithdrawalCompleted represents a WithdrawalCompleted event raised by the DelegationManagerStorage contract.
-type DelegationManagerStorageWithdrawalCompleted struct {
- WithdrawalRoot [32]byte
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterWithdrawalCompleted is a free log retrieval operation binding the contract event 0xc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d.
-//
-// Solidity: event WithdrawalCompleted(bytes32 withdrawalRoot)
-func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterWithdrawalCompleted(opts *bind.FilterOpts) (*DelegationManagerStorageWithdrawalCompletedIterator, error) {
-
- logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "WithdrawalCompleted")
- if err != nil {
- return nil, err
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
}
- return &DelegationManagerStorageWithdrawalCompletedIterator{contract: _DelegationManagerStorage.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 (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchWithdrawalCompleted(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageWithdrawalCompleted) (event.Subscription, error) {
- logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "WithdrawalCompleted")
+ logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule)
if err != nil {
return nil, err
}
@@ -2943,8 +2719,8 @@ func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchWithdraw
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(DelegationManagerStorageWithdrawalCompleted)
- if err := _DelegationManagerStorage.contract.UnpackLog(event, "WithdrawalCompleted", log); err != nil {
+ event := new(DelegationManagerStorageStakerForceUndelegated)
+ if err := _DelegationManagerStorage.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil {
return err
}
event.Raw = log
@@ -2965,21 +2741,21 @@ func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchWithdraw
}), nil
}
-// ParseWithdrawalCompleted is a log parse operation binding the contract event 0xc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d.
+// ParseStakerForceUndelegated is a log parse operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a.
//
-// Solidity: event WithdrawalCompleted(bytes32 withdrawalRoot)
-func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseWithdrawalCompleted(log types.Log) (*DelegationManagerStorageWithdrawalCompleted, error) {
- event := new(DelegationManagerStorageWithdrawalCompleted)
- if err := _DelegationManagerStorage.contract.UnpackLog(event, "WithdrawalCompleted", log); err != nil {
+// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseStakerForceUndelegated(log types.Log) (*DelegationManagerStorageStakerForceUndelegated, error) {
+ event := new(DelegationManagerStorageStakerForceUndelegated)
+ if err := _DelegationManagerStorage.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// DelegationManagerStorageWithdrawalQueuedIterator is returned from FilterWithdrawalQueued and is used to iterate over the raw logs and unpacked data for WithdrawalQueued events raised by the DelegationManagerStorage contract.
-type DelegationManagerStorageWithdrawalQueuedIterator struct {
- Event *DelegationManagerStorageWithdrawalQueued // Event containing the contract specifics and raw log
+// DelegationManagerStorageStakerUndelegatedIterator is returned from FilterStakerUndelegated and is used to iterate over the raw logs and unpacked data for StakerUndelegated events raised by the DelegationManagerStorage contract.
+type DelegationManagerStorageStakerUndelegatedIterator struct {
+ Event *DelegationManagerStorageStakerUndelegated // 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
@@ -2993,7 +2769,7 @@ type DelegationManagerStorageWithdrawalQueuedIterator 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 *DelegationManagerStorageWithdrawalQueuedIterator) Next() bool {
+func (it *DelegationManagerStorageStakerUndelegatedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -3002,7 +2778,7 @@ func (it *DelegationManagerStorageWithdrawalQueuedIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStorageWithdrawalQueued)
+ it.Event = new(DelegationManagerStorageStakerUndelegated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -3017,7 +2793,7 @@ func (it *DelegationManagerStorageWithdrawalQueuedIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(DelegationManagerStorageWithdrawalQueued)
+ it.Event = new(DelegationManagerStorageStakerUndelegated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -3033,42 +2809,60 @@ func (it *DelegationManagerStorageWithdrawalQueuedIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *DelegationManagerStorageWithdrawalQueuedIterator) Error() error {
+func (it *DelegationManagerStorageStakerUndelegatedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *DelegationManagerStorageWithdrawalQueuedIterator) Close() error {
+func (it *DelegationManagerStorageStakerUndelegatedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// DelegationManagerStorageWithdrawalQueued represents a WithdrawalQueued event raised by the DelegationManagerStorage contract.
-type DelegationManagerStorageWithdrawalQueued struct {
- WithdrawalRoot [32]byte
- Withdrawal IDelegationManagerWithdrawal
- Raw types.Log // Blockchain specific contextual infos
+// DelegationManagerStorageStakerUndelegated represents a StakerUndelegated event raised by the DelegationManagerStorage contract.
+type DelegationManagerStorageStakerUndelegated struct {
+ Staker common.Address
+ Operator common.Address
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterWithdrawalQueued is a free log retrieval operation binding the contract event 0x9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9.
+// FilterStakerUndelegated is a free log retrieval operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676.
//
-// Solidity: event WithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal)
-func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterWithdrawalQueued(opts *bind.FilterOpts) (*DelegationManagerStorageWithdrawalQueuedIterator, error) {
+// Solidity: event StakerUndelegated(address indexed staker, address indexed operator)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterStakerUndelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*DelegationManagerStorageStakerUndelegatedIterator, 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 := _DelegationManagerStorage.contract.FilterLogs(opts, "WithdrawalQueued")
+ logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "StakerUndelegated", stakerRule, operatorRule)
if err != nil {
return nil, err
}
- return &DelegationManagerStorageWithdrawalQueuedIterator{contract: _DelegationManagerStorage.contract, event: "WithdrawalQueued", logs: logs, sub: sub}, nil
+ return &DelegationManagerStorageStakerUndelegatedIterator{contract: _DelegationManagerStorage.contract, event: "StakerUndelegated", logs: logs, sub: sub}, nil
}
-// WatchWithdrawalQueued is a free log subscription operation binding the contract event 0x9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9.
+// WatchStakerUndelegated is a free log subscription operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676.
//
-// Solidity: event WithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal)
-func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchWithdrawalQueued(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageWithdrawalQueued) (event.Subscription, error) {
+// Solidity: event StakerUndelegated(address indexed staker, address indexed operator)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchStakerUndelegated(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageStakerUndelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) {
+
+ var stakerRule []interface{}
+ for _, stakerItem := range staker {
+ stakerRule = append(stakerRule, stakerItem)
+ }
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
- logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "WithdrawalQueued")
+ logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "StakerUndelegated", stakerRule, operatorRule)
if err != nil {
return nil, err
}
@@ -3078,8 +2872,8 @@ func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchWithdraw
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(DelegationManagerStorageWithdrawalQueued)
- if err := _DelegationManagerStorage.contract.UnpackLog(event, "WithdrawalQueued", log); err != nil {
+ event := new(DelegationManagerStorageStakerUndelegated)
+ if err := _DelegationManagerStorage.contract.UnpackLog(event, "StakerUndelegated", log); err != nil {
return err
}
event.Raw = log
@@ -3100,12 +2894,12 @@ func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchWithdraw
}), nil
}
-// ParseWithdrawalQueued is a log parse operation binding the contract event 0x9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9.
+// ParseStakerUndelegated is a log parse operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676.
//
-// Solidity: event WithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal)
-func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseWithdrawalQueued(log types.Log) (*DelegationManagerStorageWithdrawalQueued, error) {
- event := new(DelegationManagerStorageWithdrawalQueued)
- if err := _DelegationManagerStorage.contract.UnpackLog(event, "WithdrawalQueued", log); err != nil {
+// Solidity: event StakerUndelegated(address indexed staker, address indexed operator)
+func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseStakerUndelegated(log types.Log) (*DelegationManagerStorageStakerUndelegated, error) {
+ event := new(DelegationManagerStorageStakerUndelegated)
+ if err := _DelegationManagerStorage.contract.UnpackLog(event, "StakerUndelegated", log); err != nil {
return nil, err
}
event.Raw = log
diff --git a/pkg/bindings/EIP1271SignatureUtils/binding.go b/pkg/bindings/EIP1271SignatureUtils/binding.go
deleted file mode 100644
index 03cd4a0a0f..0000000000
--- a/pkg/bindings/EIP1271SignatureUtils/binding.go
+++ /dev/null
@@ -1,203 +0,0 @@
-// Code generated - DO NOT EDIT.
-// This file is a generated binding and any manual changes will be lost.
-
-package EIP1271SignatureUtils
-
-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
-)
-
-// EIP1271SignatureUtilsMetaData contains all meta data concerning the EIP1271SignatureUtils contract.
-var EIP1271SignatureUtilsMetaData = &bind.MetaData{
- ABI: "[]",
- Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c40bcc301debbe802ac2e313a885b77d430f498c789c237ca45229d7672820d264736f6c634300080c0033",
-}
-
-// EIP1271SignatureUtilsABI is the input ABI used to generate the binding from.
-// Deprecated: Use EIP1271SignatureUtilsMetaData.ABI instead.
-var EIP1271SignatureUtilsABI = EIP1271SignatureUtilsMetaData.ABI
-
-// EIP1271SignatureUtilsBin is the compiled bytecode used for deploying new contracts.
-// Deprecated: Use EIP1271SignatureUtilsMetaData.Bin instead.
-var EIP1271SignatureUtilsBin = EIP1271SignatureUtilsMetaData.Bin
-
-// DeployEIP1271SignatureUtils deploys a new Ethereum contract, binding an instance of EIP1271SignatureUtils to it.
-func DeployEIP1271SignatureUtils(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *EIP1271SignatureUtils, error) {
- parsed, err := EIP1271SignatureUtilsMetaData.GetAbi()
- if err != nil {
- return common.Address{}, nil, nil, err
- }
- if parsed == nil {
- return common.Address{}, nil, nil, errors.New("GetABI returned nil")
- }
-
- address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(EIP1271SignatureUtilsBin), backend)
- if err != nil {
- return common.Address{}, nil, nil, err
- }
- return address, tx, &EIP1271SignatureUtils{EIP1271SignatureUtilsCaller: EIP1271SignatureUtilsCaller{contract: contract}, EIP1271SignatureUtilsTransactor: EIP1271SignatureUtilsTransactor{contract: contract}, EIP1271SignatureUtilsFilterer: EIP1271SignatureUtilsFilterer{contract: contract}}, nil
-}
-
-// EIP1271SignatureUtils is an auto generated Go binding around an Ethereum contract.
-type EIP1271SignatureUtils struct {
- EIP1271SignatureUtilsCaller // Read-only binding to the contract
- EIP1271SignatureUtilsTransactor // Write-only binding to the contract
- EIP1271SignatureUtilsFilterer // Log filterer for contract events
-}
-
-// EIP1271SignatureUtilsCaller is an auto generated read-only Go binding around an Ethereum contract.
-type EIP1271SignatureUtilsCaller struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// EIP1271SignatureUtilsTransactor is an auto generated write-only Go binding around an Ethereum contract.
-type EIP1271SignatureUtilsTransactor struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// EIP1271SignatureUtilsFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
-type EIP1271SignatureUtilsFilterer struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// EIP1271SignatureUtilsSession is an auto generated Go binding around an Ethereum contract,
-// with pre-set call and transact options.
-type EIP1271SignatureUtilsSession struct {
- Contract *EIP1271SignatureUtils // 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
-}
-
-// EIP1271SignatureUtilsCallerSession is an auto generated read-only Go binding around an Ethereum contract,
-// with pre-set call options.
-type EIP1271SignatureUtilsCallerSession struct {
- Contract *EIP1271SignatureUtilsCaller // Generic contract caller binding to set the session for
- CallOpts bind.CallOpts // Call options to use throughout this session
-}
-
-// EIP1271SignatureUtilsTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
-// with pre-set transact options.
-type EIP1271SignatureUtilsTransactorSession struct {
- Contract *EIP1271SignatureUtilsTransactor // Generic contract transactor binding to set the session for
- TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
-}
-
-// EIP1271SignatureUtilsRaw is an auto generated low-level Go binding around an Ethereum contract.
-type EIP1271SignatureUtilsRaw struct {
- Contract *EIP1271SignatureUtils // Generic contract binding to access the raw methods on
-}
-
-// EIP1271SignatureUtilsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
-type EIP1271SignatureUtilsCallerRaw struct {
- Contract *EIP1271SignatureUtilsCaller // Generic read-only contract binding to access the raw methods on
-}
-
-// EIP1271SignatureUtilsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
-type EIP1271SignatureUtilsTransactorRaw struct {
- Contract *EIP1271SignatureUtilsTransactor // Generic write-only contract binding to access the raw methods on
-}
-
-// NewEIP1271SignatureUtils creates a new instance of EIP1271SignatureUtils, bound to a specific deployed contract.
-func NewEIP1271SignatureUtils(address common.Address, backend bind.ContractBackend) (*EIP1271SignatureUtils, error) {
- contract, err := bindEIP1271SignatureUtils(address, backend, backend, backend)
- if err != nil {
- return nil, err
- }
- return &EIP1271SignatureUtils{EIP1271SignatureUtilsCaller: EIP1271SignatureUtilsCaller{contract: contract}, EIP1271SignatureUtilsTransactor: EIP1271SignatureUtilsTransactor{contract: contract}, EIP1271SignatureUtilsFilterer: EIP1271SignatureUtilsFilterer{contract: contract}}, nil
-}
-
-// NewEIP1271SignatureUtilsCaller creates a new read-only instance of EIP1271SignatureUtils, bound to a specific deployed contract.
-func NewEIP1271SignatureUtilsCaller(address common.Address, caller bind.ContractCaller) (*EIP1271SignatureUtilsCaller, error) {
- contract, err := bindEIP1271SignatureUtils(address, caller, nil, nil)
- if err != nil {
- return nil, err
- }
- return &EIP1271SignatureUtilsCaller{contract: contract}, nil
-}
-
-// NewEIP1271SignatureUtilsTransactor creates a new write-only instance of EIP1271SignatureUtils, bound to a specific deployed contract.
-func NewEIP1271SignatureUtilsTransactor(address common.Address, transactor bind.ContractTransactor) (*EIP1271SignatureUtilsTransactor, error) {
- contract, err := bindEIP1271SignatureUtils(address, nil, transactor, nil)
- if err != nil {
- return nil, err
- }
- return &EIP1271SignatureUtilsTransactor{contract: contract}, nil
-}
-
-// NewEIP1271SignatureUtilsFilterer creates a new log filterer instance of EIP1271SignatureUtils, bound to a specific deployed contract.
-func NewEIP1271SignatureUtilsFilterer(address common.Address, filterer bind.ContractFilterer) (*EIP1271SignatureUtilsFilterer, error) {
- contract, err := bindEIP1271SignatureUtils(address, nil, nil, filterer)
- if err != nil {
- return nil, err
- }
- return &EIP1271SignatureUtilsFilterer{contract: contract}, nil
-}
-
-// bindEIP1271SignatureUtils binds a generic wrapper to an already deployed contract.
-func bindEIP1271SignatureUtils(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
- parsed, err := EIP1271SignatureUtilsMetaData.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 (_EIP1271SignatureUtils *EIP1271SignatureUtilsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
- return _EIP1271SignatureUtils.Contract.EIP1271SignatureUtilsCaller.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 (_EIP1271SignatureUtils *EIP1271SignatureUtilsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
- return _EIP1271SignatureUtils.Contract.EIP1271SignatureUtilsTransactor.contract.Transfer(opts)
-}
-
-// Transact invokes the (paid) contract method with params as input values.
-func (_EIP1271SignatureUtils *EIP1271SignatureUtilsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
- return _EIP1271SignatureUtils.Contract.EIP1271SignatureUtilsTransactor.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 (_EIP1271SignatureUtils *EIP1271SignatureUtilsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
- return _EIP1271SignatureUtils.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 (_EIP1271SignatureUtils *EIP1271SignatureUtilsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
- return _EIP1271SignatureUtils.Contract.contract.Transfer(opts)
-}
-
-// Transact invokes the (paid) contract method with params as input values.
-func (_EIP1271SignatureUtils *EIP1271SignatureUtilsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
- return _EIP1271SignatureUtils.Contract.contract.Transact(opts, method, params...)
-}
diff --git a/pkg/bindings/Eigen/binding.go b/pkg/bindings/Eigen/binding.go
index 4b82511daf..5662a0b235 100644
--- a/pkg/bindings/Eigen/binding.go
+++ b/pkg/bindings/Eigen/binding.go
@@ -38,7 +38,7 @@ type ERC20VotesUpgradeableCheckpoint struct {
// EigenMetaData contains all meta data concerning the Eigen contract.
var EigenMetaData = &bind.MetaData{
ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_bEIGEN\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowedFrom\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowedTo\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"bEIGEN\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"pos\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structERC20VotesUpgradeable.Checkpoint\",\"components\":[{\"name\":\"fromBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"votes\",\"type\":\"uint224\",\"internalType\":\"uint224\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"clock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint48\",\"internalType\":\"uint48\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateBySig\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegates\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableTransferRestrictions\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"eip712Domain\",\"inputs\":[],\"outputs\":[{\"name\":\"fields\",\"type\":\"bytes1\",\"internalType\":\"bytes1\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extensions\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"inputs\":[{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"minters\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"mintingAllowances\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"mintAllowedAfters\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mintAllowedAfter\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"mintingAllowance\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"multisend\",\"inputs\":[{\"name\":\"receivers\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permit\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAllowedFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"isAllowedFrom\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAllowedTo\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"isAllowedTo\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferRestrictionsDisabledAfter\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unwrap\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"wrap\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateChanged\",\"inputs\":[{\"name\":\"delegator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"fromDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"toDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"name\":\"delegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"previousBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"inputs\":[],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Mint\",\"inputs\":[{\"name\":\"minter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"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\":\"SetAllowedFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"isAllowedFrom\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetAllowedTo\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"isAllowedTo\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransferRestrictionsDisabled\",\"inputs\":[],\"anonymous\":false}]",
- Bin: "0x60a06040523480156200001157600080fd5b506040516200361c3803806200361c833981016040819052620000349162000113565b6001600160a01b0381166080526200004b62000052565b5062000145565b600054610100900460ff1615620000bf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000111576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012657600080fd5b81516001600160a01b03811681146200013e57600080fd5b9392505050565b6080516134a6620001766000396000818161034c01528181610853015281816114fc01526115eb01526134a66000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c806381b9716111610146578063a9059cbb116100c3578063dd62ed3e11610087578063dd62ed3e146105c9578063de0e9a3e146105dc578063ea598cb0146105ef578063eb415f4514610602578063f1127ed81461060a578063f2fde38b1461064757600080fd5b8063a9059cbb1461056a578063aad41a411461057d578063b8c2559414610590578063c3cda520146105a3578063d505accf146105b657600080fd5b806395d89b411161010a57806395d89b411461051f5780639ab24eb0146105275780639aec4bae1461053a578063a457c2d714610544578063a7d1195d1461055757600080fd5b806381b97161146104a057806384b0196e146104c15780638da5cb5b146104dc5780638e539e8c146104ed57806391ddadf41461050057600080fd5b80633a46b1a8116101df5780635c19a95c116101a35780635c19a95c146103fd5780636fcfff451461041057806370a0823114610438578063715018a61461046157806378aa33ba146104695780637ecebe001461048d57600080fd5b80633a46b1a8146103345780633f4da4c6146103475780634bf5d7e91461038657806353957125146103b0578063587cde1e146103d157600080fd5b80631ffacdef116102265780631ffacdef146102e457806323b872dd146102f7578063313ce5671461030a5780633644e51514610319578063395093511461032157600080fd5b80630455e6941461026357806306fdde031461029c578063095ea7b3146102b15780631249c58b146102c457806318160ddd146102ce575b600080fd5b610287610271366004612d61565b6101336020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6102a461065a565b6040516102939190612dc9565b6102876102bf366004612ddc565b6106ec565b6102cc610704565b005b6102d661084f565b604051908152602001610293565b6102cc6102f2366004612e14565b6108d8565b610287610305366004612e4b565b610941565b60405160128152602001610293565b6102d6610965565b61028761032f366004612ddc565b61096f565b6102d6610342366004612ddc565b610991565b61036e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610293565b60408051808201909152600e81526d06d6f64653d74696d657374616d760941b60208201526102a4565b6102d66103be366004612d61565b6101306020526000908152604090205481565b61036e6103df366004612d61565b6001600160a01b03908116600090815260fe60205260409020541690565b6102cc61040b366004612d61565b610a16565b61042361041e366004612d61565b610a23565b60405163ffffffff9091168152602001610293565b6102d6610446366004612d61565b6001600160a01b031660009081526065602052604090205490565b6102cc610a4b565b610287610477366004612d61565b6101346020526000908152604090205460ff1681565b6102d661049b366004612d61565b610a5f565b6102d66104ae366004612d61565b6101316020526000908152604090205481565b6104c9610a7d565b6040516102939796959493929190612e87565b6033546001600160a01b031661036e565b6102d66104fb366004612f1d565b610b1b565b610508610b83565b60405165ffffffffffff9091168152602001610293565b6102a4610b8e565b6102d6610535366004612d61565b610b9d565b6102d66101325481565b610287610552366004612ddc565b610c1f565b6102cc61056536600461300c565b610c9a565b610287610578366004612ddc565b6110c7565b6102cc61058b36600461314f565b6110d5565b6102cc61059e366004612e14565b6111b0565b6102cc6105b13660046131cc565b611211565b6102cc6105c4366004613224565b611347565b6102d66105d736600461328e565b6114ab565b6102cc6105ea366004612f1d565b6114d6565b6102cc6105fd366004612f1d565b6115c9565b6102cc6116c1565b61061d6106183660046132c1565b61178a565b60408051825163ffffffff1681526020928301516001600160e01b03169281019290925201610293565b6102cc610655366004612d61565b61180e565b606060688054610669906132f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610695906132f6565b80156106e25780601f106106b7576101008083540402835291602001916106e2565b820191906000526020600020905b8154815290600101906020018083116106c557829003601f168201915b5050505050905090565b6000336106fa818585611884565b5060019392505050565b336000908152610131602052604090205461077e5760405162461bcd60e51b815260206004820152602f60248201527f456967656e2e6d696e743a206d73672e73656e64657220686173206e6f206d6960448201526e6e74696e6720616c6c6f77616e636560881b60648201526084015b60405180910390fd5b336000908152610130602052604090205442116107f75760405162461bcd60e51b815260206004820152603160248201527f456967656e2e6d696e743a206d73672e73656e646572206973206e6f7420616c6044820152701b1bddd959081d1bc81b5a5b9d081e595d607a1b6064820152608401610775565b3360008181526101316020526040812080549190559061081790826119a8565b60405181815233907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859060200160405180910390a250565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d3919061332b565b905090565b6108e0611a3e565b6001600160a01b03821660008181526101336020908152604091829020805460ff191685151590811790915591519182527fcf20b1ecb604b0e8888d579c64e8a3b10e590d45c1c2dddb393bed284362227191015b60405180910390a25050565b60003361094f858285611a98565b61095a858585611b0c565b506001949350505050565b60006108d3611cc8565b6000336106fa81858561098283836114ab565b61098c919061335a565b611884565b600061099b610b83565b65ffffffffffff1682106109ed5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b6044820152606401610775565b6001600160a01b038316600090815260ff60205260409020610a0f9083611cd2565b9392505050565b610a203382611dbb565b50565b6001600160a01b038116600090815260ff6020526040812054610a4590611e35565b92915050565b610a53611a3e565b610a5d6000611e9e565b565b6001600160a01b038116600090815260cb6020526040812054610a45565b6000606080600080600060606097546000801b148015610a9d5750609854155b610ae15760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610775565b610ae9611ef0565b610af1611eff565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000610b25610b83565b65ffffffffffff168210610b775760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b6044820152606401610775565b610a4561010083611cd2565b60006108d342611f0e565b606060698054610669906132f6565b6001600160a01b038116600090815260ff60205260408120548015610c0c576001600160a01b038316600090815260ff6020526040902080546000198301908110610bea57610bea613372565b60009182526020909120015464010000000090046001600160e01b0316610c0f565b60005b6001600160e01b03169392505050565b60003381610c2d82866114ab565b905083811015610c8d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610775565b61095a8286868403611884565b600054610100900460ff1615808015610cba5750600054600160ff909116105b80610cd45750303b158015610cd4575060005460ff166001145b610d375760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610775565b6000805460ff191660011790558015610d5a576000805461ff0019166101001790555b610d62611f75565b610da66040518060400160405280600581526020016422b4b3b2b760d91b8152506040518060400160405280600581526020016422a4a3a2a760d91b815250611fa4565b610daf85611e9e565b610dd56040518060400160405280600581526020016422a4a3a2a760d91b815250611fd9565b8251845114610e5c5760405162461bcd60e51b815260206004820152604760248201527f456967656e2e696e697469616c697a653a206d696e7465727320616e64206d6960448201527f6e74696e67416c6c6f77616e636573206d757374206265207468652073616d65606482015266040d8cadccee8d60cb1b608482015260a401610775565b8151845114610ee35760405162461bcd60e51b815260206004820152604760248201527f456967656e2e696e697469616c697a653a206d696e7465727320616e64206d6960448201527f6e74416c6c6f776564416674657273206d757374206265207468652073616d65606482015266040d8cadccee8d60cb1b608482015260a401610775565b60005b845181101561107257838181518110610f0157610f01613372565b60200260200101516101316000878481518110610f2057610f20613372565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550828181518110610f5e57610f5e613372565b60200260200101516101306000878481518110610f7d57610f7d613372565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000208190555060016101336000878481518110610fc257610fc2613372565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555084818151811061101357611013613372565b60200260200101516001600160a01b03167fcf20b1ecb604b0e8888d579c64e8a3b10e590d45c1c2dddb393bed28436222716001604051611058911515815260200190565b60405180910390a28061106a81613388565b915050610ee6565b506000196101325580156110c0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000336106fa818585611b0c565b82811461114a5760405162461bcd60e51b815260206004820152603e60248201527f456967656e2e6d756c746973656e643a2072656365697665727320616e64206160448201527f6d6f756e7473206d757374206265207468652073616d65206c656e67746800006064820152608401610775565b60005b838110156110c05761119e3386868481811061116b5761116b613372565b90506020020160208101906111809190612d61565b85858581811061119257611192613372565b90506020020135611b0c565b806111a881613388565b91505061114d565b6111b8611a3e565b6001600160a01b03821660008181526101346020908152604091829020805460ff191685151590811790915591519182527f72a561d1af7409467dae4f1e9fc52590a9335a1dda17727e2b6aa8c4db35109b9101610935565b834211156112615760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610775565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906112db906112d39060a00160405160208183030381529060405280519060200120612023565b858585612050565b90506112e681612078565b86146113345760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610775565b61133e8188611dbb565b50505050505050565b834211156113975760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610775565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886113c68c612078565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061142182612023565b9050600061143182878787612050565b9050896001600160a01b0316816001600160a01b0316146114945760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610775565b61149f8a8a8a611884565b50505050505050505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b6114e033826120a0565b60405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561154d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157191906133a3565b610a205760405162461bcd60e51b8152602060048201526024808201527f456967656e2e756e777261703a2062454947454e207472616e736665722066616044820152631a5b195960e21b6064820152608401610775565b6040516323b872dd60e01b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af115801561163c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166091906133a3565b6116b75760405162461bcd60e51b815260206004820152602260248201527f456967656e2e777261703a2062454947454e207472616e73666572206661696c604482015261195960f21b6064820152608401610775565b610a2033826119a8565b6116c9611a3e565b60001961013254146117595760405162461bcd60e51b815260206004820152604d60248201527f456967656e2e64697361626c655472616e736665725265737472696374696f6e60448201527f733a207472616e73666572207265737472696374696f6e732061726520616c7260648201526c1958591e48191a5cd8589b1959609a1b608482015260a401610775565b60006101328190556040517f2b18986d3ba809db2f13a5d7bf17f60d357b37d9cbb55dd71cbbac8dc4060f649190a1565b60408051808201909152600080825260208201526001600160a01b038316600090815260ff60205260409020805463ffffffff84169081106117ce576117ce613372565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b611816611a3e565b6001600160a01b03811661187b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610775565b610a2081611e9e565b6001600160a01b0383166118e65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610775565b6001600160a01b0382166119475760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610775565b6001600160a01b0383811660008181526066602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6119b282826120b9565b6001600160e01b036119c261084f565b1115611a295760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b6064820152608401610775565b611a3861010061218e8361219a565b50505050565b6033546001600160a01b03163314610a5d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610775565b6000611aa484846114ab565b90506000198114611a385781811015611aff5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610775565b611a388484848403611884565b6001600160a01b038316611b705760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610775565b6001600160a01b038216611bd25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610775565b611bdd83838361230f565b6001600160a01b03831660009081526065602052604090205481811015611c555760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610775565b6001600160a01b0380851660008181526065602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cb59086815260200190565b60405180910390a3611a388484846123f5565b60006108d3612427565b815460009081816005811115611d2c576000611ced8461249b565b611cf790856133c0565b600088815260209020909150869082015463ffffffff161115611d1c57809150611d2a565b611d2781600161335a565b92505b505b80821015611d79576000611d408383612580565b600088815260209020909150869082015463ffffffff161115611d6557809150611d73565b611d7081600161335a565b92505b50611d2c565b8015611da5576000868152602090208101600019015464010000000090046001600160e01b0316611da8565b60005b6001600160e01b03169695505050505050565b6001600160a01b03828116600081815260fe6020818152604080842080546065845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611a3882848361259b565b600063ffffffff821115611e9a5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610775565b5090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606060998054610669906132f6565b6060609a8054610669906132f6565b600065ffffffffffff821115611e9a5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608401610775565b600054610100900460ff16611f9c5760405162461bcd60e51b8152600401610775906133d7565b610a5d6126d8565b600054610100900460ff16611fcb5760405162461bcd60e51b8152600401610775906133d7565b611fd58282612708565b5050565b600054610100900460ff166120005760405162461bcd60e51b8152600401610775906133d7565b610a2081604051806040016040528060018152602001603160f81b815250612756565b6000610a45612030611cc8565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612061878787876127b3565b9150915061206e81612877565b5095945050505050565b6001600160a01b038116600090815260cb602052604090208054600181018255905b50919050565b6120aa82826129c5565b611a38610100612b0c8361219a565b6001600160a01b03821661210f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610775565b61211b6000838361230f565b806067600082825461212d919061335a565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611fd5600083836123f5565b6000610a0f828461335a565b825460009081908181156121e75760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b031660208201526121fc565b60408051808201909152600080825260208201525b905080602001516001600160e01b0316935061221c84868863ffffffff16565b92506000821180156122465750612231610b83565b65ffffffffffff16816000015163ffffffff16145b1561228b5761225483612b18565b60008881526020902083016000190180546001600160e01b03929092166401000000000263ffffffff909216919091179055612305565b8660405180604001604052806122af6122a2610b83565b65ffffffffffff16611e35565b63ffffffff1681526020016122c386612b18565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b6101325442116123f0576001600160a01b038316158061233657506001600160a01b038216155b8061235a57506001600160a01b0383166000908152610133602052604090205460ff165b8061237e57506001600160a01b0382166000908152610134602052604090205460ff165b6123f05760405162461bcd60e51b815260206004820152603a60248201527f456967656e2e5f6265666f7265546f6b656e5472616e736665723a2066726f6d60448201527f206f7220746f206d7573742062652077686974656c69737465640000000000006064820152608401610775565b505050565b6001600160a01b03838116600090815260fe60205260408082205485841683529120546123f09291821691168361259b565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612452612b81565b61245a612bda565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000816124aa57506000919050565b600060016124b784612c0b565b901c6001901b905060018184816124d0576124d0613422565b048201901c905060018184816124e8576124e8613422565b048201901c9050600181848161250057612500613422565b048201901c9050600181848161251857612518613422565b048201901c9050600181848161253057612530613422565b048201901c9050600181848161254857612548613422565b048201901c9050600181848161256057612560613422565b048201901c9050610a0f8182858161257a5761257a613422565b04612c9f565b600061258f6002848418613438565b610a0f9084841661335a565b816001600160a01b0316836001600160a01b0316141580156125bd5750600081115b156123f0576001600160a01b0383161561264b576001600160a01b038316600090815260ff6020526040812081906125f890612b0c8561219a565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612640929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156123f0576001600160a01b038216600090815260ff6020526040812081906126819061218e8561219a565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516126c9929190918252602082015260400190565b60405180910390a25050505050565b600054610100900460ff166126ff5760405162461bcd60e51b8152600401610775906133d7565b610a5d33611e9e565b600054610100900460ff1661272f5760405162461bcd60e51b8152600401610775906133d7565b8151612742906068906020850190612cb5565b5080516123f0906069906020840190612cb5565b600054610100900460ff1661277d5760405162461bcd60e51b8152600401610775906133d7565b8151612790906099906020850190612cb5565b5080516127a490609a906020840190612cb5565b50506000609781905560985550565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127ea575060009050600361286e565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561283e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128675760006001925092505061286e565b9150600090505b94509492505050565b600081600481111561288b5761288b61345a565b14156128945750565b60018160048111156128a8576128a861345a565b14156128f65760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610775565b600281600481111561290a5761290a61345a565b14156129585760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610775565b600381600481111561296c5761296c61345a565b1415610a205760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610775565b6001600160a01b038216612a255760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610775565b612a318260008361230f565b6001600160a01b03821660009081526065602052604090205481811015612aa55760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610775565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36123f0836000846123f5565b6000610a0f82846133c0565b60006001600160e01b03821115611e9a5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610775565b600080612b8c611ef0565b805190915015612ba3578051602090910120919050565b6097548015612bb25792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080612be5611eff565b805190915015612bfc578051602090910120919050565b6098548015612bb25792915050565b600080608083901c15612c2057608092831c92015b604083901c15612c3257604092831c92015b602083901c15612c4457602092831c92015b601083901c15612c5657601092831c92015b600883901c15612c6857600892831c92015b600483901c15612c7a57600492831c92015b600283901c15612c8c57600292831c92015b600183901c15610a455760010192915050565b6000818310612cae5781610a0f565b5090919050565b828054612cc1906132f6565b90600052602060002090601f016020900481019282612ce35760008555612d29565b82601f10612cfc57805160ff1916838001178555612d29565b82800160010185558215612d29579182015b82811115612d29578251825591602001919060010190612d0e565b50611e9a9291505b80821115611e9a5760008155600101612d31565b80356001600160a01b0381168114612d5c57600080fd5b919050565b600060208284031215612d7357600080fd5b610a0f82612d45565b6000815180845260005b81811015612da257602081850181015186830182015201612d86565b81811115612db4576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610a0f6020830184612d7c565b60008060408385031215612def57600080fd5b612df883612d45565b946020939093013593505050565b8015158114610a2057600080fd5b60008060408385031215612e2757600080fd5b612e3083612d45565b91506020830135612e4081612e06565b809150509250929050565b600080600060608486031215612e6057600080fd5b612e6984612d45565b9250612e7760208501612d45565b9150604084013590509250925092565b60ff60f81b881681526000602060e081840152612ea760e084018a612d7c565b8381036040850152612eb9818a612d7c565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015612f0b57835183529284019291840191600101612eef565b50909c9b505050505050505050505050565b600060208284031215612f2f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612f7557612f75612f36565b604052919050565b600067ffffffffffffffff821115612f9757612f97612f36565b5060051b60200190565b600082601f830112612fb257600080fd5b81356020612fc7612fc283612f7d565b612f4c565b82815260059290921b84018101918181019086841115612fe657600080fd5b8286015b848110156130015780358352918301918301612fea565b509695505050505050565b6000806000806080858703121561302257600080fd5b61302b85612d45565b935060208086013567ffffffffffffffff8082111561304957600080fd5b818801915088601f83011261305d57600080fd5b813561306b612fc282612f7d565b81815260059190911b8301840190848101908b83111561308a57600080fd5b938501935b828510156130af576130a085612d45565b8252938501939085019061308f565b9750505060408801359250808311156130c757600080fd5b6130d389848a01612fa1565b945060608801359250808311156130e957600080fd5b50506130f787828801612fa1565b91505092959194509250565b60008083601f84011261311557600080fd5b50813567ffffffffffffffff81111561312d57600080fd5b6020830191508360208260051b850101111561314857600080fd5b9250929050565b6000806000806040858703121561316557600080fd5b843567ffffffffffffffff8082111561317d57600080fd5b61318988838901613103565b909650945060208701359150808211156131a257600080fd5b506131af87828801613103565b95989497509550505050565b803560ff81168114612d5c57600080fd5b60008060008060008060c087890312156131e557600080fd5b6131ee87612d45565b9550602087013594506040870135935061320a606088016131bb565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561323f57600080fd5b61324888612d45565b965061325660208901612d45565b95506040880135945060608801359350613272608089016131bb565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156132a157600080fd5b6132aa83612d45565b91506132b860208401612d45565b90509250929050565b600080604083850312156132d457600080fd5b6132dd83612d45565b9150602083013563ffffffff81168114612e4057600080fd5b600181811c9082168061330a57607f821691505b6020821081141561209a57634e487b7160e01b600052602260045260246000fd5b60006020828403121561333d57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561336d5761336d613344565b500190565b634e487b7160e01b600052603260045260246000fd5b600060001982141561339c5761339c613344565b5060010190565b6000602082840312156133b557600080fd5b8151610a0f81612e06565b6000828210156133d2576133d2613344565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261345557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052602160045260246000fdfea26469706673582212208eefefe16548769db40399d3126138232002f0b940aeb132083f31088ef7704964736f6c634300080c0033",
+ Bin: "0x60a060405234801561000f575f5ffd5b5060405161352938038061352983398101604081905261002e91610105565b6001600160a01b038116608052610043610049565b50610132565b5f54610100900460ff16156100b45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610103575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b5f60208284031215610115575f5ffd5b81516001600160a01b038116811461012b575f5ffd5b9392505050565b6080516133ca61015f5f395f81816103410152818161083e0152818161149e015261158a01526133ca5ff3fe608060405234801561000f575f5ffd5b5060043610610255575f3560e01c806381b9716111610140578063a9059cbb116100bf578063dd62ed3e11610084578063dd62ed3e146105b9578063de0e9a3e146105cc578063ea598cb0146105df578063eb415f45146105f2578063f1127ed8146105fa578063f2fde38b14610637575f5ffd5b8063a9059cbb1461055a578063aad41a411461056d578063b8c2559414610580578063c3cda52014610593578063d505accf146105a6575f5ffd5b806395d89b411161010557806395d89b411461050f5780639ab24eb0146105175780639aec4bae1461052a578063a457c2d714610534578063a7d1195d14610547575f5ffd5b806381b971611461049157806384b0196e146104b15780638da5cb5b146104cc5780638e539e8c146104dd57806391ddadf4146104f0575f5ffd5b80633a46b1a8116101d75780635c19a95c1161019c5780635c19a95c146103f05780636fcfff451461040357806370a082311461042b578063715018a61461045357806378aa33ba1461045b5780637ecebe001461047e575f5ffd5b80633a46b1a8146103295780633f4da4c61461033c5780634bf5d7e91461037b57806353957125146103a5578063587cde1e146103c5575f5ffd5b80631ffacdef1161021d5780631ffacdef146102d957806323b872dd146102ec578063313ce567146102ff5780633644e5151461030e5780633950935114610316575f5ffd5b80630455e6941461025957806306fdde0314610291578063095ea7b3146102a65780631249c58b146102b957806318160ddd146102c3575b5f5ffd5b61027c610267366004612c01565b6101336020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61029961064a565b6040516102889190612c48565b61027c6102b4366004612c5a565b6106da565b6102c16106f3565b005b6102cb61083b565b604051908152602001610288565b6102c16102e7366004612c8f565b6108c1565b61027c6102fa366004612cc4565b610929565b60405160128152602001610288565b6102cb61094c565b61027c610324366004612c5a565b610955565b6102cb610337366004612c5a565b610976565b6103637f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610288565b60408051808201909152600e81526d06d6f64653d74696d657374616d760941b6020820152610299565b6102cb6103b3366004612c01565b6101306020525f908152604090205481565b6103636103d3366004612c01565b6001600160a01b039081165f90815260fe60205260409020541690565b6102c16103fe366004612c01565b6109f9565b610416610411366004612c01565b610a06565b60405163ffffffff9091168152602001610288565b6102cb610439366004612c01565b6001600160a01b03165f9081526065602052604090205490565b6102c1610a27565b61027c610469366004612c01565b6101346020525f908152604090205460ff1681565b6102cb61048c366004612c01565b610a3a565b6102cb61049f366004612c01565b6101316020525f908152604090205481565b6104b9610a57565b6040516102889796959493929190612cfe565b6033546001600160a01b0316610363565b6102cb6104eb366004612d94565b610af0565b6104f8610b57565b60405165ffffffffffff9091168152602001610288565b610299610b61565b6102cb610525366004612c01565b610b70565b6102cb6101325481565b61027c610542366004612c5a565b610bed565b6102c1610555366004612e73565b610c67565b61027c610568366004612c5a565b61107b565b6102c161057b366004612fb8565b611088565b6102c161058e366004612c8f565b611158565b6102c16105a1366004613034565b6111b8565b6102c16105b4366004613088565b6112ed565b6102cb6105c73660046130ee565b61144e565b6102c16105da366004612d94565b611478565b6102c16105ed366004612d94565b611568565b6102c161165d565b61060d61060836600461311f565b611724565b60408051825163ffffffff1681526020928301516001600160e01b03169281019290925201610288565b6102c1610645366004612c01565b6117a5565b60606068805461065990613151565b80601f016020809104026020016040519081016040528092919081815260200182805461068590613151565b80156106d05780601f106106a7576101008083540402835291602001916106d0565b820191905f5260205f20905b8154815290600101906020018083116106b357829003601f168201915b5050505050905090565b5f336106e781858561181b565b60019150505b92915050565b335f908152610131602052604090205461076c5760405162461bcd60e51b815260206004820152602f60248201527f456967656e2e6d696e743a206d73672e73656e64657220686173206e6f206d6960448201526e6e74696e6720616c6c6f77616e636560881b60648201526084015b60405180910390fd5b335f908152610130602052604090205442116107e45760405162461bcd60e51b815260206004820152603160248201527f456967656e2e6d696e743a206d73672e73656e646572206973206e6f7420616c6044820152701b1bddd959081d1bc81b5a5b9d081e595d607a1b6064820152608401610763565b335f81815261013160205260408120805491905590610803908261193e565b60405181815233907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859060200160405180910390a250565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610898573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108bc9190613183565b905090565b6108c96119d4565b6001600160a01b0382165f8181526101336020908152604091829020805460ff191685151590811790915591519182527fcf20b1ecb604b0e8888d579c64e8a3b10e590d45c1c2dddb393bed284362227191015b60405180910390a25050565b5f33610936858285611a2e565b610941858585611aa0565b506001949350505050565b5f6108bc611c5a565b5f336106e7818585610967838361144e565b61097191906131ae565b61181b565b5f61097f610b57565b65ffffffffffff1682106109d15760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b6044820152606401610763565b6001600160a01b0383165f90815260ff602052604090206109f29083611c63565b9392505050565b610a033382611d44565b50565b6001600160a01b0381165f90815260ff60205260408120546106ed90611dbd565b610a2f6119d4565b610a385f611e25565b565b6001600160a01b0381165f90815260cb60205260408120546106ed565b5f6060805f5f5f60606097545f5f1b148015610a735750609854155b610ab75760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610763565b610abf611e76565b610ac7611e85565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f610af9610b57565b65ffffffffffff168210610b4b5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b6044820152606401610763565b6106ed61010083611c63565b5f6108bc42611e94565b60606069805461065990613151565b6001600160a01b0381165f90815260ff60205260408120548015610bdb576001600160a01b0383165f90815260ff6020526040902080545f198301908110610bba57610bba6131c1565b5f9182526020909120015464010000000090046001600160e01b0316610bdd565b5f5b6001600160e01b03169392505050565b5f3381610bfa828661144e565b905083811015610c5a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610763565b610941828686840361181b565b5f54610100900460ff1615808015610c8557505f54600160ff909116105b80610c9e5750303b158015610c9e57505f5460ff166001145b610d015760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610763565b5f805460ff191660011790558015610d22575f805461ff0019166101001790555b610d2a611efa565b610d6e6040518060400160405280600581526020016422b4b3b2b760d91b8152506040518060400160405280600581526020016422a4a3a2a760d91b815250611f28565b610d7785611e25565b610d9d6040518060400160405280600581526020016422a4a3a2a760d91b815250611f5c565b8251845114610e245760405162461bcd60e51b815260206004820152604760248201527f456967656e2e696e697469616c697a653a206d696e7465727320616e64206d6960448201527f6e74696e67416c6c6f77616e636573206d757374206265207468652073616d65606482015266040d8cadccee8d60cb1b608482015260a401610763565b8151845114610eab5760405162461bcd60e51b815260206004820152604760248201527f456967656e2e696e697469616c697a653a206d696e7465727320616e64206d6960448201527f6e74416c6c6f776564416674657273206d757374206265207468652073616d65606482015266040d8cadccee8d60cb1b608482015260a401610763565b5f5b845181101561102857838181518110610ec857610ec86131c1565b60200260200101516101315f878481518110610ee657610ee66131c1565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2081905550828181518110610f2357610f236131c1565b60200260200101516101305f878481518110610f4157610f416131c1565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f208190555060016101335f878481518110610f8457610f846131c1565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff021916908315150217905550848181518110610fd357610fd36131c1565b60200260200101516001600160a01b03167fcf20b1ecb604b0e8888d579c64e8a3b10e590d45c1c2dddb393bed28436222716001604051611018911515815260200190565b60405180910390a2600101610ead565b505f19610132558015611074575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b5f336106e7818585611aa0565b8281146110fd5760405162461bcd60e51b815260206004820152603e60248201527f456967656e2e6d756c746973656e643a2072656365697665727320616e64206160448201527f6d6f756e7473206d757374206265207468652073616d65206c656e67746800006064820152608401610763565b5f5b83811015611074576111503386868481811061111d5761111d6131c1565b90506020020160208101906111329190612c01565b858585818110611144576111446131c1565b90506020020135611aa0565b6001016110ff565b6111606119d4565b6001600160a01b0382165f8181526101346020908152604091829020805460ff191685151590811790915591519182527f72a561d1af7409467dae4f1e9fc52590a9335a1dda17727e2b6aa8c4db35109b910161091d565b834211156112085760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610763565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590525f90611281906112799060a00160405160208183030381529060405280519060200120611fa5565b858585611fd1565b905061128c81611ff7565b86146112da5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610763565b6112e48188611d44565b50505050505050565b8342111561133d5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610763565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861136b8c611ff7565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f6113c582611fa5565b90505f6113d482878787611fd1565b9050896001600160a01b0316816001600160a01b0316146114375760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610763565b6114428a8a8a61181b565b50505050505050505050565b6001600160a01b039182165f90815260666020908152604080832093909416825291909152205490565b611482338261201e565b60405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303815f875af11580156114ec573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061151091906131d5565b610a035760405162461bcd60e51b8152602060048201526024808201527f456967656e2e756e777261703a2062454947454e207472616e736665722066616044820152631a5b195960e21b6064820152608401610763565b6040516323b872dd60e01b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303815f875af11580156115d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115fc91906131d5565b6116535760405162461bcd60e51b815260206004820152602260248201527f456967656e2e777261703a2062454947454e207472616e73666572206661696c604482015261195960f21b6064820152608401610763565b610a03338261193e565b6116656119d4565b5f1961013254146116f45760405162461bcd60e51b815260206004820152604d60248201527f456967656e2e64697361626c655472616e736665725265737472696374696f6e60448201527f733a207472616e73666572207265737472696374696f6e732061726520616c7260648201526c1958591e48191a5cd8589b1959609a1b608482015260a401610763565b5f6101328190556040517f2b18986d3ba809db2f13a5d7bf17f60d357b37d9cbb55dd71cbbac8dc4060f649190a1565b604080518082019091525f80825260208201526001600160a01b0383165f90815260ff60205260409020805463ffffffff8416908110611766576117666131c1565b5f9182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b6117ad6119d4565b6001600160a01b0381166118125760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610763565b610a0381611e25565b6001600160a01b03831661187d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610763565b6001600160a01b0382166118de5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610763565b6001600160a01b038381165f8181526066602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6119488282612037565b6001600160e01b0361195861083b565b11156119bf5760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b6064820152608401610763565b6119ce61010061210883612113565b50505050565b6033546001600160a01b03163314610a385760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610763565b5f611a39848461144e565b90505f1981146119ce5781811015611a935760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610763565b6119ce848484840361181b565b6001600160a01b038316611b045760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610763565b6001600160a01b038216611b665760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610763565b611b7183838361227f565b6001600160a01b0383165f9081526065602052604090205481811015611be85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610763565b6001600160a01b038085165f8181526065602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c479086815260200190565b60405180910390a36119ce848484612363565b5f6108bc612394565b81545f9081816005811115611cba575f611c7c84612407565b611c8690856131f0565b5f88815260209020909150869082015463ffffffff161115611caa57809150611cb8565b611cb58160016131ae565b92505b505b80821015611d05575f611ccd83836124eb565b5f88815260209020909150869082015463ffffffff161115611cf157809150611cff565b611cfc8160016131ae565b92505b50611cba565b8015611d2f575f8681526020902081015f19015464010000000090046001600160e01b0316611d31565b5f5b6001600160e01b03169695505050505050565b6001600160a01b038281165f81815260fe6020818152604080842080546065845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46119ce828483612505565b5f63ffffffff821115611e215760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610763565b5090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60606099805461065990613151565b6060609a805461065990613151565b5f65ffffffffffff821115611e215760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608401610763565b5f54610100900460ff16611f205760405162461bcd60e51b815260040161076390613203565b610a3861263f565b5f54610100900460ff16611f4e5760405162461bcd60e51b815260040161076390613203565b611f58828261266e565b5050565b5f54610100900460ff16611f825760405162461bcd60e51b815260040161076390613203565b610a0381604051806040016040528060018152602001603160f81b8152506126ad565b5f6106ed611fb1611c5a565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f5f611fe0878787876126fa565b91509150611fed816127b7565b5095945050505050565b6001600160a01b0381165f90815260cb602052604090208054600181018255905b50919050565b6120288282612900565b6119ce610100612a4383612113565b6001600160a01b03821661208d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610763565b6120985f838361227f565b8060675f8282546120a991906131ae565b90915550506001600160a01b0382165f818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611f585f8383612363565b5f6109f282846131ae565b82545f90819081811561215d575f8781526020902082015f190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152612171565b604080518082019091525f80825260208201525b905080602001516001600160e01b0316935061219184868863ffffffff16565b92505f821180156121b957506121a5610b57565b65ffffffffffff16815f015163ffffffff16145b156121fc576121c783612a4e565b5f8881526020902083015f190180546001600160e01b03929092166401000000000263ffffffff909216919091179055612275565b866040518060400160405280612220612213610b57565b65ffffffffffff16611dbd565b63ffffffff16815260200161223486612a4e565b6001600160e01b0390811690915282546001810184555f938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b61013254421161235e576001600160a01b03831615806122a657506001600160a01b038216155b806122c957506001600160a01b0383165f908152610133602052604090205460ff165b806122ec57506001600160a01b0382165f908152610134602052604090205460ff165b61235e5760405162461bcd60e51b815260206004820152603a60248201527f456967656e2e5f6265666f7265546f6b656e5472616e736665723a2066726f6d60448201527f206f7220746f206d7573742062652077686974656c69737465640000000000006064820152608401610763565b505050565b6001600160a01b038381165f90815260fe602052604080822054858416835291205461235e92918216911683612505565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6123be612ab6565b6123c6612b0e565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f815f0361241657505f919050565b5f600161242284612b3e565b901c6001901b9050600181848161243b5761243b61324e565b048201901c905060018184816124535761245361324e565b048201901c9050600181848161246b5761246b61324e565b048201901c905060018184816124835761248361324e565b048201901c9050600181848161249b5761249b61324e565b048201901c905060018184816124b3576124b361324e565b048201901c905060018184816124cb576124cb61324e565b048201901c90506109f2818285816124e5576124e561324e565b04612bd1565b5f6124f96002848418613262565b6109f2908484166131ae565b816001600160a01b0316836001600160a01b03161415801561252657505f81115b1561235e576001600160a01b038316156125b3576001600160a01b0383165f90815260ff60205260408120819061256090612a4385612113565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516125a8929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561235e576001600160a01b0382165f90815260ff6020526040812081906125e89061210885612113565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612630929190918252602082015260400190565b60405180910390a25050505050565b5f54610100900460ff166126655760405162461bcd60e51b815260040161076390613203565b610a3833611e25565b5f54610100900460ff166126945760405162461bcd60e51b815260040161076390613203565b60686126a083826132c5565b50606961235e82826132c5565b5f54610100900460ff166126d35760405162461bcd60e51b815260040161076390613203565b60996126df83826132c5565b50609a6126ec82826132c5565b50505f609781905560985550565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561272f57505f905060036127ae565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612780573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166127a8575f600192509250506127ae565b91505f90505b94509492505050565b5f8160048111156127ca576127ca613380565b036127d25750565b60018160048111156127e6576127e6613380565b036128335760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610763565b600281600481111561284757612847613380565b036128945760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610763565b60038160048111156128a8576128a8613380565b03610a035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610763565b6001600160a01b0382166129605760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610763565b61296b825f8361227f565b6001600160a01b0382165f90815260656020526040902054818110156129de5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610763565b6001600160a01b0383165f8181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361235e835f84612363565b5f6109f282846131f0565b5f6001600160e01b03821115611e215760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610763565b5f5f612ac0611e76565b805190915015612ad7578051602090910120919050565b6097548015612ae65792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b5f5f612b18611e85565b805190915015612b2f578051602090910120919050565b6098548015612ae65792915050565b5f80608083901c15612b5257608092831c92015b604083901c15612b6457604092831c92015b602083901c15612b7657602092831c92015b601083901c15612b8857601092831c92015b600883901c15612b9a57600892831c92015b600483901c15612bac57600492831c92015b600283901c15612bbe57600292831c92015b600183901c156106ed5760010192915050565b5f818310612bdf57816109f2565b5090919050565b80356001600160a01b0381168114612bfc575f5ffd5b919050565b5f60208284031215612c11575f5ffd5b6109f282612be6565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6109f26020830184612c1a565b5f5f60408385031215612c6b575f5ffd5b612c7483612be6565b946020939093013593505050565b8015158114610a03575f5ffd5b5f5f60408385031215612ca0575f5ffd5b612ca983612be6565b91506020830135612cb981612c82565b809150509250929050565b5f5f5f60608486031215612cd6575f5ffd5b612cdf84612be6565b9250612ced60208501612be6565b929592945050506040919091013590565b60ff60f81b8816815260e060208201525f612d1c60e0830189612c1a565b8281036040840152612d2e8189612c1a565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015612d83578351835260209384019390920191600101612d65565b50909b9a5050505050505050505050565b5f60208284031215612da4575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612de857612de8612dab565b604052919050565b5f67ffffffffffffffff821115612e0957612e09612dab565b5060051b60200190565b5f82601f830112612e22575f5ffd5b8135612e35612e3082612df0565b612dbf565b8082825260208201915060208360051b860101925085831115612e56575f5ffd5b602085015b83811015611fed578035835260209283019201612e5b565b5f5f5f5f60808587031215612e86575f5ffd5b612e8f85612be6565b9350602085013567ffffffffffffffff811115612eaa575f5ffd5b8501601f81018713612eba575f5ffd5b8035612ec8612e3082612df0565b8082825260208201915060208360051b850101925089831115612ee9575f5ffd5b6020840193505b82841015612f1257612f0184612be6565b825260209384019390910190612ef0565b9550505050604085013567ffffffffffffffff811115612f30575f5ffd5b612f3c87828801612e13565b925050606085013567ffffffffffffffff811115612f58575f5ffd5b612f6487828801612e13565b91505092959194509250565b5f5f83601f840112612f80575f5ffd5b50813567ffffffffffffffff811115612f97575f5ffd5b6020830191508360208260051b8501011115612fb1575f5ffd5b9250929050565b5f5f5f5f60408587031215612fcb575f5ffd5b843567ffffffffffffffff811115612fe1575f5ffd5b612fed87828801612f70565b909550935050602085013567ffffffffffffffff81111561300c575f5ffd5b61301887828801612f70565b95989497509550505050565b803560ff81168114612bfc575f5ffd5b5f5f5f5f5f5f60c08789031215613049575f5ffd5b61305287612be6565b9550602087013594506040870135935061306e60608801613024565b9598949750929560808101359460a0909101359350915050565b5f5f5f5f5f5f5f60e0888a03121561309e575f5ffd5b6130a788612be6565b96506130b560208901612be6565b955060408801359450606088013593506130d160808901613024565b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156130ff575f5ffd5b61310883612be6565b915061311660208401612be6565b90509250929050565b5f5f60408385031215613130575f5ffd5b61313983612be6565b9150602083013563ffffffff81168114612cb9575f5ffd5b600181811c9082168061316557607f821691505b60208210810361201857634e487b7160e01b5f52602260045260245ffd5b5f60208284031215613193575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ed576106ed61319a565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156131e5575f5ffd5b81516109f281612c82565b818103818111156106ed576106ed61319a565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b5f52601260045260245ffd5b5f8261327c57634e487b7160e01b5f52601260045260245ffd5b500490565b601f82111561235e57805f5260205f20601f840160051c810160208510156132a65750805b601f840160051c820191505b81811015611074575f81556001016132b2565b815167ffffffffffffffff8111156132df576132df612dab565b6132f3816132ed8454613151565b84613281565b6020601f821160018114613325575f831561330e5750848201515b5f19600385901b1c1916600184901b178455611074565b5f84815260208120601f198516915b828110156133545787850151825560209485019460019092019101613334565b508482101561337157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52602160045260245ffdfea264697066735822122087556507a13c767e1ac5fae7a99abc6e15a1498b1060ca1cde8c320d6d57627664736f6c634300081b0033",
}
// EigenABI is the input ABI used to generate the binding from.
diff --git a/pkg/bindings/EigenPod/binding.go b/pkg/bindings/EigenPod/binding.go
index de92526f8f..e918812a07 100644
--- a/pkg/bindings/EigenPod/binding.go
+++ b/pkg/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
+ PrevBeaconBalanceGwei 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 {
// EigenPodMetaData contains all meta data concerning the EigenPod contract.
var EigenPodMetaData = &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: "0x60e06040523480156200001157600080fd5b5060405162004ad038038062004ad0833981016040819052620000349162000142565b6001600160a01b03808416608052821660a0526001600160401b03811660c0526200005e62000067565b505050620001a1565b600054610100900460ff1615620000d45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000127576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013f57600080fd5b50565b6000806000606084860312156200015857600080fd5b8351620001658162000129565b6020850151909350620001788162000129565b60408501519092506001600160401b03811681146200019657600080fd5b809150509250925092565b60805160a05160c0516148b26200021e60003960006105ff0152600081816102bd0152818161063a015281816106ec01528181610abf01528181610d6c015281816110f40152818161119c0152818161143c015281816118db01528181611a8401526131250152600081816104b8015261126701526148b26000f3fe60806040526004361061016a5760003560e01c80636fcd0e53116100d1578063c49074421161008a578063dda3346c11610064578063dda3346c1461058d578063ee94d67c146105ad578063f074ba62146105cd578063f2882461146105ed57600080fd5b8063c49074421461052d578063c4d66de81461054d578063d06d55871461056d57600080fd5b80636fcd0e53146104425780637439841f1461046f57806374cdd798146104a657806388676cad146104da5780639b4e4634146104fa578063b522538a1461050d57600080fd5b80634665bcda116101235780634665bcda146102ab57806347d28372146102df57806352396a591461039f57806358753357146103d557806358eaee79146103f55780636c0d2d5a1461042257600080fd5b8063039157d2146101a95780630b18ff66146101cb5780632340e8d3146102085780633474aa161461022c5780633f65cf191461026457806342ecff2a1461028457600080fd5b366101a4576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101b557600080fd5b506101c96101c4366004613b66565b610621565b005b3480156101d757600080fd5b506033546101eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021457600080fd5b5061021e60395481565b6040519081526020016101ff565b34801561023857600080fd5b5060345461024c906001600160401b031681565b6040516001600160401b0390911681526020016101ff565b34801561027057600080fd5b506101c961027f366004613c24565b610a67565b34801561029057600080fd5b50603a5461024c90600160401b90046001600160401b031681565b3480156102b757600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102eb57600080fd5b5061035b6040805160808101825260008082526020820181905291810182905260608101919091525060408051608081018252603c548152603d5462ffffff811660208301526001600160401b03630100000082041692820192909252600160581b909104600f0b606082015290565b6040516101ff91908151815260208083015162ffffff16908201526040808301516001600160401b031690820152606091820151600f0b9181019190915260800190565b3480156103ab57600080fd5b5061024c6103ba366004613cf2565b603b602052600090815260409020546001600160401b031681565b3480156103e157600080fd5b50603e546101eb906001600160a01b031681565b34801561040157600080fd5b50610415610410366004613d4e565b610dd6565b6040516101ff9190613dc7565b34801561042e57600080fd5b5061021e61043d366004613cf2565b610e3b565b34801561044e57600080fd5b5061046261045d366004613dd5565b610fef565b6040516101ff9190613dee565b34801561047b57600080fd5b5061041561048a366004613dd5565b600090815260366020526040902054600160c01b900460ff1690565b3480156104b257600080fd5b506101eb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e657600080fd5b506101c96104f5366004613e44565b61109c565b6101c9610508366004613e61565b611191565b34801561051957600080fd5b50610462610528366004613d4e565b61133e565b34801561053957600080fd5b506101c9610548366004613ef4565b611431565b34801561055957600080fd5b506101c9610568366004613f20565b61166e565b34801561057957600080fd5b506101c9610588366004613f20565b611805565b34801561059957600080fd5b506101c96105a8366004614011565b611898565b3480156105b957600080fd5b50603a5461024c906001600160401b031681565b3480156105d957600080fd5b506101c96105e83660046140e2565b611a6b565b3480156105f957600080fd5b5061024c7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad919061414a565b156106d35760405162461bcd60e51b81526004016106ca90614167565b60405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f919061414a565b1561077c5760405162461bcd60e51b81526004016106ca90614167565b60006107c261078b85806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561083157610831613d8f565b600281111561084257610842613d8f565b81525050905080604001516001600160401b0316876001600160401b0316116108d5576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e7665726966795374616c6542616c616e63653a2070726f60448201527f6f66206973206f6c646572207468616e206c61737420636865636b706f696e7460648201526084016106ca565b6001816060015160028111156108ed576108ed613d8f565b146109575760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c604482015273696461746f72206973206e6f742061637469766560601b60648201526084016106ca565b61099b61096486806141c4565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ee292505050565b610a1f5760405162461bcd60e51b815260206004820152604960248201527f456967656e506f642e7665726966795374616c6542616c616e63653a2076616c60448201527f696461746f72206d75737420626520736c617368656420746f206265206d61726064820152686b6564207374616c6560b81b608482015260a4016106ca565b610a31610a2b88610e3b565b87611f0c565b610a548635610a4087806141c4565b610a4d60208a018a61420d565b8651612067565b610a5e600061227e565b50505050505050565b6033546001600160a01b0316331480610a8a5750603e546001600160a01b031633145b610aa65760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b32919061414a565b15610b4f5760405162461bcd60e51b81526004016106ca90614167565b8584148015610b5d57508382145b610bed5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106ca565b603a546001600160401b03600160401b9091048116908a1611610c8d5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106ca565b610c9f610c998a610e3b565b89611f0c565b6000805b87811015610d4257610d248a358a8a84818110610cc257610cc26142c7565b9050602002016020810190610cd791906142dd565b898985818110610ce957610ce96142c7565b9050602002810190610cfb919061420d565b898987818110610d0d57610d0d6142c7565b9050602002810190610d1f91906141c4565b612514565b610d2e908361431a565b915080610d3a81614332565b915050610ca3565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b5050505050505050505050505050565b600080610e1884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b6000610e4a611fff600c61434d565b610e5d6001600160401b0384164261436c565b10610ec65760405162461bcd60e51b815260206004820152603360248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a2074696d604482015272657374616d70206f7574206f662072616e676560681b60648201526084016106ca565b604080516001600160401b03841660208201526000918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610f0e916143b3565b600060405180830381855afa9150503d8060008114610f49576040519150601f19603f3d011682016040523d82523d6000602084013e610f4e565b606091505b5091509150818015610f61575060008151115b610fd35760405162461bcd60e51b815260206004820152603860248201527f456967656e506f642e676574506172656e74426c6f636b526f6f743a20696e7660448201527f616c696420626c6f636b20726f6f742072657475726e6564000000000000000060648201526084016106ca565b80806020019051810190610fe791906143cf565b949350505050565b6110176040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff16600281111561108257611082613d8f565b600281111561109357611093613d8f565b90525092915050565b6033546001600160a01b03163314806110bf5750603e546001600160a01b031633145b6110db5760405162461bcd60e51b81526004016106ca90614253565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611167919061414a565b156111845760405162461bcd60e51b81526004016106ca90614167565b61118d8261227e565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111d95760405162461bcd60e51b81526004016106ca906143e8565b346801bc16d674ec800000146112655760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106ca565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec80000087876112a8612bf4565b8888886040518863ffffffff1660e01b81526004016112cc9695949392919061448e565b6000604051808303818588803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23858560405161132f9291906144dd565b60405180910390a15050505050565b6113666040805160808101825260008082526020820181905291810182905290606082015290565b603660006113a985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612afa92505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561141657611416613d8f565b600281111561142757611427613d8f565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114795760405162461bcd60e51b81526004016106ca906143e8565b611487633b9aca0082614507565b156115115760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106ca565b6000611521633b9aca008361451b565b6034549091506001600160401b0390811690821611156115da5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106ca565b603480548291906000906115f89084906001600160401b031661452f565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161165791815260200190565b60405180910390a26116698383612c39565b505050565b600054610100900460ff161580801561168e5750600054600160ff909116105b806116a85750303b1580156116a8575060005460ff166001145b61170b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106ca565b6000805460ff19166001179055801561172e576000805461ff0019166101001790555b6001600160a01b0382166117a15760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106ca565b603380546001600160a01b0319166001600160a01b038416179055801561118d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b0316331461182f5760405162461bcd60e51b81526004016106ca90614557565b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146118c25760405162461bcd60e51b81526004016106ca90614557565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e919061414a565b1561196b5760405162461bcd60e51b81526004016106ca90614167565b82518451146119f65760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106ca565b60005b8451811015611a6457611a5283858381518110611a1857611a186142c7565b6020026020010151878481518110611a3257611a326142c7565b60200260200101516001600160a01b0316612d529092919063ffffffff16565b80611a5c81614332565b9150506119f9565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af7919061414a565b15611b145760405162461bcd60e51b81526004016106ca90614167565b603a54600160401b90046001600160401b031680611bc05760405162461bcd60e51b815260206004820152605860248201527f456967656e506f642e766572696679436865636b706f696e7450726f6f66733a60448201527f206d75737420686176652061637469766520636865636b706f696e7420746f2060648201527f706572666f726d20636865636b706f696e742070726f6f660000000000000000608482015260a4016106ca565b60408051608081018252603c54808252603d5462ffffff811660208401526001600160401b03630100000082041693830193909352600160581b909204600f0b606082015290611c109087612da4565b6000805b85811015611e645736878783818110611c2f57611c2f6142c7565b9050602002810190611c41919061459f565b80356000908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611cb257611cb2613d8f565b6002811115611cc357611cc3613d8f565b9052509050600181606001516002811115611ce057611ce0613d8f565b14611cec575050611e52565b856001600160401b031681604001516001600160401b031610611d10575050611e52565b600080611d2083898e3587612f20565b602089018051929450909250611d35826145b5565b62ffffff16905250606087018051839190611d519083906145d4565b600f0b905250611d618187614623565b84356000908152603660209081526040918290208651815492880151938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060870151939950869390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611e0657611e06613d8f565b021790555050835160405164ffffffffff90911691506001600160401b038a16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f90600090a3505050505b80611e5c81614332565b915050611c14565b506001600160401b038084166000908152603b6020526040812080548493919291611e9191859116614623565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610a5e82613042565b600081600081518110611ed357611ed36142c7565b60200260200101519050919050565b600081600381518110611ef757611ef76142c7565b60200260200101516000801b14159050919050565b611f186003602061434d565b611f25602083018361420d565b905014611f9a5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a2050726f6f662068617320696e636f7272656374206c656e67746800000060648201526084016106ca565b611fea611faa602083018361420d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925050843590506003613249565b61118d5760405162461bcd60e51b815260206004820152604260248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f743a20496e76616c696420737461746520726f6f74206d65726b6c652070726f60648201526137b360f11b608482015260a4016106ca565b600884146120e25760405162461bcd60e51b815260206004820152604e602482015260008051602061485d83398151915260448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106ca565b60056120f06028600161431a565b6120fa919061431a565b61210590602061434d565b82146121735760405162461bcd60e51b8152602060048201526043602482015260008051602061485d83398151915260448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106ca565b60006121b186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061326192505050565b9050600064ffffffffff83166121c96028600161431a565b600b901b17905061221485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250869150859050613249565b6122745760405162461bcd60e51b815260206004820152603d602482015260008051602061485d83398151915260448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106ca565b5050505050505050565b603a54600160401b90046001600160401b03161561231f5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f642e5f7374617274436865636b706f696e743a206d7573742060448201527f66696e6973682070726576696f757320636865636b706f696e74206265666f72606482015271329039ba30b93a34b7339030b737ba3432b960711b608482015260a4016106ca565b603a54426001600160401b03908116911614156123a45760405162461bcd60e51b815260206004820152603f60248201527f456967656e506f642e5f7374617274436865636b706f696e743a2063616e6e6f60448201527f7420636865636b706f696e7420747769636520696e206f6e6520626c6f636b0060648201526084016106ca565b6034546000906001600160401b03166123c1633b9aca004761451b565b6123cb919061452f565b90508180156123e157506001600160401b038116155b156124545760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f642e5f7374617274436865636b706f696e743a206e6f20626160448201527f6c616e636520617661696c61626c6520746f20636865636b706f696e7400000060648201526084016106ca565b6000604051806080016040528061246a42610e3b565b815260200160395462ffffff168152602001836001600160401b031681526020016000600f0b815250905042603a60086101000a8154816001600160401b0302191690836001600160401b031602179055506124c581613042565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b600080612553848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611ebe92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156125c2576125c2613d8f565b60028111156125d3576125d3613d8f565b90525090506000816060015160028111156125f0576125f0613d8f565b146126815760405162461bcd60e51b8152602060048201526061602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e616374697660648201527f6520746f2070726f7665207769746864726177616c2063726564656e7469616c6084820152607360f81b60a482015260c4016106ca565b6001600160401b0380166126c786868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061350e92505050565b6001600160401b031614156127505760405162461bcd60e51b8152602060048201526055602482015260008051602061483d83398151915260448201527f7469616c733a2076616c696461746f72206d75737420626520696e207468652060648201527470726f63657373206f662061637469766174696e6760581b608482015260a4016106ca565b6001600160401b03801661279686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061353392505050565b6001600160401b03161461280e5760405162461bcd60e51b81526020600482015260446024820181905260008051602061483d833981519152908201527f7469616c733a2076616c696461746f72206d757374206e6f742062652065786960648201526374696e6760e01b608482015260a4016106ca565b612816612bf4565b61281f9061464e565b61285b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061354b92505050565b146128ca5760405162461bcd60e51b8152602060048201526045602482015260008051602061483d83398151915260448201527f7469616c733a2070726f6f66206973206e6f7420666f72207468697320456967606482015264195b941bd960da1b608482015260a4016106ca565b600061290886868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061356092505050565b90506129188a87878b8b8e612067565b6039805490600061292883614332565b9091555050603a54600090600160401b90046001600160401b03161561296057603a54600160401b90046001600160401b031661296d565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190526000858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612a4357612a43613d8f565b02179055505060405164ffffffffff8c1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a1612aeb633b9aca006001600160401b03841661434d565b9b9a5050505050505050505050565b60008151603014612b835760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106ca565b604051600290612b9a908490600090602001614672565b60408051601f1981840301815290829052612bb4916143b3565b602060405180830381855afa158015612bd1573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e3591906143cf565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b80471015612c895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106ca565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612cd6576040519150601f19603f3d011682016040523d82523d6000602084013e612cdb565b606091505b50509050806116695760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106ca565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611669908490613578565b612db06005600361431a565b612dbb90602061434d565b612dc8602083018361420d565b905014612e4b5760405162461bcd60e51b8152602060048201526044602482018190527f426561636f6e436861696e50726f6f66732e76657269667942616c616e636543908201527f6f6e7461696e65723a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b606c612e9c612e5d602084018461420d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250508535905084613249565b6116695760405162461bcd60e51b815260206004820152604960248201527f426561636f6e436861696e50726f6f66732e76657269667942616c616e63654360448201527f6f6e7461696e65723a20696e76616c69642062616c616e636520636f6e7461696064820152683732b910383937b7b360b91b608482015260a4016106ca565b83516020850151600091829182612f3887848861364a565b9050816001600160401b0316816001600160401b031614612fb257612f5d81836137c1565b6040805164ffffffffff861681526001600160401b038b8116602083015284168183015290519196507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01526130365760398054906000612fe0836146a1565b9091555050600260608a0152612ff5856146b8565b93508264ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50505094509492505050565b602081015162ffffff166131c9576000633b9aca00826060015183604001516001600160401b031661307491906145d4565b600f0b61308191906146df565b60408301516034805492935090916000906130a69084906001600160401b0316614623565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b81049092166001600160801b0319909216919091179055506000603c55603d80546001600160d81b031916905560335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b15801561316b57600080fd5b505af115801561317f573d6000803e3d6000fd5b5050603a546040518481526001600160401b0390911692507f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e44915060200160405180910390a25050565b8051603c556020810151603d8054604084015160608501516fffffffffffffffffffffffffffffffff16600160581b026fffffffffffffffffffffffffffffffff60581b196001600160401b039092166301000000026affffffffffffffffffffff1990931662ffffff9095169490941791909117169190911790555b50565b6000836132578685856137d9565b1495945050505050565b60008060028351613272919061451b565b90506000816001600160401b0381111561328e5761328e613f3d565b6040519080825280602002602001820160405280156132b7578160200160208202803683370190505b50905060005b828110156133be576002856132d2838361434d565b815181106132e2576132e26142c7565b6020026020010151868360026132f8919061434d565b61330390600161431a565b81518110613313576133136142c7565b6020026020010151604051602001613335929190918252602082015260400190565b60408051601f198184030181529082905261334f916143b3565b602060405180830381855afa15801561336c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061338f91906143cf565b8282815181106133a1576133a16142c7565b6020908102919091010152806133b681614332565b9150506132bd565b506133ca60028361451b565b91505b81156134ea5760005b828110156134d7576002826133eb838361434d565b815181106133fb576133fb6142c7565b602002602001015183836002613411919061434d565b61341c90600161431a565b8151811061342c5761342c6142c7565b602002602001015160405160200161344e929190918252602082015260400190565b60408051601f1981840301815290829052613468916143b3565b602060405180830381855afa158015613485573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906134a891906143cf565b8282815181106134ba576134ba6142c7565b6020908102919091010152806134cf81614332565b9150506133d6565b506134e360028361451b565b91506133cd565b806000815181106134fd576134fd6142c7565b602002602001015192505050919050565b6000610e3582600581518110613526576135266142c7565b6020026020010151613925565b6000610e3582600681518110613526576135266142c7565b600081600181518110611ed357611ed36142c7565b6000610e3582600281518110613526576135266142c7565b60006135cd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661398c9092919063ffffffff16565b80519091501561166957808060200190518101906135eb919061414a565b6116695760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106ca565b60006136586026600161431a565b61366390602061434d565b613670604084018461420d565b9050146136e15760405162461bcd60e51b81526020600482015260446024820181905260008051602061485d833981519152908201527f7242616c616e63653a2050726f6f662068617320696e636f7272656374206c656064820152630dccee8d60e31b608482015260a4016106ca565b60006136ee600485614764565b64ffffffffff169050613748613707604085018561420d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508992505050602086013584613249565b6137a85760405162461bcd60e51b815260206004820152603e602482015260008051602061485d83398151915260448201527f7242616c616e63653a20496e76616c6964206d65726b6c652070726f6f66000060648201526084016106ca565b6137b683602001358561399b565b9150505b9392505050565b60006137ba6001600160401b03808416908516614788565b600083516000141580156137f85750602084516137f69190614507565b155b6138875760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106ca565b604080516020808201909252848152905b8551811161391b576138ab600285614507565b6138de578151600052808601516020526020826040600060026107d05a03fa6138d357600080fd5b600284049350613909565b8086015160005281516020526020826040600060026107d05a03fa61390257600080fd5b6002840493505b61391460208261431a565b9050613898565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610fe784846000856139c8565b6000806139a96004846147d8565b6139b49060406147fc565b64ffffffffff169050610fe784821b613925565b606082471015613a295760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106ca565b6001600160a01b0385163b613a805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ca565b600080866001600160a01b03168587604051613a9c91906143b3565b60006040518083038185875af1925050503d8060008114613ad9576040519150601f19603f3d011682016040523d82523d6000602084013e613ade565b606091505b5091509150613aee828286613af9565b979650505050505050565b60608315613b085750816137ba565b825115613b185782518084602001fd5b8160405162461bcd60e51b81526004016106ca9190614829565b80356001600160401b0381168114613b4957600080fd5b919050565b600060408284031215613b6057600080fd5b50919050565b600080600060608486031215613b7b57600080fd5b613b8484613b32565b925060208401356001600160401b0380821115613ba057600080fd5b613bac87838801613b4e565b93506040860135915080821115613bc257600080fd5b50613bcf86828701613b4e565b9150509250925092565b60008083601f840112613beb57600080fd5b5081356001600160401b03811115613c0257600080fd5b6020830191508360208260051b8501011115613c1d57600080fd5b9250929050565b60008060008060008060008060a0898b031215613c4057600080fd5b613c4989613b32565b975060208901356001600160401b0380821115613c6557600080fd5b613c718c838d01613b4e565b985060408b0135915080821115613c8757600080fd5b613c938c838d01613bd9565b909850965060608b0135915080821115613cac57600080fd5b613cb88c838d01613bd9565b909650945060808b0135915080821115613cd157600080fd5b50613cde8b828c01613bd9565b999c989b5096995094979396929594505050565b600060208284031215613d0457600080fd5b6137ba82613b32565b60008083601f840112613d1f57600080fd5b5081356001600160401b03811115613d3657600080fd5b602083019150836020828501011115613c1d57600080fd5b60008060208385031215613d6157600080fd5b82356001600160401b03811115613d7757600080fd5b613d8385828601613d0d565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110613dc357634e487b7160e01b600052602160045260246000fd5b9052565b60208101610e358284613da5565b600060208284031215613de757600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151613e2f6060840182613da5565b5092915050565b801515811461324657600080fd5b600060208284031215613e5657600080fd5b81356137ba81613e36565b600080600080600060608688031215613e7957600080fd5b85356001600160401b0380821115613e9057600080fd5b613e9c89838a01613d0d565b90975095506020880135915080821115613eb557600080fd5b50613ec288828901613d0d565b96999598509660400135949350505050565b6001600160a01b038116811461324657600080fd5b8035613b4981613ed4565b60008060408385031215613f0757600080fd5b8235613f1281613ed4565b946020939093013593505050565b600060208284031215613f3257600080fd5b81356137ba81613ed4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f7b57613f7b613f3d565b604052919050565b60006001600160401b03821115613f9c57613f9c613f3d565b5060051b60200190565b600082601f830112613fb757600080fd5b81356020613fcc613fc783613f83565b613f53565b82815260059290921b84018101918181019086841115613feb57600080fd5b8286015b848110156140065780358352918301918301613fef565b509695505050505050565b60008060006060848603121561402657600080fd5b83356001600160401b038082111561403d57600080fd5b818601915086601f83011261405157600080fd5b81356020614061613fc783613f83565b82815260059290921b8401810191818101908a84111561408057600080fd5b948201945b838610156140a757853561409881613ed4565b82529482019490820190614085565b975050870135925050808211156140bd57600080fd5b506140ca86828701613fa6565b9250506140d960408501613ee9565b90509250925092565b6000806000604084860312156140f757600080fd5b83356001600160401b038082111561410e57600080fd5b61411a87838801613b4e565b9450602086013591508082111561413057600080fd5b5061413d86828701613bd9565b9497909650939450505050565b60006020828403121561415c57600080fd5b81516137ba81613e36565b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b6000808335601e198436030181126141db57600080fd5b8301803591506001600160401b038211156141f557600080fd5b6020019150600581901b3603821315613c1d57600080fd5b6000808335601e1984360301811261422457600080fd5b8301803591506001600160401b0382111561423e57600080fd5b602001915036819003821315613c1d57600080fd5b6020808252604e908201527f456967656e506f642e6f6e6c794f776e65724f7250726f6f665375626d69747460408201527f65723a2063616c6c6572206973206e6f7420706f64206f776e6572206f72207060608201526d3937b7b31039bab136b4ba3a32b960911b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156142ef57600080fd5b813564ffffffffff811681146137ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561432d5761432d614304565b500190565b600060001982141561434657614346614304565b5060010190565b600081600019048311821515161561436757614367614304565b500290565b60008282101561437e5761437e614304565b500390565b60005b8381101561439e578181015183820152602001614386565b838111156143ad576000848401525b50505050565b600082516143c5818460208701614383565b9190910192915050565b6000602082840312156143e157600080fd5b5051919050565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261447a816020860160208601614383565b601f01601f19169290920160200192915050565b6080815260006144a260808301888a614439565b82810360208401526144b48188614462565b905082810360408401526144c9818688614439565b915050826060830152979650505050505050565b602081526000610fe7602083018486614439565b634e487b7160e01b600052601260045260246000fd5b600082614516576145166144f1565b500690565b60008261452a5761452a6144f1565b500490565b60006001600160401b038381169083168181101561454f5761454f614304565b039392505050565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b60008235605e198336030181126143c557600080fd5b600062ffffff8216806145ca576145ca614304565b6000190192915050565b600081600f0b83600f0b600082128260016001607f1b03038213811516156145fe576145fe614304565b8260016001607f1b031903821281161561461a5761461a614304565b50019392505050565b60006001600160401b0380831681851680830382111561464557614645614304565b01949350505050565b80516020808301519190811015613b605760001960209190910360031b1b16919050565b60008351614684818460208801614383565b6001600160801b0319939093169190920190815260100192915050565b6000816146b0576146b0614304565b506000190190565b600081600f0b60016001607f1b03198114156146d6576146d6614304565b60000392915050565b60006001600160ff1b038184138284138082168684048611161561470557614705614304565b600160ff1b600087128281168783058912161561472457614724614304565b6000871292508782058712848416161561474057614740614304565b8785058712818416161561475657614756614304565b505050929093029392505050565b600064ffffffffff8084168061477c5761477c6144f1565b92169190910492915050565b600081600f0b83600f0b600081128160016001607f1b0319018312811516156147b3576147b3614304565b8160016001607f1b030183138116156147ce576147ce614304565b5090039392505050565b600064ffffffffff808416806147f0576147f06144f1565b92169190910692915050565b600064ffffffffff8083168185168183048111821515161561482057614820614304565b02949350505050565b6020815260006137ba602083018461446256fe456967656e506f642e5f7665726966795769746864726177616c43726564656e426561636f6e436861696e50726f6f66732e76657269667956616c696461746fa2646970667358221220f9f5d60682fdf4bd864fc835508826f6acc08906f8f542cf21a19958bf5c855064736f6c634300080c0033",
+ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_ethPOS\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"},{\"name\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"},{\"name\":\"_GENESIS_TIME\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"GENESIS_TIME\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activeValidatorCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkpointBalanceExitedGwei\",\"inputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentCheckpoint\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.Checkpoint\",\"components\":[{\"name\":\"beaconBlockRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proofsRemaining\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"podBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"balanceDeltasGwei\",\"type\":\"int64\",\"internalType\":\"int64\"},{\"name\":\"prevBeaconBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentCheckpointTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ethPOS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getParentBlockRoot\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastCheckpointTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"podOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proofSubmitter\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recoverTokens\",\"inputs\":[{\"name\":\"tokenList\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"amountsToWithdraw\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setProofSubmitter\",\"inputs\":[{\"name\":\"newProofSubmitter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"depositDataRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"startCheckpoint\",\"inputs\":[{\"name\":\"revertIfNoBalance\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"validatorPubkeyHashToInfo\",\"inputs\":[{\"name\":\"validatorPubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.ValidatorInfo\",\"components\":[{\"name\":\"validatorIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastCheckpointedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorPubkeyToInfo\",\"inputs\":[{\"name\":\"validatorPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.ValidatorInfo\",\"components\":[{\"name\":\"validatorIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"restakedBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastCheckpointedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorStatus\",\"inputs\":[{\"name\":\"validatorPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatorStatus\",\"inputs\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIEigenPodTypes.VALIDATOR_STATUS\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyCheckpointProofs\",\"inputs\":[{\"name\":\"balanceContainerProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.BalanceContainerProof\",\"components\":[{\"name\":\"balanceContainerRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"proofs\",\"type\":\"tuple[]\",\"internalType\":\"structBeaconChainProofs.BalanceProof[]\",\"components\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"balanceRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyStaleBalance\",\"inputs\":[{\"name\":\"beaconTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stateRootProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.StateRootProof\",\"components\":[{\"name\":\"beaconStateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.ValidatorProof\",\"components\":[{\"name\":\"validatorFields\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyWithdrawalCredentials\",\"inputs\":[{\"name\":\"beaconTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stateRootProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.StateRootProof\",\"components\":[{\"name\":\"beaconStateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"validatorIndices\",\"type\":\"uint40[]\",\"internalType\":\"uint40[]\"},{\"name\":\"validatorFieldsProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"validatorFields\",\"type\":\"bytes32[][]\",\"internalType\":\"bytes32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawRestakedBeaconChainETH\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amountWei\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawableRestakedExecutionLayerGwei\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"CheckpointCreated\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"beaconBlockRoot\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validatorCount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CheckpointFinalized\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"totalShareDeltaWei\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EigenPodStaked\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NonBeaconChainETHReceived\",\"inputs\":[{\"name\":\"amountReceived\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProofSubmitterUpdated\",\"inputs\":[{\"name\":\"prevProofSubmitter\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newProofSubmitter\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RestakedBeaconChainETHWithdrawn\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorBalanceUpdated\",\"inputs\":[{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":false,\"internalType\":\"uint40\"},{\"name\":\"balanceTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newValidatorBalanceGwei\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorCheckpointed\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":true,\"internalType\":\"uint40\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRestaked\",\"inputs\":[{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":false,\"internalType\":\"uint40\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWithdrawn\",\"inputs\":[{\"name\":\"checkpointTimestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":true,\"internalType\":\"uint40\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"BeaconTimestampTooFarInPast\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotCheckpointTwiceInSingleBlock\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CheckpointAlreadyActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CredentialsAlreadyVerified\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientWithdrawableBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEIP4788Response\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPubKeyLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidValidatorFieldsLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MsgValueNot32ETH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoActiveCheckpoint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoBalanceToCheckpoint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodOwner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodOwnerOrProofSubmitter\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TimestampOutOfRange\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorInactiveOnBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorIsExitingBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorNotActiveInPod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorNotSlashedOnBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalCredentialsNotForEigenPod\",\"inputs\":[]}]",
+ Bin: "0x60e060405234801561000f575f5ffd5b50604051613c7c380380613c7c83398101604081905261002e91610131565b6001600160a01b03808416608052821660a0526001600160401b03811660c05261005661005e565b505050610186565b5f54610100900460ff16156100c95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610118575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461012e575f5ffd5b50565b5f5f5f60608486031215610143575f5ffd5b835161014e8161011a565b602085015190935061015f8161011a565b60408501519092506001600160401b038116811461017b575f5ffd5b809150509250925092565b60805160a05160c051613a7f6101fd5f395f61060401525f81816102a90152818161063f015281816106e7015281816109ab01528181610b7501528181610e4e01528181610ef50152818161112b01528181611479015281816115ad01526127bb01525f81816104c60152610f5e0152613a7f5ff3fe608060405260043610610164575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c14610596578063ee94d67c146105b5578063f074ba62146105d4578063f2882461146105f3575f5ffd5b8063c490744214610539578063c4d66de814610558578063d06d558714610577575f5ffd5b80636fcd0e53146104545780637439841f1461048057806374cdd798146104b557806388676cad146104e85780639b4e463414610507578063b522538a1461051a575f5ffd5b80634665bcda1161011e5780634665bcda1461029857806347d28372146102cb57806352396a59146103b657806358753357146103ea57806358eaee79146104095780636c0d2d5a14610435575f5ffd5b8063039157d2146101a25780630b18ff66146101c35780632340e8d3146101ff5780633474aa16146102225780633f65cf191461025357806342ecff2a14610272575f5ffd5b3661019e576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101ad575f5ffd5b506101c16101bc366004612ff3565b610626565b005b3480156101ce575f5ffd5b506033546101e2906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561020a575f5ffd5b5061021460395481565b6040519081526020016101f6565b34801561022d575f5ffd5b506034546001600160401b03165b6040516001600160401b0390911681526020016101f6565b34801561025e575f5ffd5b506101c161026d3660046130ac565b610952565b34801561027d575f5ffd5b50603a5461023b90600160401b90046001600160401b031681565b3480156102a3575f5ffd5b506101e27f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d6575f5ffd5b5061035b6040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b6040516101f691905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103c1575f5ffd5b5061023b6103d0366004613181565b603b6020525f90815260409020546001600160401b031681565b3480156103f5575f5ffd5b50603e546101e2906001600160a01b031681565b348015610414575f5ffd5b506104286104233660046131de565b610bda565b6040516101f69190613250565b348015610440575f5ffd5b5061021461044f366004613181565b610c3c565b34801561045f575f5ffd5b5061047361046e36600461325e565b610d4a565b6040516101f69190613275565b34801561048b575f5ffd5b5061042861049a36600461325e565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104c0575f5ffd5b506101e27f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f3575f5ffd5b506101c16105023660046132d8565b610df5565b6101c16105153660046132f3565b610eea565b348015610525575f5ffd5b506104736105343660046131de565b611031565b348015610544575f5ffd5b506101c1610553366004613383565b611120565b348015610563575f5ffd5b506101c16105723660046133ad565b611257565b348015610582575f5ffd5b506101c16105913660046133ad565b6113a1565b3480156105a1575f5ffd5b506101c16105b0366004613498565b611435565b3480156105c0575f5ffd5b50603a5461023b906001600160401b031681565b3480156105df575f5ffd5b506101c16105ee36600461356a565b611594565b3480156105fe575f5ffd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561068c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b091906135d1565b156106ce5760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610734573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075891906135d1565b156107765760405163840a48d560e01b815260040160405180910390fd5b5f6107ba61078485806135ec565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061199192505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156108285761082861321c565b60028111156108395761083961321c565b81525050905080604001516001600160401b0316876001600160401b031611610875576040516337e07ffd60e01b815260040160405180910390fd5b60018160600151600281111561088d5761088d61321c565b146108ab5760405163d49e19a760e01b815260040160405180910390fd5b6108ee6108b886806135ec565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506119b392505050565b61090b5760405163161ce5ed60e31b815260040160405180910390fd5b61091d61091788610c3c565b876119db565b610940863561092c87806135ec565b61093960208a018a613631565b8651611a80565b6109495f611ba7565b50505050505050565b6033546001600160a01b03163314806109755750603e546001600160a01b031633145b6109925760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156109f8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1c91906135d1565b15610a3a5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a4857508382145b610a65576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610a9b576040516337e07ffd60e01b815260040160405180910390fd5b610aad610aa78a610c3c565b896119db565b5f805b87811015610b4557610b318a358a8a84818110610acf57610acf613673565b9050602002016020810190610ae49190613687565b898985818110610af657610af6613673565b9050602002810190610b089190613631565b898987818110610b1a57610b1a613673565b9050602002810190610b2c91906135ec565b611d27565b610b3b90836136bf565b9150600101610ab0565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015610bb8575f5ffd5b505af1158015610bca573d5f5f3e3d5ffd5b5050505050505050505050505050565b5f5f610c1a84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506121dc92505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610c4a611fff600c6136d2565b610c5d6001600160401b038416426136e9565b10610c7b57604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610cc291613713565b5f60405180830381855afa9150503d805f8114610cfa576040519150601f19603f3d011682016040523d82523d5f602084013e610cff565b606091505b5091509150818015610d1157505f8151115b610d2e5760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610d42919061371e565b949350505050565b610d71604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610ddb57610ddb61321c565b6002811115610dec57610dec61321c565b90525092915050565b6033546001600160a01b0316331480610e185750603e546001600160a01b031633145b610e355760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610e9b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ebf91906135d1565b15610edd5760405163840a48d560e01b815260040160405180910390fd5b610ee682611ba7565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f3357604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610f5c5760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787610f9f61226d565b8888886040518863ffffffff1660e01b8152600401610fc39695949392919061378b565b5f604051808303818588803b158015610fda575f5ffd5b505af1158015610fec573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e2385856040516110229291906137d9565b60405180910390a15050505050565b611058604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61109985858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506121dc92505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156111055761110561321c565b60028111156111165761111661321c565b9052509392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461116957604051633213a66160e21b815260040160405180910390fd5b5f611178633b9aca0083613800565b9050611191633b9aca006001600160401b0383166136d2565b6034549092506001600160401b0390811690821611156111c4576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906111e19084906001600160401b0316613813565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161124091815260200190565b60405180910390a261125283836122b1565b505050565b5f54610100900460ff161580801561127557505f54600160ff909116105b8061128e5750303b15801561128e57505f5460ff166001145b6112f65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611317575f805461ff0019166101001790555b6001600160a01b03821661133e576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610ee6575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146113cc5760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114605760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156114c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ea91906135d1565b156115085760405163840a48d560e01b815260040160405180910390fd5b825184511461152a576040516343714afd60e01b815260040160405180910390fd5b5f5b845181101561158d576115858385838151811061154b5761154b613673565b602002602001015187848151811061156557611565613673565b60200260200101516001600160a01b03166123c69092919063ffffffff16565b60010161152c565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156115fa573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061161e91906135d1565b1561163c5760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f81900361167057604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c54808252603d5462ffffff811660208401526001600160401b0363010000008204811694840194909452600160581b810460070b6060840152600160981b90049092166080820152906116cf9087612418565b5f805b8581101561193857368787838181106116ed576116ed613673565b90506020028101906116ff9190613832565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561176f5761176f61321c565b60028111156117805761178061321c565b905250905060018160600151600281111561179d5761179d61321c565b146117a9575050611930565b856001600160401b031681604001516001600160401b0316106117cd575050611930565b5f80806117dd848a8f35886124c9565b60208b01805193965091945092506117f482613850565b62ffffff1690525060808801805184919061181090839061386d565b6001600160401b031690525060608801805183919061183090839061388c565b60070b905250611840818861386d565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b8360028111156118e4576118e461321c565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b6001016116d2565b506001600160401b038084165f908152603b60205260408120805484939192916119649185911661386d565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610949826125ec565b5f815f815181106119a4576119a4613673565b60200260200101519050919050565b5f816003815181106119c7576119c7613673565b60200260200101515f5f1b14159050919050565b6119e7600360206136d2565b6119f46020830183613631565b905014611a14576040516313717da960e21b815260040160405180910390fd5b611a63611a246020830183613631565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508692505084359050600361281b565b610ee6576040516309bde33960e01b815260040160405180910390fd5b60088414611aa15760405163200591bd60e01b815260040160405180910390fd5b6005611aaf602860016136bf565b611ab991906136bf565b611ac49060206136d2565b8214611ae3576040516313717da960e21b815260040160405180910390fd5b5f611b1f8686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061283292505050565b90505f64ffffffffff8316611b36602860016136bf565b600b901b179050611b8085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508c925086915085905061281b565b611b9d576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b603a54600160401b90046001600160401b031615611bd75760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611c05576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611c21633b9aca0047613800565b611c2b9190613813565b9050818015611c4157506001600160401b038116155b15611c5f576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611c7442610c3c565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611cd8816125ec565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611d648484808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061199192505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611dd257611dd261321c565b6002811115611de357611de361321c565b90525090505f81606001516002811115611dff57611dff61321c565b14611e1d576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611e628686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ac292505050565b6001600160401b031603611e8957604051631958236d60e21b815260040160405180910390fd5b6001600160401b038016611ece8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ae692505050565b6001600160401b031614611ef557604051632eade63760e01b815260040160405180910390fd5b611efd61226d565b611f06906138bb565b611f418686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612afd92505050565b14611f5f57604051633772dd5360e11b815260040160405180910390fd5b5f611f9b8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612b1192505050565b9050611fab8a87878b8b8e611a80565b60398054905f611fba836138de565b9091555050603a545f90600160401b90046001600160401b031615611ff157603a54600160401b90046001600160401b0316611ffe565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b8360028111156120d3576120d361321c565b021790555050603d80548492506013906120fe908490600160981b90046001600160401b031661386d565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161215e919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a16121cd633b9aca006001600160401b0384166136d2565b9b9a5050505050505050505050565b5f81516030146121ff57604051634f88323960e11b815260040160405180910390fd5b6040516002906122159084905f906020016138f6565b60408051601f198184030181529082905261222f91613713565b602060405180830381855afa15801561224a573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610c36919061371e565b60408051600160f81b60208201525f602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b804710156123015760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016112ed565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461234a576040519150601f19603f3d011682016040523d82523d5f602084013e61234f565b606091505b50509050806112525760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016112ed565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611252908490612b28565b612424600560036136bf565b61242f9060206136d2565b61243c6020830183613631565b90501461245c576040516313717da960e21b815260040160405180910390fd5b606c6124ac61246e6020840184613631565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525087925050853590508461281b565b611252576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816124e1878388612bfb565b9050846001600160401b0316816001600160401b03161461255b57612506858261391a565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036125e05760398054905f61258a83613949565b9091555050600260608a015261259f8461395e565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff161561268c578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916126a8916001600160401b031661386d565b90505f826060015183604001516126bf919061388c565b60408401516034805492935090915f906126e39084906001600160401b031661386d565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061273390633b9aca009085166136d2565b90505f612748633b9aca00600785900b613983565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b1580156127fe575f5ffd5b505af1158015612810573d5f5f3e3d5ffd5b505050505050505050565b5f83612828868585612cd9565b1495945050505050565b5f5f600283516128429190613800565b90505f816001600160401b0381111561285d5761285d6133c8565b604051908082528060200260200182016040528015612886578160200160208202803683370190505b5090505f5b82811015612980576002856128a083836136d2565b815181106128b0576128b0613673565b6020026020010151868360026128c691906136d2565b6128d19060016136bf565b815181106128e1576128e1613673565b6020026020010151604051602001612903929190918252602082015260400190565b60408051601f198184030181529082905261291d91613713565b602060405180830381855afa158015612938573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061295b919061371e565b82828151811061296d5761296d613673565b602090810291909101015260010161288b565b5061298c600283613800565b91505b8115612a9f575f5b82811015612a8c576002826129ac83836136d2565b815181106129bc576129bc613673565b6020026020010151838360026129d291906136d2565b6129dd9060016136bf565b815181106129ed576129ed613673565b6020026020010151604051602001612a0f929190918252602082015260400190565b60408051601f1981840301815290829052612a2991613713565b602060405180830381855afa158015612a44573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612a67919061371e565b828281518110612a7957612a79613673565b6020908102919091010152600101612997565b50612a98600283613800565b915061298f565b805f81518110612ab157612ab1613673565b602002602001015192505050919050565b5f610c3682600581518110612ad957612ad9613673565b6020026020010151612dad565b5f610c3682600681518110612ad957612ad9613673565b5f816001815181106119a4576119a4613673565b5f610c3682600281518110612ad957612ad9613673565b5f612b7c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612e149092919063ffffffff16565b905080515f1480612b9c575080806020019051810190612b9c91906135d1565b6112525760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016112ed565b5f612c08602660016136bf565b612c139060206136d2565b612c206040840184613631565b905014612c40576040516313717da960e21b815260040160405180910390fd5b5f612c4c6004856139b2565b64ffffffffff169050612ca5612c656040850185613631565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250899250505060208601358461281b565b612cc2576040516309bde33960e01b815260040160405180910390fd5b612cd0836020013585612e22565b95945050505050565b5f83515f14158015612cf6575060208451612cf491906139db565b155b612d13576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b85518111612da357612d376002856139db565b5f03612d695781515f528086015160205260208260405f60026107d05a03fa612d5e575f5ffd5b600284049350612d91565b808601515f52815160205260208260405f60026107d05a03fa612d8a575f5ffd5b6002840493505b612d9c6020826136bf565b9050612d24565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610d4284845f85612e4e565b5f80612e2f6004846139ee565b612e3a906040613a17565b64ffffffffff169050610d4284821b612dad565b606082471015612eaf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016112ed565b5f5f866001600160a01b03168587604051612eca9190613713565b5f6040518083038185875af1925050503d805f8114612f04576040519150601f19603f3d011682016040523d82523d5f602084013e612f09565b606091505b5091509150612f1a87838387612f25565b979650505050505050565b60608315612f935782515f03612f8c576001600160a01b0385163b612f8c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016112ed565b5081610d42565b610d428383815115612fa85781518083602001fd5b8060405162461bcd60e51b81526004016112ed9190613a37565b80356001600160401b0381168114612fd8575f5ffd5b919050565b5f60408284031215612fed575f5ffd5b50919050565b5f5f5f60608486031215613005575f5ffd5b61300e84612fc2565b925060208401356001600160401b03811115613028575f5ffd5b61303486828701612fdd565b92505060408401356001600160401b0381111561304f575f5ffd5b61305b86828701612fdd565b9150509250925092565b5f5f83601f840112613075575f5ffd5b5081356001600160401b0381111561308b575f5ffd5b6020830191508360208260051b85010111156130a5575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b0312156130c3575f5ffd5b6130cc89612fc2565b975060208901356001600160401b038111156130e6575f5ffd5b6130f28b828c01612fdd565b97505060408901356001600160401b0381111561310d575f5ffd5b6131198b828c01613065565b90975095505060608901356001600160401b03811115613137575f5ffd5b6131438b828c01613065565b90955093505060808901356001600160401b03811115613161575f5ffd5b61316d8b828c01613065565b999c989b5096995094979396929594505050565b5f60208284031215613191575f5ffd5b61319a82612fc2565b9392505050565b5f5f83601f8401126131b1575f5ffd5b5081356001600160401b038111156131c7575f5ffd5b6020830191508360208285010111156130a5575f5ffd5b5f5f602083850312156131ef575f5ffd5b82356001600160401b03811115613204575f5ffd5b613210858286016131a1565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b6003811061324c57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610c368284613230565b5f6020828403121561326e575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b03604084015116604083015260608301516132c16060840182613230565b5092915050565b80151581146132d5575f5ffd5b50565b5f602082840312156132e8575f5ffd5b813561319a816132c8565b5f5f5f5f5f60608688031215613307575f5ffd5b85356001600160401b0381111561331c575f5ffd5b613328888289016131a1565b90965094505060208601356001600160401b03811115613346575f5ffd5b613352888289016131a1565b96999598509660400135949350505050565b6001600160a01b03811681146132d5575f5ffd5b8035612fd881613364565b5f5f60408385031215613394575f5ffd5b823561339f81613364565b946020939093013593505050565b5f602082840312156133bd575f5ffd5b813561319a81613364565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715613404576134046133c8565b604052919050565b5f6001600160401b03821115613424576134246133c8565b5060051b60200190565b5f82601f83011261343d575f5ffd5b813561345061344b8261340c565b6133dc565b8082825260208201915060208360051b860101925085831115613471575f5ffd5b602085015b8381101561348e578035835260209283019201613476565b5095945050505050565b5f5f5f606084860312156134aa575f5ffd5b83356001600160401b038111156134bf575f5ffd5b8401601f810186136134cf575f5ffd5b80356134dd61344b8261340c565b8082825260208201915060208360051b8501019250888311156134fe575f5ffd5b6020840193505b8284101561352957833561351881613364565b825260209384019390910190613505565b955050505060208401356001600160401b03811115613546575f5ffd5b6135528682870161342e565b92505061356160408501613378565b90509250925092565b5f5f5f6040848603121561357c575f5ffd5b83356001600160401b03811115613591575f5ffd5b61359d86828701612fdd565b93505060208401356001600160401b038111156135b8575f5ffd5b6135c486828701613065565b9497909650939450505050565b5f602082840312156135e1575f5ffd5b815161319a816132c8565b5f5f8335601e19843603018112613601575f5ffd5b8301803591506001600160401b0382111561361a575f5ffd5b6020019150600581901b36038213156130a5575f5ffd5b5f5f8335601e19843603018112613646575f5ffd5b8301803591506001600160401b0382111561365f575f5ffd5b6020019150368190038213156130a5575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613697575f5ffd5b813564ffffffffff8116811461319a575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c3657610c366136ab565b8082028115828204841417610c3657610c366136ab565b81810381811115610c3657610c366136ab565b5f81518060208401855e5f93019283525090919050565b5f61319a82846136fc565b5f6020828403121561372e575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b608081525f61379e60808301888a613735565b82810360208401526137b0818861375d565b905082810360408401526137c5818688613735565b915050826060830152979650505050505050565b602081525f610d42602083018486613735565b634e487b7160e01b5f52601260045260245ffd5b5f8261380e5761380e6137ec565b500490565b6001600160401b038281168282160390811115610c3657610c366136ab565b5f8235605e19833603018112613846575f5ffd5b9190910192915050565b5f62ffffff821680613864576138646136ab565b5f190192915050565b6001600160401b038181168382160190811115610c3657610c366136ab565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610c3657610c366136ab565b80516020808301519190811015612fed575f1960209190910360031b1b16919050565b5f600182016138ef576138ef6136ab565b5060010190565b5f61390182856136fc565b6001600160801b03199390931683525050601001919050565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610c3657610c366136ab565b5f81613957576139576136ab565b505f190190565b5f8160070b677fffffffffffffff19810361397b5761397b6136ab565b5f0392915050565b8082025f8212600160ff1b8414161561399e5761399e6136ab565b8181058314821517610c3657610c366136ab565b5f64ffffffffff8316806139c8576139c86137ec565b8064ffffffffff84160491505092915050565b5f826139e9576139e96137ec565b500690565b5f64ffffffffff831680613a0457613a046137ec565b8064ffffffffff84160691505092915050565b64ffffffffff81811683821602908116908181146132c1576132c16136ab565b602081525f61319a602083018461375d56fea2646970667358221220b0eaf8d41aaf00a3ebab3f4140a4ab05e7c299032448e83819d997d107d3974364736f6c634300081b0033",
}
// EigenPodABI is the input ABI used to generate the binding from.
@@ -338,16 +339,16 @@ func (_EigenPod *EigenPodCallerSession) CheckpointBalanceExitedGwei(arg0 uint64)
// CurrentCheckpoint is a free data retrieval call binding the contract method 0x47d28372.
//
-// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int128))
-func (_EigenPod *EigenPodCaller) CurrentCheckpoint(opts *bind.CallOpts) (IEigenPodCheckpoint, error) {
+// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int64,uint64))
+func (_EigenPod *EigenPodCaller) CurrentCheckpoint(opts *bind.CallOpts) (IEigenPodTypesCheckpoint, error) {
var out []interface{}
err := _EigenPod.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
@@ -355,15 +356,15 @@ func (_EigenPod *EigenPodCaller) CurrentCheckpoint(opts *bind.CallOpts) (IEigenP
// CurrentCheckpoint is a free data retrieval call binding the contract method 0x47d28372.
//
-// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int128))
-func (_EigenPod *EigenPodSession) CurrentCheckpoint() (IEigenPodCheckpoint, error) {
+// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int64,uint64))
+func (_EigenPod *EigenPodSession) CurrentCheckpoint() (IEigenPodTypesCheckpoint, error) {
return _EigenPod.Contract.CurrentCheckpoint(&_EigenPod.CallOpts)
}
// CurrentCheckpoint is a free data retrieval call binding the contract method 0x47d28372.
//
-// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int128))
-func (_EigenPod *EigenPodCallerSession) CurrentCheckpoint() (IEigenPodCheckpoint, error) {
+// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int64,uint64))
+func (_EigenPod *EigenPodCallerSession) CurrentCheckpoint() (IEigenPodTypesCheckpoint, error) {
return _EigenPod.Contract.CurrentCheckpoint(&_EigenPod.CallOpts)
}
@@ -587,15 +588,15 @@ func (_EigenPod *EigenPodCallerSession) ProofSubmitter() (common.Address, error)
// ValidatorPubkeyHashToInfo is a free data retrieval call binding the contract method 0x6fcd0e53.
//
// Solidity: function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) view returns((uint64,uint64,uint64,uint8))
-func (_EigenPod *EigenPodCaller) ValidatorPubkeyHashToInfo(opts *bind.CallOpts, validatorPubkeyHash [32]byte) (IEigenPodValidatorInfo, error) {
+func (_EigenPod *EigenPodCaller) ValidatorPubkeyHashToInfo(opts *bind.CallOpts, validatorPubkeyHash [32]byte) (IEigenPodTypesValidatorInfo, error) {
var out []interface{}
err := _EigenPod.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
@@ -604,29 +605,29 @@ func (_EigenPod *EigenPodCaller) ValidatorPubkeyHashToInfo(opts *bind.CallOpts,
// ValidatorPubkeyHashToInfo is a free data retrieval call binding the contract method 0x6fcd0e53.
//
// Solidity: function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) view returns((uint64,uint64,uint64,uint8))
-func (_EigenPod *EigenPodSession) ValidatorPubkeyHashToInfo(validatorPubkeyHash [32]byte) (IEigenPodValidatorInfo, error) {
+func (_EigenPod *EigenPodSession) ValidatorPubkeyHashToInfo(validatorPubkeyHash [32]byte) (IEigenPodTypesValidatorInfo, error) {
return _EigenPod.Contract.ValidatorPubkeyHashToInfo(&_EigenPod.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 (_EigenPod *EigenPodCallerSession) ValidatorPubkeyHashToInfo(validatorPubkeyHash [32]byte) (IEigenPodValidatorInfo, error) {
+func (_EigenPod *EigenPodCallerSession) ValidatorPubkeyHashToInfo(validatorPubkeyHash [32]byte) (IEigenPodTypesValidatorInfo, error) {
return _EigenPod.Contract.ValidatorPubkeyHashToInfo(&_EigenPod.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 (_EigenPod *EigenPodCaller) ValidatorPubkeyToInfo(opts *bind.CallOpts, validatorPubkey []byte) (IEigenPodValidatorInfo, error) {
+func (_EigenPod *EigenPodCaller) ValidatorPubkeyToInfo(opts *bind.CallOpts, validatorPubkey []byte) (IEigenPodTypesValidatorInfo, error) {
var out []interface{}
err := _EigenPod.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
@@ -635,14 +636,14 @@ func (_EigenPod *EigenPodCaller) ValidatorPubkeyToInfo(opts *bind.CallOpts, vali
// ValidatorPubkeyToInfo is a free data retrieval call binding the contract method 0xb522538a.
//
// Solidity: function validatorPubkeyToInfo(bytes validatorPubkey) view returns((uint64,uint64,uint64,uint8))
-func (_EigenPod *EigenPodSession) ValidatorPubkeyToInfo(validatorPubkey []byte) (IEigenPodValidatorInfo, error) {
+func (_EigenPod *EigenPodSession) ValidatorPubkeyToInfo(validatorPubkey []byte) (IEigenPodTypesValidatorInfo, error) {
return _EigenPod.Contract.ValidatorPubkeyToInfo(&_EigenPod.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 (_EigenPod *EigenPodCallerSession) ValidatorPubkeyToInfo(validatorPubkey []byte) (IEigenPodValidatorInfo, error) {
+func (_EigenPod *EigenPodCallerSession) ValidatorPubkeyToInfo(validatorPubkey []byte) (IEigenPodTypesValidatorInfo, error) {
return _EigenPod.Contract.ValidatorPubkeyToInfo(&_EigenPod.CallOpts, validatorPubkey)
}
diff --git a/pkg/bindings/EigenPodManager/binding.go b/pkg/bindings/EigenPodManager/binding.go
index bdb1753833..63c5fafe19 100644
--- a/pkg/bindings/EigenPodManager/binding.go
+++ b/pkg/bindings/EigenPodManager/binding.go
@@ -31,8 +31,8 @@ var (
// EigenPodManagerMetaData contains all meta data concerning the EigenPodManager contract.
var EigenPodManagerMetaData = &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: "0x6101206040523480156200001257600080fd5b50604051620031693803806200316983398101604081905262000035916200014b565b6001600160a01b0380861660805280851660a05280841660c05280831660e0528116610100526200006562000070565b5050505050620001cb565b600054610100900460ff1615620000dd5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000130576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014857600080fd5b50565b600080600080600060a086880312156200016457600080fd5b8551620001718162000132565b6020870151909550620001848162000132565b6040870151909450620001978162000132565b6060870151909350620001aa8162000132565b6080870151909250620001bd8162000132565b809150509295509295909350565b60805160a05160c05160e05161010051612f286200024160003960008181610551015281816105fb01528181610b7901528181611313015281816117bf01526118af015260006104dd015260006102cf015260008181610263015281816112920152611e64015260006103af0152612f286000f3fe6080604052600436106101b75760003560e01c8063886f1195116100ec578063b13442711161008a578063ea4d3c9b11610064578063ea4d3c9b1461053f578063f2fde38b14610573578063f6848d2414610593578063fabc1cbc146105ce57600080fd5b8063b1344271146104cb578063beffbb89146104ff578063c2c51c401461051f57600080fd5b80639b4e4634116100c65780639b4e46341461044c5780639ba062751461045f578063a38406a314610495578063a6a509be146104b557600080fd5b8063886f1195146103e65780638da5cb5b146104065780639104c3191461042457600080fd5b8063595c6a671161015957806360f4062b1161013357806360f4062b1461035b578063715018a61461038857806374cdd7981461039d57806384d81062146103d157600080fd5b8063595c6a67146102f15780635ac86ab7146103065780635c975abb1461034657600080fd5b80631794bb3c116101955780631794bb3c14610231578063292b7b2b14610251578063387b13001461029d57806339b70e38146102bd57600080fd5b80630e81073c146101bc57806310d67a2f146101ef578063136439dd14610211575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046120fc565b6105ee565b6040519081526020015b60405180910390f35b3480156101fb57600080fd5b5061020f61020a366004612128565b61085d565b005b34801561021d57600080fd5b5061020f61022c366004612145565b610910565b34801561023d57600080fd5b5061020f61024c36600461215e565b610a4f565b34801561025d57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e6565b3480156102a957600080fd5b5061020f6102b836600461215e565b610b6e565b3480156102c957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fd57600080fd5b5061020f610f82565b34801561031257600080fd5b5061033661032136600461219f565b606654600160ff9092169190911b9081161490565b60405190151581526020016101e6565b34801561035257600080fd5b506066546101dc565b34801561036757600080fd5b506101dc610376366004612128565b609b6020526000908152604090205481565b34801561039457600080fd5b5061020f611049565b3480156103a957600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b3480156103dd57600080fd5b5061028561105d565b3480156103f257600080fd5b50606554610285906001600160a01b031681565b34801561041257600080fd5b506033546001600160a01b0316610285565b34801561043057600080fd5b5061028573beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b61020f61045a36600461220b565b611147565b34801561046b57600080fd5b5061028561047a366004612128565b6098602052600090815260409020546001600160a01b031681565b3480156104a157600080fd5b506102856104b0366004612128565b611236565b3480156104c157600080fd5b506101dc60995481565b3480156104d757600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561050b57600080fd5b5061020f61051a3660046120fc565b611308565b34801561052b57600080fd5b5061020f61053a3660046120fc565b611547565b34801561054b57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561057f57600080fd5b5061020f61058e366004612128565b61197b565b34801561059f57600080fd5b506103366105ae366004612128565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156105da57600080fd5b5061020f6105e9366004612145565b6119f1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106415760405162461bcd60e51b81526004016106389061227f565b60405180910390fd5b6001600160a01b0383166106bd5760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f20616464726573730000000000006064820152608401610638565b600082121561072b5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b6064820152608401610638565b610739633b9aca00836122f3565b156107ac5760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e740000006064820152608401610638565b6001600160a01b0383166000908152609b6020526040812054906107d0848361231d565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020612eb38339815191529061080f9087815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191528260405161084091815260200190565b60405180910390a26108528282611b4d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d4919061235e565b6001600160a01b0316336001600160a01b0316146109045760405162461bcd60e51b81526004016106389061237b565b61090d81611b8f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c91906123c5565b6109985760405162461bcd60e51b8152600401610638906123e7565b60665481811614610a115760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff1615808015610a6f5750600054600160ff909116105b80610a895750303b158015610a89575060005460ff166001145b610aec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610638565b6000805460ff191660011790558015610b0f576000805461ff0019166101001790555b610b1884611c86565b610b228383611cd8565b8015610b68576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb65760405162461bcd60e51b81526004016106389061227f565b6001600160a01b038316610c305760405162461bcd60e51b81526020600482015260476024820152600080516020612ed383398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a401610638565b6001600160a01b038216610cad5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a401610638565b6000811215610d1c5760405162461bcd60e51b81526020600482015260416024820152600080516020612ed383398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a401610638565b610d2a633b9aca00826122f3565b15610d9e5760405162461bcd60e51b815260206004820152604a6024820152600080516020612ed383398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a401610638565b6001600160a01b0383166000908152609b602052604081205490811215610f07576000610dca8261242f565b905080831115610e61576001600160a01b0385166000908152609b6020526040812055610df7818461244c565b9250846001600160a01b0316600080516020612eb383398151915282604051610e2291815260200190565b60405180910390a2846001600160a01b03166000805160206125858339815191526000604051610e5491815260200190565b60405180910390a2610f05565b6001600160a01b0385166000908152609b6020526040812054610e8590859061231d565b6001600160a01b0387166000818152609b6020526040908190208390555191925090600080516020612eb383398151915290610ec49087815260200190565b60405180910390a2856001600160a01b031660008051602061258583398151915282604051610ef591815260200190565b60405180910390a2505050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b5050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee91906123c5565b61100a5760405162461bcd60e51b8152600401610638906123e7565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611051611dc2565b61105b6000611c86565b565b6066546000908190600190811614156110b45760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316156111365760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b6064820152608401610638565b6000611140611e1c565b9250505090565b6066546000906001908116141561119c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610638565b336000908152609860205260409020546001600160a01b0316806111c5576111c2611e1c565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906111fb908b908b908b908b908b9060040161248c565b6000604051808303818588803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061085757611301836001600160a01b031660001b60405180610940016040528061090e81526020016125a561090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526112e69291602001612501565b60405160208183030381529060405280519060200120611f81565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113505760405162461bcd60e51b81526004016106389061227f565b60008112156113c75760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e656761746976650000000000000000006064820152608401610638565b6113d5633b9aca00826122f3565b1561144a576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e746064820152608401610638565b6001600160a01b0382166000908152609b602052604081205461146e908390612516565b905060008112156114ff5760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a401610638565b6001600160a01b0383166000818152609b602052604090819020839055516000805160206125858339815191529061153a9084815260200190565b60405180910390a2505050565b6001600160a01b0380831660009081526098602052604090205483911633146115c25760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b6064820152608401610638565b600260c95414156116155760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610638565b600260c9556001600160a01b0383166116b15760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a401610638565b6116bf633b9aca0083612555565b156117585760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a401610638565b6001600160a01b0383166000908152609b60205260408120549061177c848361231d565b6001600160a01b0386166000908152609b602052604081208290559091506117a48383611b4d565b9050801561190c57600081121561186f576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118038561242f565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561185257600080fd5b505af1158015611866573d6000803e3d6000fd5b5050505061190c565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156118f357600080fd5b505af1158015611907573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020612eb38339815191528660405161193591815260200190565b60405180910390a2856001600160a01b03166000805160206125858339815191528360405161196691815260200190565b60405180910390a25050600160c95550505050565b611983611dc2565b6001600160a01b0381166119e85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610638565b61090d81611c86565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a68919061235e565b6001600160a01b0316336001600160a01b031614611a985760405162461bcd60e51b81526004016106389061237b565b606654198119606654191614611b165760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610638565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610a44565b6000808313611b6d5760008213611b6657506000610857565b5080610857565b60008213611b8557611b7e8361242f565b9050610857565b611b7e8383612516565b6001600160a01b038116611c1d5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610638565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6065546001600160a01b0316158015611cf957506001600160a01b03821615155b611d7b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610638565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2611dbe82611b8f565b5050565b6033546001600160a01b0316331461105b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610638565b6000609960008154611e2d90612569565b9091555060408051610940810190915261090e808252600091611ecc91839133916125a56020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f1981840301815290829052611eb89291602001612501565b604051602081830303815290604052611fdd565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b1660218301526035820185905260558083018590528351808403909101815260759092019092528051910120600090611301565b600080844710156120305760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610638565b825161207e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610638565b8383516020850187f590506001600160a01b0381166120df5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610638565b949350505050565b6001600160a01b038116811461090d57600080fd5b6000806040838503121561210f57600080fd5b823561211a816120e7565b946020939093013593505050565b60006020828403121561213a57600080fd5b8135611301816120e7565b60006020828403121561215757600080fd5b5035919050565b60008060006060848603121561217357600080fd5b833561217e816120e7565b9250602084013561218e816120e7565b929592945050506040919091013590565b6000602082840312156121b157600080fd5b813560ff8116811461130157600080fd5b60008083601f8401126121d457600080fd5b50813567ffffffffffffffff8111156121ec57600080fd5b60208301915083602082850101111561220457600080fd5b9250929050565b60008060008060006060868803121561222357600080fd5b853567ffffffffffffffff8082111561223b57600080fd5b61224789838a016121c2565b9097509550602088013591508082111561226057600080fd5b5061226d888289016121c2565b96999598509660400135949350505050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082612302576123026122dd565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b038490038513161561233f5761233f612307565b600160ff1b839003841281161561235857612358612307565b50500190565b60006020828403121561237057600080fd5b8151611301816120e7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156123d757600080fd5b8151801515811461130157600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82141561244557612445612307565b5060000390565b60008282101561245e5761245e612307565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006124a0606083018789612463565b82810360208401526124b3818688612463565b9150508260408301529695505050505050565b6000815160005b818110156124e757602081850181015186830152016124cd565b818111156124f6576000828601525b509290920192915050565b60006120df61251083866124c6565b846124c6565b60008083128015600160ff1b85018412161561253457612534612307565b6001600160ff1b038401831381161561254f5761254f612307565b50500390565b600082612564576125646122dd565b500790565b600060001982141561257d5761257d612307565b506001019056fed4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a26469706673582212206b9b768cf7ce0f37e8d357babcedd55bd2af814f80d3fd0be5b582cf161a2c4064736f6c634300080c0033",
+ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_ethPOS\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"},{\"name\":\"_eigenPodBeacon\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"},{\"name\":\"_delegationManager\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainSlashingFactor\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burnableETHShares\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"increaseBurnableShares\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"addedSharesToBurn\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_initPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"numPods\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ownerToPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPod\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"podOwnerDepositShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recordBeaconChainETHBalanceUpdate\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"prevRestakedBalanceWei\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"balanceDeltaWei\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"depositSharesToRemove\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"depositDataRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"stakerDepositShares\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"depositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawSharesAsTokens\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BeaconChainETHDeposited\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconChainETHWithdrawalCompleted\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconChainSlashingFactorDecreased\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"prevBeaconChainSlashingFactor\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newBeaconChainSlashingFactor\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BurnableETHSharesIncreased\",\"inputs\":[{\"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\":\"NewTotalShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newTotalShares\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PodDeployed\",\"inputs\":[{\"name\":\"eigenPod\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PodSharesUpdated\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sharesDelta\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EigenPodAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStrategy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LegacyWithdrawalsNotCompleted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNegative\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNotMultipleOfGwei\",\"inputs\":[]}]",
+ Bin: "0x610100604052348015610010575f5ffd5b50604051612a80380380612a8083398101604081905261002f9161015c565b838383836001600160a01b03811661005a576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05290821660c0521660e052610080610089565b505050506101b8565b5f54610100900460ff16156100f45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610143575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610159575f5ffd5b50565b5f5f5f5f6080858703121561016f575f5ffd5b845161017a81610145565b602086015190945061018b81610145565b604086015190935061019c81610145565b60608601519092506101ad81610145565b939692955090935050565b60805160a05160c05160e0516128486102385f395f8181610530015281816106dd0152818161092501528181610a8101528181610df801528181610ea5015261116c01525f81816101f001528181610f6b015261167001525f61033701525f818161037e01528181610612015281816109cb015261127201526128485ff3fe6080604052600436106101ba575f3560e01c80639b4e4634116100f2578063d48e889411610092578063f5d4fed311610062578063f5d4fed314610571578063f6848d2414610586578063fabc1cbc146105bf578063fe243a17146105de575f5ffd5b8063d48e8894146104d5578063debe1eab14610500578063ea4d3c9b1461051f578063f2fde38b14610552575f5ffd5b8063a38406a3116100cd578063a38406a31461044a578063a3d75e0914610469578063a6a509be146104a1578063cd6dc687146104b6575f5ffd5b80639b4e4634146103e45780639ba06275146103f7578063a1ca780b1461042b575f5ffd5b8063715018a61161015d57806384d810621161013857806384d8106214610359578063886f11951461036d5780638da5cb5b146103a05780639104c319146103bd575f5ffd5b8063715018a6146102f3578063724af4231461030757806374cdd79814610326575f5ffd5b806350ff72251161019857806350ff72251461024e578063595c6a67146102825780635ac86ab7146102965780635c975abb146102d5575f5ffd5b8063136439dd146101be578063292b7b2b146101df5780632eae418c1461022f575b5f5ffd5b3480156101c9575f5ffd5b506101dd6101d8366004611af4565b6105fd565b005b3480156101ea575f5ffd5b506102127f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023a575f5ffd5b506101dd610249366004611b1f565b6106d2565b348015610259575f5ffd5b5061026d610268366004611b6d565b610918565b60408051928352602083019190915201610226565b34801561028d575f5ffd5b506101dd6109b6565b3480156102a1575f5ffd5b506102c56102b0366004611bab565b606654600160ff9092169190911b9081161490565b6040519015158152602001610226565b3480156102e0575f5ffd5b506066545b604051908152602001610226565b3480156102fe575f5ffd5b506101dd610a65565b348015610312575f5ffd5b506101dd610321366004611b6d565b610a76565b348015610331575f5ffd5b506102127f000000000000000000000000000000000000000000000000000000000000000081565b348015610364575f5ffd5b50610212610b9c565b348015610378575f5ffd5b506102127f000000000000000000000000000000000000000000000000000000000000000081565b3480156103ab575f5ffd5b506033546001600160a01b0316610212565b3480156103c8575f5ffd5b5061021273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6101dd6103f2366004611c09565b610c0c565b348015610402575f5ffd5b50610212610411366004611c7c565b60986020525f90815260409020546001600160a01b031681565b348015610436575f5ffd5b506101dd610445366004611c97565b610cc9565b348015610455575f5ffd5b50610212610464366004611c7c565b610f11565b348015610474575f5ffd5b50610488610483366004611c7c565b610fe2565b60405167ffffffffffffffff9091168152602001610226565b3480156104ac575f5ffd5b506102e560995481565b3480156104c1575f5ffd5b506101dd6104d0366004611cc9565b611045565b3480156104e0575f5ffd5b506102e56104ef366004611c7c565b609b6020525f908152604090205481565b34801561050b575f5ffd5b506101dd61051a366004611cc9565b611161565b34801561052a575f5ffd5b506102127f000000000000000000000000000000000000000000000000000000000000000081565b34801561055d575f5ffd5b506101dd61056c366004611c7c565b6111f7565b34801561057c575f5ffd5b506102e5609e5481565b348015610591575f5ffd5b506102c56105a0366004611c7c565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156105ca575f5ffd5b506101dd6105d9366004611af4565b611270565b3480156105e9575f5ffd5b506102e56105f8366004611cf3565b611386565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561065f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106839190611d2a565b6106a057604051631d77d47760e21b815260040160405180910390fd5b60665481811681146106c55760405163c61dca5d60e01b815260040160405180910390fd5b6106ce82611406565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461071b5760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461075857604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b03841661077f576040516339b190bb60e11b815260040160405180910390fd5b5f811361079f5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b6020526040812054908290821215610899575f6107cb83611d5d565b90505f818511156107e95750806107e28186611d77565b92506107ef565b505f9150835b5f6107fa8286611d8a565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061084a9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161088d91815260200190565b60405180910390a25050505b8015610910576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015f604051808303815f87803b1580156108f9575f5ffd5b505af115801561090b573d5f5f3e3d5ffd5b505050505b505050505050565b5f80336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109635760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146109a057604051632711b74d60e11b815260040160405180910390fd5b6109aa8584611443565b91509150935093915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a18573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3c9190611d2a565b610a5957604051631d77d47760e21b815260040160405180910390fd5b610a635f19611406565b565b610a6d611580565b610a635f6115da565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610abf5760405163f739589b60e01b815260040160405180910390fd5b6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610afc57604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b6020526040812054610b1f908390611db1565b90505f811215610b425760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610b8e9084815260200190565b60405180910390a250505050565b6066545f908190600190811603610bc65760405163840a48d560e01b815260040160405180910390fd5b335f908152609860205260409020546001600160a01b031615610bfc5760405163031a852160e21b815260040160405180910390fd5b5f610c0561162b565b9250505090565b6066545f90600190811603610c345760405163840a48d560e01b815260040160405180910390fd5b335f908152609860205260409020546001600160a01b031680610c5c57610c5961162b565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610c92908b908b908b908b908b90600401611dff565b5f604051808303818588803b158015610ca9575f5ffd5b505af1158015610cbb573d5f5f3e3d5ffd5b505050505050505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610d04576040516312e16d7160e11b815260040160405180910390fd5b610d0c611786565b6001600160a01b038416610d33576040516339b190bb60e11b815260040160405180910390fd5b610d41633b9aca0083611e4c565b15610d5f576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610d9857604051634b692bcf60e01b815260040160405180910390fd5b5f8312610e58575f5f610dab8786611443565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015610e3b575f5ffd5b505af1158015610e4d573d5f5f3e3d5ffd5b505050505050610f00565b5f610e6c8686610e6787611d5d565b6117df565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906360a0d1ce906064015f604051808303815f87803b158015610ee8575f5ffd5b505af1158015610efa573d5f5f3e3d5ffd5b50505050505b50610f0b600160c955565b50505050565b6001600160a01b038082165f9081526098602052604081205490911680610fdc57610fd9836001600160a01b03165f1b60405180610940016040528061090e8152602001611f0561090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f1981840301815290829052610fbe9291602001611e82565b604051602081830303815290604052805190602001206118d8565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061103857670de0b6b3a764000061103e565b80602001515b9392505050565b5f54610100900460ff161580801561106357505f54600160ff909116105b8061107c5750303b15801561107c57505f5460ff166001145b6110e45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611105575f805461ff0019166101001790555b61110e836115da565b61111782611406565b801561115c575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111aa5760405163f739589b60e01b815260040160405180910390fd5b80609e5f8282546111bb9190611e9e565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a15050565b6111ff611580565b6001600160a01b0381166112645760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016110db565b61126d816115da565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f09190611eb1565b6001600160a01b0316336001600160a01b0316146113215760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146113485760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146113c457604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b6020526040812054126113fe576001600160a01b0383165f908152609b6020526040902054610fd9565b505f92915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f806001600160a01b03841661146c576040516339b190bb60e11b815260040160405180910390fd5b5f83121561148d5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916114b18383611d8a565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906115019086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161154491815260200190565b60405180910390a25f8113611561575f5f94509450505050611579565b5f821261156e5781611570565b5f5b86945094505050505b9250929050565b6033546001600160a01b03163314610a635760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016110db565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f60995f815461163a90611ecc565b9091555060408051610940810190915261090e8082525f916116d79183913391611f056020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f19818403018152908290526116c39291602001611e82565b6040516020818303038152906040526118e4565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611718575f5ffd5b505af115801561172a573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b600260c954036117d85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016110db565b600260c955565b5f806117eb8385611d77565b90505f6117f786610fe2565b90505f61180f67ffffffffffffffff831684886119e6565b90505f61181c8284611ee4565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f610fd9838330611acb565b5f834710156119355760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064016110db565b81515f036119855760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016110db565b8282516020840186f590506001600160a01b03811661103e5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016110db565b5f80805f19858709858702925082811083820303915050805f03611a1d57838281611a1357611a13611e38565b049250505061103e565b808411611a645760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016110db565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b5f60208284031215611b04575f5ffd5b5035919050565b6001600160a01b038116811461126d575f5ffd5b5f5f5f5f60808587031215611b32575f5ffd5b8435611b3d81611b0b565b93506020850135611b4d81611b0b565b92506040850135611b5d81611b0b565b9396929550929360600135925050565b5f5f5f60608486031215611b7f575f5ffd5b8335611b8a81611b0b565b92506020840135611b9a81611b0b565b929592945050506040919091013590565b5f60208284031215611bbb575f5ffd5b813560ff8116811461103e575f5ffd5b5f5f83601f840112611bdb575f5ffd5b50813567ffffffffffffffff811115611bf2575f5ffd5b602083019150836020828501011115611579575f5ffd5b5f5f5f5f5f60608688031215611c1d575f5ffd5b853567ffffffffffffffff811115611c33575f5ffd5b611c3f88828901611bcb565b909650945050602086013567ffffffffffffffff811115611c5e575f5ffd5b611c6a88828901611bcb565b96999598509660400135949350505050565b5f60208284031215611c8c575f5ffd5b813561103e81611b0b565b5f5f5f60608486031215611ca9575f5ffd5b8335611cb481611b0b565b95602085013595506040909401359392505050565b5f5f60408385031215611cda575f5ffd5b8235611ce581611b0b565b946020939093013593505050565b5f5f60408385031215611d04575f5ffd5b8235611d0f81611b0b565b91506020830135611d1f81611b0b565b809150509250929050565b5f60208284031215611d3a575f5ffd5b8151801515811461103e575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b8201611d7157611d71611d49565b505f0390565b81810381811115610fdc57610fdc611d49565b8082018281125f831280158216821582161715611da957611da9611d49565b505092915050565b8181035f831280158383131683831282161715611dd057611dd0611d49565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f611e12606083018789611dd7565b8281036020840152611e25818688611dd7565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f82611e6657634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f611e96611e908386611e6b565b84611e6b565b949350505050565b80820180821115610fdc57610fdc611d49565b5f60208284031215611ec1575f5ffd5b815161103e81611b0b565b5f60018201611edd57611edd611d49565b5060010190565b67ffffffffffffffff8281168282160390811115610fdc57610fdc611d4956fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a96c5597674c26be0962de53794eb0e8efae2c5d17870ccfa03ec45286c1f5ef64736f6c634300081b0033",
}
// EigenPodManagerABI is the input ABI used to generate the binding from.
@@ -44,7 +44,7 @@ var EigenPodManagerABI = EigenPodManagerMetaData.ABI
var EigenPodManagerBin = EigenPodManagerMetaData.Bin
// DeployEigenPodManager deploys a new Ethereum contract, binding an instance of EigenPodManager to it.
-func DeployEigenPodManager(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, *EigenPodManager, error) {
+func DeployEigenPodManager(auth *bind.TransactOpts, backend bind.ContractBackend, _ethPOS common.Address, _eigenPodBeacon common.Address, _delegationManager common.Address, _pauserRegistry common.Address) (common.Address, *types.Transaction, *EigenPodManager, error) {
parsed, err := EigenPodManagerMetaData.GetAbi()
if err != nil {
return common.Address{}, nil, nil, err
@@ -53,7 +53,7 @@ func DeployEigenPodManager(auth *bind.TransactOpts, backend bind.ContractBackend
return common.Address{}, nil, nil, errors.New("GetABI returned nil")
}
- address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(EigenPodManagerBin), backend, _ethPOS, _eigenPodBeacon, _strategyManager, _slasher, _delegationManager)
+ address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(EigenPodManagerBin), backend, _ethPOS, _eigenPodBeacon, _delegationManager, _pauserRegistry)
if err != nil {
return common.Address{}, nil, nil, err
}
@@ -233,6 +233,68 @@ func (_EigenPodManager *EigenPodManagerCallerSession) BeaconChainETHStrategy() (
return _EigenPodManager.Contract.BeaconChainETHStrategy(&_EigenPodManager.CallOpts)
}
+// BeaconChainSlashingFactor is a free data retrieval call binding the contract method 0xa3d75e09.
+//
+// Solidity: function beaconChainSlashingFactor(address podOwner) view returns(uint64)
+func (_EigenPodManager *EigenPodManagerCaller) BeaconChainSlashingFactor(opts *bind.CallOpts, podOwner common.Address) (uint64, error) {
+ var out []interface{}
+ err := _EigenPodManager.contract.Call(opts, &out, "beaconChainSlashingFactor", podOwner)
+
+ if err != nil {
+ return *new(uint64), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64)
+
+ return out0, err
+
+}
+
+// BeaconChainSlashingFactor is a free data retrieval call binding the contract method 0xa3d75e09.
+//
+// Solidity: function beaconChainSlashingFactor(address podOwner) view returns(uint64)
+func (_EigenPodManager *EigenPodManagerSession) BeaconChainSlashingFactor(podOwner common.Address) (uint64, error) {
+ return _EigenPodManager.Contract.BeaconChainSlashingFactor(&_EigenPodManager.CallOpts, podOwner)
+}
+
+// BeaconChainSlashingFactor is a free data retrieval call binding the contract method 0xa3d75e09.
+//
+// Solidity: function beaconChainSlashingFactor(address podOwner) view returns(uint64)
+func (_EigenPodManager *EigenPodManagerCallerSession) BeaconChainSlashingFactor(podOwner common.Address) (uint64, error) {
+ return _EigenPodManager.Contract.BeaconChainSlashingFactor(&_EigenPodManager.CallOpts, podOwner)
+}
+
+// BurnableETHShares is a free data retrieval call binding the contract method 0xf5d4fed3.
+//
+// Solidity: function burnableETHShares() view returns(uint256)
+func (_EigenPodManager *EigenPodManagerCaller) BurnableETHShares(opts *bind.CallOpts) (*big.Int, error) {
+ var out []interface{}
+ err := _EigenPodManager.contract.Call(opts, &out, "burnableETHShares")
+
+ if err != nil {
+ return *new(*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+
+ return out0, err
+
+}
+
+// BurnableETHShares is a free data retrieval call binding the contract method 0xf5d4fed3.
+//
+// Solidity: function burnableETHShares() view returns(uint256)
+func (_EigenPodManager *EigenPodManagerSession) BurnableETHShares() (*big.Int, error) {
+ return _EigenPodManager.Contract.BurnableETHShares(&_EigenPodManager.CallOpts)
+}
+
+// BurnableETHShares is a free data retrieval call binding the contract method 0xf5d4fed3.
+//
+// Solidity: function burnableETHShares() view returns(uint256)
+func (_EigenPodManager *EigenPodManagerCallerSession) BurnableETHShares() (*big.Int, error) {
+ return _EigenPodManager.Contract.BurnableETHShares(&_EigenPodManager.CallOpts)
+}
+
// DelegationManager is a free data retrieval call binding the contract method 0xea4d3c9b.
//
// Solidity: function delegationManager() view returns(address)
@@ -452,10 +514,10 @@ func (_EigenPodManager *EigenPodManagerCallerSession) Owner() (common.Address, e
// OwnerToPod is a free data retrieval call binding the contract method 0x9ba06275.
//
-// Solidity: function ownerToPod(address ) view returns(address)
-func (_EigenPodManager *EigenPodManagerCaller) OwnerToPod(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
+// Solidity: function ownerToPod(address podOwner) view returns(address)
+func (_EigenPodManager *EigenPodManagerCaller) OwnerToPod(opts *bind.CallOpts, podOwner common.Address) (common.Address, error) {
var out []interface{}
- err := _EigenPodManager.contract.Call(opts, &out, "ownerToPod", arg0)
+ err := _EigenPodManager.contract.Call(opts, &out, "ownerToPod", podOwner)
if err != nil {
return *new(common.Address), err
@@ -469,16 +531,16 @@ func (_EigenPodManager *EigenPodManagerCaller) OwnerToPod(opts *bind.CallOpts, a
// OwnerToPod is a free data retrieval call binding the contract method 0x9ba06275.
//
-// Solidity: function ownerToPod(address ) view returns(address)
-func (_EigenPodManager *EigenPodManagerSession) OwnerToPod(arg0 common.Address) (common.Address, error) {
- return _EigenPodManager.Contract.OwnerToPod(&_EigenPodManager.CallOpts, arg0)
+// Solidity: function ownerToPod(address podOwner) view returns(address)
+func (_EigenPodManager *EigenPodManagerSession) OwnerToPod(podOwner common.Address) (common.Address, error) {
+ return _EigenPodManager.Contract.OwnerToPod(&_EigenPodManager.CallOpts, podOwner)
}
// OwnerToPod is a free data retrieval call binding the contract method 0x9ba06275.
//
-// Solidity: function ownerToPod(address ) view returns(address)
-func (_EigenPodManager *EigenPodManagerCallerSession) OwnerToPod(arg0 common.Address) (common.Address, error) {
- return _EigenPodManager.Contract.OwnerToPod(&_EigenPodManager.CallOpts, arg0)
+// Solidity: function ownerToPod(address podOwner) view returns(address)
+func (_EigenPodManager *EigenPodManagerCallerSession) OwnerToPod(podOwner common.Address) (common.Address, error) {
+ return _EigenPodManager.Contract.OwnerToPod(&_EigenPodManager.CallOpts, podOwner)
}
// Paused is a free data retrieval call binding the contract method 0x5ac86ab7.
@@ -574,12 +636,12 @@ func (_EigenPodManager *EigenPodManagerCallerSession) PauserRegistry() (common.A
return _EigenPodManager.Contract.PauserRegistry(&_EigenPodManager.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 (_EigenPodManager *EigenPodManagerCaller) PodOwnerShares(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
+// Solidity: function podOwnerDepositShares(address podOwner) view returns(int256 shares)
+func (_EigenPodManager *EigenPodManagerCaller) PodOwnerDepositShares(opts *bind.CallOpts, podOwner common.Address) (*big.Int, error) {
var out []interface{}
- err := _EigenPodManager.contract.Call(opts, &out, "podOwnerShares", arg0)
+ err := _EigenPodManager.contract.Call(opts, &out, "podOwnerDepositShares", podOwner)
if err != nil {
return *new(*big.Int), err
@@ -591,101 +653,70 @@ func (_EigenPodManager *EigenPodManagerCaller) PodOwnerShares(opts *bind.CallOpt
}
-// 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 (_EigenPodManager *EigenPodManagerSession) PodOwnerShares(arg0 common.Address) (*big.Int, error) {
- return _EigenPodManager.Contract.PodOwnerShares(&_EigenPodManager.CallOpts, arg0)
+// Solidity: function podOwnerDepositShares(address podOwner) view returns(int256 shares)
+func (_EigenPodManager *EigenPodManagerSession) PodOwnerDepositShares(podOwner common.Address) (*big.Int, error) {
+ return _EigenPodManager.Contract.PodOwnerDepositShares(&_EigenPodManager.CallOpts, podOwner)
}
-// 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 (_EigenPodManager *EigenPodManagerCallerSession) PodOwnerShares(arg0 common.Address) (*big.Int, error) {
- return _EigenPodManager.Contract.PodOwnerShares(&_EigenPodManager.CallOpts, arg0)
+// Solidity: function podOwnerDepositShares(address podOwner) view returns(int256 shares)
+func (_EigenPodManager *EigenPodManagerCallerSession) PodOwnerDepositShares(podOwner common.Address) (*big.Int, error) {
+ return _EigenPodManager.Contract.PodOwnerDepositShares(&_EigenPodManager.CallOpts, podOwner)
}
-// 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 (_EigenPodManager *EigenPodManagerCaller) Slasher(opts *bind.CallOpts) (common.Address, error) {
+// Solidity: function stakerDepositShares(address user, address strategy) view returns(uint256 depositShares)
+func (_EigenPodManager *EigenPodManagerCaller) StakerDepositShares(opts *bind.CallOpts, user common.Address, strategy common.Address) (*big.Int, error) {
var out []interface{}
- err := _EigenPodManager.contract.Call(opts, &out, "slasher")
+ err := _EigenPodManager.contract.Call(opts, &out, "stakerDepositShares", user, strategy)
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 (_EigenPodManager *EigenPodManagerSession) Slasher() (common.Address, error) {
- return _EigenPodManager.Contract.Slasher(&_EigenPodManager.CallOpts)
-}
-
-// Slasher is a free data retrieval call binding the contract method 0xb1344271.
-//
-// Solidity: function slasher() view returns(address)
-func (_EigenPodManager *EigenPodManagerCallerSession) Slasher() (common.Address, error) {
- return _EigenPodManager.Contract.Slasher(&_EigenPodManager.CallOpts)
-}
-
-// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
-//
-// Solidity: function strategyManager() view returns(address)
-func (_EigenPodManager *EigenPodManagerCaller) StrategyManager(opts *bind.CallOpts) (common.Address, error) {
- var out []interface{}
- err := _EigenPodManager.contract.Call(opts, &out, "strategyManager")
-
- if err != nil {
- return *new(common.Address), err
+ return *new(*big.Int), err
}
- out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
+ out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
return out0, err
}
-// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
+// StakerDepositShares is a free data retrieval call binding the contract method 0xfe243a17.
//
-// Solidity: function strategyManager() view returns(address)
-func (_EigenPodManager *EigenPodManagerSession) StrategyManager() (common.Address, error) {
- return _EigenPodManager.Contract.StrategyManager(&_EigenPodManager.CallOpts)
+// Solidity: function stakerDepositShares(address user, address strategy) view returns(uint256 depositShares)
+func (_EigenPodManager *EigenPodManagerSession) StakerDepositShares(user common.Address, strategy common.Address) (*big.Int, error) {
+ return _EigenPodManager.Contract.StakerDepositShares(&_EigenPodManager.CallOpts, user, strategy)
}
-// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
+// StakerDepositShares is a free data retrieval call binding the contract method 0xfe243a17.
//
-// Solidity: function strategyManager() view returns(address)
-func (_EigenPodManager *EigenPodManagerCallerSession) StrategyManager() (common.Address, error) {
- return _EigenPodManager.Contract.StrategyManager(&_EigenPodManager.CallOpts)
+// Solidity: function stakerDepositShares(address user, address strategy) view returns(uint256 depositShares)
+func (_EigenPodManager *EigenPodManagerCallerSession) StakerDepositShares(user common.Address, strategy common.Address) (*big.Int, error) {
+ return _EigenPodManager.Contract.StakerDepositShares(&_EigenPodManager.CallOpts, user, strategy)
}
-// AddShares is a paid mutator transaction binding the contract method 0x0e81073c.
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
//
-// Solidity: function addShares(address podOwner, uint256 shares) returns(uint256)
-func (_EigenPodManager *EigenPodManagerTransactor) AddShares(opts *bind.TransactOpts, podOwner common.Address, shares *big.Int) (*types.Transaction, error) {
- return _EigenPodManager.contract.Transact(opts, "addShares", podOwner, shares)
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_EigenPodManager *EigenPodManagerTransactor) AddShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _EigenPodManager.contract.Transact(opts, "addShares", staker, strategy, shares)
}
-// AddShares is a paid mutator transaction binding the contract method 0x0e81073c.
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
//
-// Solidity: function addShares(address podOwner, uint256 shares) returns(uint256)
-func (_EigenPodManager *EigenPodManagerSession) AddShares(podOwner common.Address, shares *big.Int) (*types.Transaction, error) {
- return _EigenPodManager.Contract.AddShares(&_EigenPodManager.TransactOpts, podOwner, shares)
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_EigenPodManager *EigenPodManagerSession) AddShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _EigenPodManager.Contract.AddShares(&_EigenPodManager.TransactOpts, staker, strategy, shares)
}
-// AddShares is a paid mutator transaction binding the contract method 0x0e81073c.
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
//
-// Solidity: function addShares(address podOwner, uint256 shares) returns(uint256)
-func (_EigenPodManager *EigenPodManagerTransactorSession) AddShares(podOwner common.Address, shares *big.Int) (*types.Transaction, error) {
- return _EigenPodManager.Contract.AddShares(&_EigenPodManager.TransactOpts, podOwner, shares)
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_EigenPodManager *EigenPodManagerTransactorSession) AddShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _EigenPodManager.Contract.AddShares(&_EigenPodManager.TransactOpts, staker, strategy, shares)
}
// CreatePod is a paid mutator transaction binding the contract method 0x84d81062.
@@ -709,25 +740,46 @@ func (_EigenPodManager *EigenPodManagerTransactorSession) CreatePod() (*types.Tr
return _EigenPodManager.Contract.CreatePod(&_EigenPodManager.TransactOpts)
}
-// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c.
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
+//
+// Solidity: function increaseBurnableShares(address , uint256 addedSharesToBurn) returns()
+func (_EigenPodManager *EigenPodManagerTransactor) IncreaseBurnableShares(opts *bind.TransactOpts, arg0 common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _EigenPodManager.contract.Transact(opts, "increaseBurnableShares", arg0, addedSharesToBurn)
+}
+
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
//
-// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 _initPausedStatus) returns()
-func (_EigenPodManager *EigenPodManagerTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, _pauserRegistry common.Address, _initPausedStatus *big.Int) (*types.Transaction, error) {
- return _EigenPodManager.contract.Transact(opts, "initialize", initialOwner, _pauserRegistry, _initPausedStatus)
+// Solidity: function increaseBurnableShares(address , uint256 addedSharesToBurn) returns()
+func (_EigenPodManager *EigenPodManagerSession) IncreaseBurnableShares(arg0 common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _EigenPodManager.Contract.IncreaseBurnableShares(&_EigenPodManager.TransactOpts, arg0, addedSharesToBurn)
}
-// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c.
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
//
-// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 _initPausedStatus) returns()
-func (_EigenPodManager *EigenPodManagerSession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, _initPausedStatus *big.Int) (*types.Transaction, error) {
- return _EigenPodManager.Contract.Initialize(&_EigenPodManager.TransactOpts, initialOwner, _pauserRegistry, _initPausedStatus)
+// Solidity: function increaseBurnableShares(address , uint256 addedSharesToBurn) returns()
+func (_EigenPodManager *EigenPodManagerTransactorSession) IncreaseBurnableShares(arg0 common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _EigenPodManager.Contract.IncreaseBurnableShares(&_EigenPodManager.TransactOpts, arg0, addedSharesToBurn)
}
-// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c.
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
//
-// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 _initPausedStatus) returns()
-func (_EigenPodManager *EigenPodManagerTransactorSession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, _initPausedStatus *big.Int) (*types.Transaction, error) {
- return _EigenPodManager.Contract.Initialize(&_EigenPodManager.TransactOpts, initialOwner, _pauserRegistry, _initPausedStatus)
+// Solidity: function initialize(address initialOwner, uint256 _initPausedStatus) returns()
+func (_EigenPodManager *EigenPodManagerTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, _initPausedStatus *big.Int) (*types.Transaction, error) {
+ return _EigenPodManager.contract.Transact(opts, "initialize", initialOwner, _initPausedStatus)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
+//
+// Solidity: function initialize(address initialOwner, uint256 _initPausedStatus) returns()
+func (_EigenPodManager *EigenPodManagerSession) Initialize(initialOwner common.Address, _initPausedStatus *big.Int) (*types.Transaction, error) {
+ return _EigenPodManager.Contract.Initialize(&_EigenPodManager.TransactOpts, initialOwner, _initPausedStatus)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
+//
+// Solidity: function initialize(address initialOwner, uint256 _initPausedStatus) returns()
+func (_EigenPodManager *EigenPodManagerTransactorSession) Initialize(initialOwner common.Address, _initPausedStatus *big.Int) (*types.Transaction, error) {
+ return _EigenPodManager.Contract.Initialize(&_EigenPodManager.TransactOpts, initialOwner, _initPausedStatus)
}
// Pause is a paid mutator transaction binding the contract method 0x136439dd.
@@ -772,46 +824,46 @@ func (_EigenPodManager *EigenPodManagerTransactorSession) PauseAll() (*types.Tra
return _EigenPodManager.Contract.PauseAll(&_EigenPodManager.TransactOpts)
}
-// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xc2c51c40.
+// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xa1ca780b.
//
-// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta) returns()
-func (_EigenPodManager *EigenPodManagerTransactor) RecordBeaconChainETHBalanceUpdate(opts *bind.TransactOpts, podOwner common.Address, sharesDelta *big.Int) (*types.Transaction, error) {
- return _EigenPodManager.contract.Transact(opts, "recordBeaconChainETHBalanceUpdate", podOwner, sharesDelta)
+// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, uint256 prevRestakedBalanceWei, int256 balanceDeltaWei) returns()
+func (_EigenPodManager *EigenPodManagerTransactor) RecordBeaconChainETHBalanceUpdate(opts *bind.TransactOpts, podOwner common.Address, prevRestakedBalanceWei *big.Int, balanceDeltaWei *big.Int) (*types.Transaction, error) {
+ return _EigenPodManager.contract.Transact(opts, "recordBeaconChainETHBalanceUpdate", podOwner, prevRestakedBalanceWei, balanceDeltaWei)
}
-// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xc2c51c40.
+// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xa1ca780b.
//
-// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta) returns()
-func (_EigenPodManager *EigenPodManagerSession) RecordBeaconChainETHBalanceUpdate(podOwner common.Address, sharesDelta *big.Int) (*types.Transaction, error) {
- return _EigenPodManager.Contract.RecordBeaconChainETHBalanceUpdate(&_EigenPodManager.TransactOpts, podOwner, sharesDelta)
+// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, uint256 prevRestakedBalanceWei, int256 balanceDeltaWei) returns()
+func (_EigenPodManager *EigenPodManagerSession) RecordBeaconChainETHBalanceUpdate(podOwner common.Address, prevRestakedBalanceWei *big.Int, balanceDeltaWei *big.Int) (*types.Transaction, error) {
+ return _EigenPodManager.Contract.RecordBeaconChainETHBalanceUpdate(&_EigenPodManager.TransactOpts, podOwner, prevRestakedBalanceWei, balanceDeltaWei)
}
-// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xc2c51c40.
+// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xa1ca780b.
//
-// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta) returns()
-func (_EigenPodManager *EigenPodManagerTransactorSession) RecordBeaconChainETHBalanceUpdate(podOwner common.Address, sharesDelta *big.Int) (*types.Transaction, error) {
- return _EigenPodManager.Contract.RecordBeaconChainETHBalanceUpdate(&_EigenPodManager.TransactOpts, podOwner, sharesDelta)
+// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, uint256 prevRestakedBalanceWei, int256 balanceDeltaWei) returns()
+func (_EigenPodManager *EigenPodManagerTransactorSession) RecordBeaconChainETHBalanceUpdate(podOwner common.Address, prevRestakedBalanceWei *big.Int, balanceDeltaWei *big.Int) (*types.Transaction, error) {
+ return _EigenPodManager.Contract.RecordBeaconChainETHBalanceUpdate(&_EigenPodManager.TransactOpts, podOwner, prevRestakedBalanceWei, balanceDeltaWei)
}
-// 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 (_EigenPodManager *EigenPodManagerTransactor) RemoveShares(opts *bind.TransactOpts, podOwner common.Address, shares *big.Int) (*types.Transaction, error) {
- return _EigenPodManager.contract.Transact(opts, "removeShares", podOwner, shares)
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_EigenPodManager *EigenPodManagerTransactor) RemoveDepositShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _EigenPodManager.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 (_EigenPodManager *EigenPodManagerSession) RemoveShares(podOwner common.Address, shares *big.Int) (*types.Transaction, error) {
- return _EigenPodManager.Contract.RemoveShares(&_EigenPodManager.TransactOpts, podOwner, shares)
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_EigenPodManager *EigenPodManagerSession) RemoveDepositShares(staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _EigenPodManager.Contract.RemoveDepositShares(&_EigenPodManager.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 (_EigenPodManager *EigenPodManagerTransactorSession) RemoveShares(podOwner common.Address, shares *big.Int) (*types.Transaction, error) {
- return _EigenPodManager.Contract.RemoveShares(&_EigenPodManager.TransactOpts, podOwner, shares)
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_EigenPodManager *EigenPodManagerTransactorSession) RemoveDepositShares(staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _EigenPodManager.Contract.RemoveDepositShares(&_EigenPodManager.TransactOpts, staker, strategy, depositSharesToRemove)
}
// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
@@ -835,27 +887,6 @@ func (_EigenPodManager *EigenPodManagerTransactorSession) RenounceOwnership() (*
return _EigenPodManager.Contract.RenounceOwnership(&_EigenPodManager.TransactOpts)
}
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_EigenPodManager *EigenPodManagerTransactor) SetPauserRegistry(opts *bind.TransactOpts, newPauserRegistry common.Address) (*types.Transaction, error) {
- return _EigenPodManager.contract.Transact(opts, "setPauserRegistry", newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_EigenPodManager *EigenPodManagerSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _EigenPodManager.Contract.SetPauserRegistry(&_EigenPodManager.TransactOpts, newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_EigenPodManager *EigenPodManagerTransactorSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _EigenPodManager.Contract.SetPauserRegistry(&_EigenPodManager.TransactOpts, newPauserRegistry)
-}
-
// Stake is a paid mutator transaction binding the contract method 0x9b4e4634.
//
// Solidity: function stake(bytes pubkey, bytes signature, bytes32 depositDataRoot) payable returns()
@@ -919,25 +950,25 @@ func (_EigenPodManager *EigenPodManagerTransactorSession) Unpause(newPausedStatu
return _EigenPodManager.Contract.Unpause(&_EigenPodManager.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 (_EigenPodManager *EigenPodManagerTransactor) WithdrawSharesAsTokens(opts *bind.TransactOpts, podOwner common.Address, destination common.Address, shares *big.Int) (*types.Transaction, error) {
- return _EigenPodManager.contract.Transact(opts, "withdrawSharesAsTokens", podOwner, destination, shares)
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address , uint256 shares) returns()
+func (_EigenPodManager *EigenPodManagerTransactor) WithdrawSharesAsTokens(opts *bind.TransactOpts, staker common.Address, strategy common.Address, arg2 common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _EigenPodManager.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 (_EigenPodManager *EigenPodManagerSession) WithdrawSharesAsTokens(podOwner common.Address, destination common.Address, shares *big.Int) (*types.Transaction, error) {
- return _EigenPodManager.Contract.WithdrawSharesAsTokens(&_EigenPodManager.TransactOpts, podOwner, destination, shares)
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address , uint256 shares) returns()
+func (_EigenPodManager *EigenPodManagerSession) WithdrawSharesAsTokens(staker common.Address, strategy common.Address, arg2 common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _EigenPodManager.Contract.WithdrawSharesAsTokens(&_EigenPodManager.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 (_EigenPodManager *EigenPodManagerTransactorSession) WithdrawSharesAsTokens(podOwner common.Address, destination common.Address, shares *big.Int) (*types.Transaction, error) {
- return _EigenPodManager.Contract.WithdrawSharesAsTokens(&_EigenPodManager.TransactOpts, podOwner, destination, shares)
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address , uint256 shares) returns()
+func (_EigenPodManager *EigenPodManagerTransactorSession) WithdrawSharesAsTokens(staker common.Address, strategy common.Address, arg2 common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _EigenPodManager.Contract.WithdrawSharesAsTokens(&_EigenPodManager.TransactOpts, staker, strategy, arg2, shares)
}
// EigenPodManagerBeaconChainETHDepositedIterator is returned from FilterBeaconChainETHDeposited and is used to iterate over the raw logs and unpacked data for BeaconChainETHDeposited events raised by the EigenPodManager contract.
@@ -1234,6 +1265,276 @@ func (_EigenPodManager *EigenPodManagerFilterer) ParseBeaconChainETHWithdrawalCo
return event, nil
}
+// EigenPodManagerBeaconChainSlashingFactorDecreasedIterator is returned from FilterBeaconChainSlashingFactorDecreased and is used to iterate over the raw logs and unpacked data for BeaconChainSlashingFactorDecreased events raised by the EigenPodManager contract.
+type EigenPodManagerBeaconChainSlashingFactorDecreasedIterator struct {
+ Event *EigenPodManagerBeaconChainSlashingFactorDecreased // 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 *EigenPodManagerBeaconChainSlashingFactorDecreasedIterator) 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(EigenPodManagerBeaconChainSlashingFactorDecreased)
+ 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(EigenPodManagerBeaconChainSlashingFactorDecreased)
+ 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 *EigenPodManagerBeaconChainSlashingFactorDecreasedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *EigenPodManagerBeaconChainSlashingFactorDecreasedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// EigenPodManagerBeaconChainSlashingFactorDecreased represents a BeaconChainSlashingFactorDecreased event raised by the EigenPodManager contract.
+type EigenPodManagerBeaconChainSlashingFactorDecreased struct {
+ Staker common.Address
+ PrevBeaconChainSlashingFactor uint64
+ NewBeaconChainSlashingFactor uint64
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterBeaconChainSlashingFactorDecreased is a free log retrieval operation binding the contract event 0xb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf.
+//
+// Solidity: event BeaconChainSlashingFactorDecreased(address staker, uint64 prevBeaconChainSlashingFactor, uint64 newBeaconChainSlashingFactor)
+func (_EigenPodManager *EigenPodManagerFilterer) FilterBeaconChainSlashingFactorDecreased(opts *bind.FilterOpts) (*EigenPodManagerBeaconChainSlashingFactorDecreasedIterator, error) {
+
+ logs, sub, err := _EigenPodManager.contract.FilterLogs(opts, "BeaconChainSlashingFactorDecreased")
+ if err != nil {
+ return nil, err
+ }
+ return &EigenPodManagerBeaconChainSlashingFactorDecreasedIterator{contract: _EigenPodManager.contract, event: "BeaconChainSlashingFactorDecreased", logs: logs, sub: sub}, nil
+}
+
+// WatchBeaconChainSlashingFactorDecreased is a free log subscription operation binding the contract event 0xb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf.
+//
+// Solidity: event BeaconChainSlashingFactorDecreased(address staker, uint64 prevBeaconChainSlashingFactor, uint64 newBeaconChainSlashingFactor)
+func (_EigenPodManager *EigenPodManagerFilterer) WatchBeaconChainSlashingFactorDecreased(opts *bind.WatchOpts, sink chan<- *EigenPodManagerBeaconChainSlashingFactorDecreased) (event.Subscription, error) {
+
+ logs, sub, err := _EigenPodManager.contract.WatchLogs(opts, "BeaconChainSlashingFactorDecreased")
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(EigenPodManagerBeaconChainSlashingFactorDecreased)
+ if err := _EigenPodManager.contract.UnpackLog(event, "BeaconChainSlashingFactorDecreased", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParseBeaconChainSlashingFactorDecreased is a log parse operation binding the contract event 0xb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf.
+//
+// Solidity: event BeaconChainSlashingFactorDecreased(address staker, uint64 prevBeaconChainSlashingFactor, uint64 newBeaconChainSlashingFactor)
+func (_EigenPodManager *EigenPodManagerFilterer) ParseBeaconChainSlashingFactorDecreased(log types.Log) (*EigenPodManagerBeaconChainSlashingFactorDecreased, error) {
+ event := new(EigenPodManagerBeaconChainSlashingFactorDecreased)
+ if err := _EigenPodManager.contract.UnpackLog(event, "BeaconChainSlashingFactorDecreased", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// EigenPodManagerBurnableETHSharesIncreasedIterator is returned from FilterBurnableETHSharesIncreased and is used to iterate over the raw logs and unpacked data for BurnableETHSharesIncreased events raised by the EigenPodManager contract.
+type EigenPodManagerBurnableETHSharesIncreasedIterator struct {
+ Event *EigenPodManagerBurnableETHSharesIncreased // 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 *EigenPodManagerBurnableETHSharesIncreasedIterator) 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(EigenPodManagerBurnableETHSharesIncreased)
+ 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(EigenPodManagerBurnableETHSharesIncreased)
+ 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 *EigenPodManagerBurnableETHSharesIncreasedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *EigenPodManagerBurnableETHSharesIncreasedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// EigenPodManagerBurnableETHSharesIncreased represents a BurnableETHSharesIncreased event raised by the EigenPodManager contract.
+type EigenPodManagerBurnableETHSharesIncreased struct {
+ Shares *big.Int
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterBurnableETHSharesIncreased is a free log retrieval operation binding the contract event 0x1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a4.
+//
+// Solidity: event BurnableETHSharesIncreased(uint256 shares)
+func (_EigenPodManager *EigenPodManagerFilterer) FilterBurnableETHSharesIncreased(opts *bind.FilterOpts) (*EigenPodManagerBurnableETHSharesIncreasedIterator, error) {
+
+ logs, sub, err := _EigenPodManager.contract.FilterLogs(opts, "BurnableETHSharesIncreased")
+ if err != nil {
+ return nil, err
+ }
+ return &EigenPodManagerBurnableETHSharesIncreasedIterator{contract: _EigenPodManager.contract, event: "BurnableETHSharesIncreased", logs: logs, sub: sub}, nil
+}
+
+// WatchBurnableETHSharesIncreased is a free log subscription operation binding the contract event 0x1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a4.
+//
+// Solidity: event BurnableETHSharesIncreased(uint256 shares)
+func (_EigenPodManager *EigenPodManagerFilterer) WatchBurnableETHSharesIncreased(opts *bind.WatchOpts, sink chan<- *EigenPodManagerBurnableETHSharesIncreased) (event.Subscription, error) {
+
+ logs, sub, err := _EigenPodManager.contract.WatchLogs(opts, "BurnableETHSharesIncreased")
+ 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(EigenPodManagerBurnableETHSharesIncreased)
+ if err := _EigenPodManager.contract.UnpackLog(event, "BurnableETHSharesIncreased", 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
+}
+
+// ParseBurnableETHSharesIncreased is a log parse operation binding the contract event 0x1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a4.
+//
+// Solidity: event BurnableETHSharesIncreased(uint256 shares)
+func (_EigenPodManager *EigenPodManagerFilterer) ParseBurnableETHSharesIncreased(log types.Log) (*EigenPodManagerBurnableETHSharesIncreased, error) {
+ event := new(EigenPodManagerBurnableETHSharesIncreased)
+ if err := _EigenPodManager.contract.UnpackLog(event, "BurnableETHSharesIncreased", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
// EigenPodManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the EigenPodManager contract.
type EigenPodManagerInitializedIterator struct {
Event *EigenPodManagerInitialized // Event containing the contract specifics and raw log
@@ -1811,141 +2112,6 @@ func (_EigenPodManager *EigenPodManagerFilterer) ParsePaused(log types.Log) (*Ei
return event, nil
}
-// EigenPodManagerPauserRegistrySetIterator is returned from FilterPauserRegistrySet and is used to iterate over the raw logs and unpacked data for PauserRegistrySet events raised by the EigenPodManager contract.
-type EigenPodManagerPauserRegistrySetIterator struct {
- Event *EigenPodManagerPauserRegistrySet // 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 *EigenPodManagerPauserRegistrySetIterator) 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(EigenPodManagerPauserRegistrySet)
- 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(EigenPodManagerPauserRegistrySet)
- 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 *EigenPodManagerPauserRegistrySetIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *EigenPodManagerPauserRegistrySetIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// EigenPodManagerPauserRegistrySet represents a PauserRegistrySet event raised by the EigenPodManager contract.
-type EigenPodManagerPauserRegistrySet struct {
- PauserRegistry common.Address
- NewPauserRegistry common.Address
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterPauserRegistrySet is a free log retrieval operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_EigenPodManager *EigenPodManagerFilterer) FilterPauserRegistrySet(opts *bind.FilterOpts) (*EigenPodManagerPauserRegistrySetIterator, error) {
-
- logs, sub, err := _EigenPodManager.contract.FilterLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return &EigenPodManagerPauserRegistrySetIterator{contract: _EigenPodManager.contract, event: "PauserRegistrySet", logs: logs, sub: sub}, nil
-}
-
-// WatchPauserRegistrySet is a free log subscription operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_EigenPodManager *EigenPodManagerFilterer) WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *EigenPodManagerPauserRegistrySet) (event.Subscription, error) {
-
- logs, sub, err := _EigenPodManager.contract.WatchLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(EigenPodManagerPauserRegistrySet)
- if err := _EigenPodManager.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return err
- }
- event.Raw = log
-
- select {
- case sink <- event:
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- }
- }), nil
-}
-
-// ParsePauserRegistrySet is a log parse operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_EigenPodManager *EigenPodManagerFilterer) ParsePauserRegistrySet(log types.Log) (*EigenPodManagerPauserRegistrySet, error) {
- event := new(EigenPodManagerPauserRegistrySet)
- if err := _EigenPodManager.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
// EigenPodManagerPodDeployedIterator is returned from FilterPodDeployed and is used to iterate over the raw logs and unpacked data for PodDeployed events raised by the EigenPodManager contract.
type EigenPodManagerPodDeployedIterator struct {
Event *EigenPodManagerPodDeployed // Event containing the contract specifics and raw log
diff --git a/pkg/bindings/EigenPodManagerStorage/binding.go b/pkg/bindings/EigenPodManagerStorage/binding.go
index 446bf1a74a..d72f1145d2 100644
--- a/pkg/bindings/EigenPodManagerStorage/binding.go
+++ b/pkg/bindings/EigenPodManagerStorage/binding.go
@@ -31,7 +31,7 @@ var (
// EigenPodManagerStorageMetaData contains all meta data concerning the EigenPodManagerStorage contract.
var EigenPodManagerStorageMetaData = &bind.MetaData{
- ABI: "[{\"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\":\"numPods\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"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\":\"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\":\"NewTotalShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newTotalShares\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"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}]",
+ ABI: "[{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainSlashingFactor\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burnableETHShares\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"increaseBurnableShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"addedSharesToBurn\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"numPods\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ownerToPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPod\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"podOwnerDepositShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recordBeaconChainETHBalanceUpdate\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"prevRestakedBalanceWei\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"balanceDeltaWei\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"depositSharesToRemove\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"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\":\"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\":\"BeaconChainETHDeposited\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconChainETHWithdrawalCompleted\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconChainSlashingFactorDecreased\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"prevBeaconChainSlashingFactor\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newBeaconChainSlashingFactor\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BurnableETHSharesIncreased\",\"inputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PodDeployed\",\"inputs\":[{\"name\":\"eigenPod\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PodSharesUpdated\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sharesDelta\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EigenPodAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStrategy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LegacyWithdrawalsNotCompleted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNegative\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNotMultipleOfGwei\",\"inputs\":[]}]",
}
// EigenPodManagerStorageABI is the input ABI used to generate the binding from.
@@ -211,6 +211,68 @@ func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) BeaconChainE
return _EigenPodManagerStorage.Contract.BeaconChainETHStrategy(&_EigenPodManagerStorage.CallOpts)
}
+// BeaconChainSlashingFactor is a free data retrieval call binding the contract method 0xa3d75e09.
+//
+// Solidity: function beaconChainSlashingFactor(address staker) view returns(uint64)
+func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) BeaconChainSlashingFactor(opts *bind.CallOpts, staker common.Address) (uint64, error) {
+ var out []interface{}
+ err := _EigenPodManagerStorage.contract.Call(opts, &out, "beaconChainSlashingFactor", staker)
+
+ if err != nil {
+ return *new(uint64), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64)
+
+ return out0, err
+
+}
+
+// BeaconChainSlashingFactor is a free data retrieval call binding the contract method 0xa3d75e09.
+//
+// Solidity: function beaconChainSlashingFactor(address staker) view returns(uint64)
+func (_EigenPodManagerStorage *EigenPodManagerStorageSession) BeaconChainSlashingFactor(staker common.Address) (uint64, error) {
+ return _EigenPodManagerStorage.Contract.BeaconChainSlashingFactor(&_EigenPodManagerStorage.CallOpts, staker)
+}
+
+// BeaconChainSlashingFactor is a free data retrieval call binding the contract method 0xa3d75e09.
+//
+// Solidity: function beaconChainSlashingFactor(address staker) view returns(uint64)
+func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) BeaconChainSlashingFactor(staker common.Address) (uint64, error) {
+ return _EigenPodManagerStorage.Contract.BeaconChainSlashingFactor(&_EigenPodManagerStorage.CallOpts, staker)
+}
+
+// BurnableETHShares is a free data retrieval call binding the contract method 0xf5d4fed3.
+//
+// Solidity: function burnableETHShares() view returns(uint256)
+func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) BurnableETHShares(opts *bind.CallOpts) (*big.Int, error) {
+ var out []interface{}
+ err := _EigenPodManagerStorage.contract.Call(opts, &out, "burnableETHShares")
+
+ if err != nil {
+ return *new(*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+
+ return out0, err
+
+}
+
+// BurnableETHShares is a free data retrieval call binding the contract method 0xf5d4fed3.
+//
+// Solidity: function burnableETHShares() view returns(uint256)
+func (_EigenPodManagerStorage *EigenPodManagerStorageSession) BurnableETHShares() (*big.Int, error) {
+ return _EigenPodManagerStorage.Contract.BurnableETHShares(&_EigenPodManagerStorage.CallOpts)
+}
+
+// BurnableETHShares is a free data retrieval call binding the contract method 0xf5d4fed3.
+//
+// Solidity: function burnableETHShares() view returns(uint256)
+func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) BurnableETHShares() (*big.Int, error) {
+ return _EigenPodManagerStorage.Contract.BurnableETHShares(&_EigenPodManagerStorage.CallOpts)
+}
+
// DelegationManager is a free data retrieval call binding the contract method 0xea4d3c9b.
//
// Solidity: function delegationManager() view returns(address)
@@ -399,10 +461,10 @@ func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) NumPods() (*
// OwnerToPod is a free data retrieval call binding the contract method 0x9ba06275.
//
-// Solidity: function ownerToPod(address ) view returns(address)
-func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) OwnerToPod(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
+// Solidity: function ownerToPod(address podOwner) view returns(address)
+func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) OwnerToPod(opts *bind.CallOpts, podOwner common.Address) (common.Address, error) {
var out []interface{}
- err := _EigenPodManagerStorage.contract.Call(opts, &out, "ownerToPod", arg0)
+ err := _EigenPodManagerStorage.contract.Call(opts, &out, "ownerToPod", podOwner)
if err != nil {
return *new(common.Address), err
@@ -416,16 +478,16 @@ func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) OwnerToPod(opts *bi
// OwnerToPod is a free data retrieval call binding the contract method 0x9ba06275.
//
-// Solidity: function ownerToPod(address ) view returns(address)
-func (_EigenPodManagerStorage *EigenPodManagerStorageSession) OwnerToPod(arg0 common.Address) (common.Address, error) {
- return _EigenPodManagerStorage.Contract.OwnerToPod(&_EigenPodManagerStorage.CallOpts, arg0)
+// Solidity: function ownerToPod(address podOwner) view returns(address)
+func (_EigenPodManagerStorage *EigenPodManagerStorageSession) OwnerToPod(podOwner common.Address) (common.Address, error) {
+ return _EigenPodManagerStorage.Contract.OwnerToPod(&_EigenPodManagerStorage.CallOpts, podOwner)
}
// OwnerToPod is a free data retrieval call binding the contract method 0x9ba06275.
//
-// Solidity: function ownerToPod(address ) view returns(address)
-func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) OwnerToPod(arg0 common.Address) (common.Address, error) {
- return _EigenPodManagerStorage.Contract.OwnerToPod(&_EigenPodManagerStorage.CallOpts, arg0)
+// Solidity: function ownerToPod(address podOwner) view returns(address)
+func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) OwnerToPod(podOwner common.Address) (common.Address, error) {
+ return _EigenPodManagerStorage.Contract.OwnerToPod(&_EigenPodManagerStorage.CallOpts, podOwner)
}
// Paused is a free data retrieval call binding the contract method 0x5ac86ab7.
@@ -521,12 +583,12 @@ func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) PauserRegist
return _EigenPodManagerStorage.Contract.PauserRegistry(&_EigenPodManagerStorage.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 (_EigenPodManagerStorage *EigenPodManagerStorageCaller) PodOwnerShares(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
+// Solidity: function podOwnerDepositShares(address podOwner) view returns(int256 shares)
+func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) PodOwnerDepositShares(opts *bind.CallOpts, podOwner common.Address) (*big.Int, error) {
var out []interface{}
- err := _EigenPodManagerStorage.contract.Call(opts, &out, "podOwnerShares", arg0)
+ err := _EigenPodManagerStorage.contract.Call(opts, &out, "podOwnerDepositShares", podOwner)
if err != nil {
return *new(*big.Int), err
@@ -538,101 +600,70 @@ func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) PodOwnerShares(opts
}
-// 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 (_EigenPodManagerStorage *EigenPodManagerStorageSession) PodOwnerShares(arg0 common.Address) (*big.Int, error) {
- return _EigenPodManagerStorage.Contract.PodOwnerShares(&_EigenPodManagerStorage.CallOpts, arg0)
+// Solidity: function podOwnerDepositShares(address podOwner) view returns(int256 shares)
+func (_EigenPodManagerStorage *EigenPodManagerStorageSession) PodOwnerDepositShares(podOwner common.Address) (*big.Int, error) {
+ return _EigenPodManagerStorage.Contract.PodOwnerDepositShares(&_EigenPodManagerStorage.CallOpts, podOwner)
}
-// 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 (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) PodOwnerShares(arg0 common.Address) (*big.Int, error) {
- return _EigenPodManagerStorage.Contract.PodOwnerShares(&_EigenPodManagerStorage.CallOpts, arg0)
+// Solidity: function podOwnerDepositShares(address podOwner) view returns(int256 shares)
+func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) PodOwnerDepositShares(podOwner common.Address) (*big.Int, error) {
+ return _EigenPodManagerStorage.Contract.PodOwnerDepositShares(&_EigenPodManagerStorage.CallOpts, podOwner)
}
-// 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 (_EigenPodManagerStorage *EigenPodManagerStorageCaller) Slasher(opts *bind.CallOpts) (common.Address, error) {
+// Solidity: function stakerDepositShares(address user, address strategy) view returns(uint256 depositShares)
+func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) StakerDepositShares(opts *bind.CallOpts, user common.Address, strategy common.Address) (*big.Int, error) {
var out []interface{}
- err := _EigenPodManagerStorage.contract.Call(opts, &out, "slasher")
+ err := _EigenPodManagerStorage.contract.Call(opts, &out, "stakerDepositShares", user, strategy)
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 (_EigenPodManagerStorage *EigenPodManagerStorageSession) Slasher() (common.Address, error) {
- return _EigenPodManagerStorage.Contract.Slasher(&_EigenPodManagerStorage.CallOpts)
-}
-
-// Slasher is a free data retrieval call binding the contract method 0xb1344271.
-//
-// Solidity: function slasher() view returns(address)
-func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) Slasher() (common.Address, error) {
- return _EigenPodManagerStorage.Contract.Slasher(&_EigenPodManagerStorage.CallOpts)
-}
-
-// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
-//
-// Solidity: function strategyManager() view returns(address)
-func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) StrategyManager(opts *bind.CallOpts) (common.Address, error) {
- var out []interface{}
- err := _EigenPodManagerStorage.contract.Call(opts, &out, "strategyManager")
-
- if err != nil {
- return *new(common.Address), err
+ return *new(*big.Int), err
}
- out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
+ out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
return out0, err
}
-// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
+// StakerDepositShares is a free data retrieval call binding the contract method 0xfe243a17.
//
-// Solidity: function strategyManager() view returns(address)
-func (_EigenPodManagerStorage *EigenPodManagerStorageSession) StrategyManager() (common.Address, error) {
- return _EigenPodManagerStorage.Contract.StrategyManager(&_EigenPodManagerStorage.CallOpts)
+// Solidity: function stakerDepositShares(address user, address strategy) view returns(uint256 depositShares)
+func (_EigenPodManagerStorage *EigenPodManagerStorageSession) StakerDepositShares(user common.Address, strategy common.Address) (*big.Int, error) {
+ return _EigenPodManagerStorage.Contract.StakerDepositShares(&_EigenPodManagerStorage.CallOpts, user, strategy)
}
-// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
+// StakerDepositShares is a free data retrieval call binding the contract method 0xfe243a17.
//
-// Solidity: function strategyManager() view returns(address)
-func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) StrategyManager() (common.Address, error) {
- return _EigenPodManagerStorage.Contract.StrategyManager(&_EigenPodManagerStorage.CallOpts)
+// Solidity: function stakerDepositShares(address user, address strategy) view returns(uint256 depositShares)
+func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) StakerDepositShares(user common.Address, strategy common.Address) (*big.Int, error) {
+ return _EigenPodManagerStorage.Contract.StakerDepositShares(&_EigenPodManagerStorage.CallOpts, user, strategy)
}
-// AddShares is a paid mutator transaction binding the contract method 0x0e81073c.
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
//
-// Solidity: function addShares(address podOwner, uint256 shares) returns(uint256)
-func (_EigenPodManagerStorage *EigenPodManagerStorageTransactor) AddShares(opts *bind.TransactOpts, podOwner common.Address, shares *big.Int) (*types.Transaction, error) {
- return _EigenPodManagerStorage.contract.Transact(opts, "addShares", podOwner, shares)
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_EigenPodManagerStorage *EigenPodManagerStorageTransactor) AddShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _EigenPodManagerStorage.contract.Transact(opts, "addShares", staker, strategy, shares)
}
-// AddShares is a paid mutator transaction binding the contract method 0x0e81073c.
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
//
-// Solidity: function addShares(address podOwner, uint256 shares) returns(uint256)
-func (_EigenPodManagerStorage *EigenPodManagerStorageSession) AddShares(podOwner common.Address, shares *big.Int) (*types.Transaction, error) {
- return _EigenPodManagerStorage.Contract.AddShares(&_EigenPodManagerStorage.TransactOpts, podOwner, shares)
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_EigenPodManagerStorage *EigenPodManagerStorageSession) AddShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _EigenPodManagerStorage.Contract.AddShares(&_EigenPodManagerStorage.TransactOpts, staker, strategy, shares)
}
-// AddShares is a paid mutator transaction binding the contract method 0x0e81073c.
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
//
-// Solidity: function addShares(address podOwner, uint256 shares) returns(uint256)
-func (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) AddShares(podOwner common.Address, shares *big.Int) (*types.Transaction, error) {
- return _EigenPodManagerStorage.Contract.AddShares(&_EigenPodManagerStorage.TransactOpts, podOwner, shares)
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) AddShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _EigenPodManagerStorage.Contract.AddShares(&_EigenPodManagerStorage.TransactOpts, staker, strategy, shares)
}
// CreatePod is a paid mutator transaction binding the contract method 0x84d81062.
@@ -656,6 +687,27 @@ func (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) CreatePo
return _EigenPodManagerStorage.Contract.CreatePod(&_EigenPodManagerStorage.TransactOpts)
}
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
+//
+// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns()
+func (_EigenPodManagerStorage *EigenPodManagerStorageTransactor) IncreaseBurnableShares(opts *bind.TransactOpts, strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _EigenPodManagerStorage.contract.Transact(opts, "increaseBurnableShares", strategy, addedSharesToBurn)
+}
+
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
+//
+// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns()
+func (_EigenPodManagerStorage *EigenPodManagerStorageSession) IncreaseBurnableShares(strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _EigenPodManagerStorage.Contract.IncreaseBurnableShares(&_EigenPodManagerStorage.TransactOpts, strategy, addedSharesToBurn)
+}
+
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
+//
+// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns()
+func (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) IncreaseBurnableShares(strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _EigenPodManagerStorage.Contract.IncreaseBurnableShares(&_EigenPodManagerStorage.TransactOpts, strategy, addedSharesToBurn)
+}
+
// Pause is a paid mutator transaction binding the contract method 0x136439dd.
//
// Solidity: function pause(uint256 newPausedStatus) returns()
@@ -698,67 +750,46 @@ func (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) PauseAll
return _EigenPodManagerStorage.Contract.PauseAll(&_EigenPodManagerStorage.TransactOpts)
}
-// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xc2c51c40.
-//
-// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta) returns()
-func (_EigenPodManagerStorage *EigenPodManagerStorageTransactor) RecordBeaconChainETHBalanceUpdate(opts *bind.TransactOpts, podOwner common.Address, sharesDelta *big.Int) (*types.Transaction, error) {
- return _EigenPodManagerStorage.contract.Transact(opts, "recordBeaconChainETHBalanceUpdate", podOwner, sharesDelta)
-}
-
-// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xc2c51c40.
+// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xa1ca780b.
//
-// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta) returns()
-func (_EigenPodManagerStorage *EigenPodManagerStorageSession) RecordBeaconChainETHBalanceUpdate(podOwner common.Address, sharesDelta *big.Int) (*types.Transaction, error) {
- return _EigenPodManagerStorage.Contract.RecordBeaconChainETHBalanceUpdate(&_EigenPodManagerStorage.TransactOpts, podOwner, sharesDelta)
+// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, uint256 prevRestakedBalanceWei, int256 balanceDeltaWei) returns()
+func (_EigenPodManagerStorage *EigenPodManagerStorageTransactor) RecordBeaconChainETHBalanceUpdate(opts *bind.TransactOpts, podOwner common.Address, prevRestakedBalanceWei *big.Int, balanceDeltaWei *big.Int) (*types.Transaction, error) {
+ return _EigenPodManagerStorage.contract.Transact(opts, "recordBeaconChainETHBalanceUpdate", podOwner, prevRestakedBalanceWei, balanceDeltaWei)
}
-// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xc2c51c40.
+// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xa1ca780b.
//
-// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta) returns()
-func (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) RecordBeaconChainETHBalanceUpdate(podOwner common.Address, sharesDelta *big.Int) (*types.Transaction, error) {
- return _EigenPodManagerStorage.Contract.RecordBeaconChainETHBalanceUpdate(&_EigenPodManagerStorage.TransactOpts, podOwner, sharesDelta)
+// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, uint256 prevRestakedBalanceWei, int256 balanceDeltaWei) returns()
+func (_EigenPodManagerStorage *EigenPodManagerStorageSession) RecordBeaconChainETHBalanceUpdate(podOwner common.Address, prevRestakedBalanceWei *big.Int, balanceDeltaWei *big.Int) (*types.Transaction, error) {
+ return _EigenPodManagerStorage.Contract.RecordBeaconChainETHBalanceUpdate(&_EigenPodManagerStorage.TransactOpts, podOwner, prevRestakedBalanceWei, balanceDeltaWei)
}
-// RemoveShares is a paid mutator transaction binding the contract method 0xbeffbb89.
+// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xa1ca780b.
//
-// Solidity: function removeShares(address podOwner, uint256 shares) returns()
-func (_EigenPodManagerStorage *EigenPodManagerStorageTransactor) RemoveShares(opts *bind.TransactOpts, podOwner common.Address, shares *big.Int) (*types.Transaction, error) {
- return _EigenPodManagerStorage.contract.Transact(opts, "removeShares", podOwner, shares)
+// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, uint256 prevRestakedBalanceWei, int256 balanceDeltaWei) returns()
+func (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) RecordBeaconChainETHBalanceUpdate(podOwner common.Address, prevRestakedBalanceWei *big.Int, balanceDeltaWei *big.Int) (*types.Transaction, error) {
+ return _EigenPodManagerStorage.Contract.RecordBeaconChainETHBalanceUpdate(&_EigenPodManagerStorage.TransactOpts, podOwner, prevRestakedBalanceWei, balanceDeltaWei)
}
-// 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 (_EigenPodManagerStorage *EigenPodManagerStorageSession) RemoveShares(podOwner common.Address, shares *big.Int) (*types.Transaction, error) {
- return _EigenPodManagerStorage.Contract.RemoveShares(&_EigenPodManagerStorage.TransactOpts, podOwner, shares)
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_EigenPodManagerStorage *EigenPodManagerStorageTransactor) RemoveDepositShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _EigenPodManagerStorage.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 (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) RemoveShares(podOwner common.Address, shares *big.Int) (*types.Transaction, error) {
- return _EigenPodManagerStorage.Contract.RemoveShares(&_EigenPodManagerStorage.TransactOpts, podOwner, shares)
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_EigenPodManagerStorage *EigenPodManagerStorageSession) RemoveDepositShares(staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _EigenPodManagerStorage.Contract.RemoveDepositShares(&_EigenPodManagerStorage.TransactOpts, staker, strategy, depositSharesToRemove)
}
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
+// RemoveDepositShares is a paid mutator transaction binding the contract method 0x724af423.
//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_EigenPodManagerStorage *EigenPodManagerStorageTransactor) SetPauserRegistry(opts *bind.TransactOpts, newPauserRegistry common.Address) (*types.Transaction, error) {
- return _EigenPodManagerStorage.contract.Transact(opts, "setPauserRegistry", newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_EigenPodManagerStorage *EigenPodManagerStorageSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _EigenPodManagerStorage.Contract.SetPauserRegistry(&_EigenPodManagerStorage.TransactOpts, newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _EigenPodManagerStorage.Contract.SetPauserRegistry(&_EigenPodManagerStorage.TransactOpts, newPauserRegistry)
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) RemoveDepositShares(staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _EigenPodManagerStorage.Contract.RemoveDepositShares(&_EigenPodManagerStorage.TransactOpts, staker, strategy, depositSharesToRemove)
}
// Stake is a paid mutator transaction binding the contract method 0x9b4e4634.
@@ -803,25 +834,25 @@ func (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) Unpause(
return _EigenPodManagerStorage.Contract.Unpause(&_EigenPodManagerStorage.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 (_EigenPodManagerStorage *EigenPodManagerStorageTransactor) WithdrawSharesAsTokens(opts *bind.TransactOpts, podOwner common.Address, destination common.Address, shares *big.Int) (*types.Transaction, error) {
- return _EigenPodManagerStorage.contract.Transact(opts, "withdrawSharesAsTokens", podOwner, destination, shares)
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns()
+func (_EigenPodManagerStorage *EigenPodManagerStorageTransactor) WithdrawSharesAsTokens(opts *bind.TransactOpts, staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _EigenPodManagerStorage.contract.Transact(opts, "withdrawSharesAsTokens", staker, strategy, token, 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 (_EigenPodManagerStorage *EigenPodManagerStorageSession) WithdrawSharesAsTokens(podOwner common.Address, destination common.Address, shares *big.Int) (*types.Transaction, error) {
- return _EigenPodManagerStorage.Contract.WithdrawSharesAsTokens(&_EigenPodManagerStorage.TransactOpts, podOwner, destination, shares)
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns()
+func (_EigenPodManagerStorage *EigenPodManagerStorageSession) WithdrawSharesAsTokens(staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _EigenPodManagerStorage.Contract.WithdrawSharesAsTokens(&_EigenPodManagerStorage.TransactOpts, staker, strategy, token, 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 (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) WithdrawSharesAsTokens(podOwner common.Address, destination common.Address, shares *big.Int) (*types.Transaction, error) {
- return _EigenPodManagerStorage.Contract.WithdrawSharesAsTokens(&_EigenPodManagerStorage.TransactOpts, podOwner, destination, shares)
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns()
+func (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) WithdrawSharesAsTokens(staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _EigenPodManagerStorage.Contract.WithdrawSharesAsTokens(&_EigenPodManagerStorage.TransactOpts, staker, strategy, token, shares)
}
// EigenPodManagerStorageBeaconChainETHDepositedIterator is returned from FilterBeaconChainETHDeposited and is used to iterate over the raw logs and unpacked data for BeaconChainETHDeposited events raised by the EigenPodManagerStorage contract.
@@ -1118,9 +1149,9 @@ func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) ParseBeaconChainE
return event, nil
}
-// EigenPodManagerStorageNewTotalSharesIterator is returned from FilterNewTotalShares and is used to iterate over the raw logs and unpacked data for NewTotalShares events raised by the EigenPodManagerStorage contract.
-type EigenPodManagerStorageNewTotalSharesIterator struct {
- Event *EigenPodManagerStorageNewTotalShares // Event containing the contract specifics and raw log
+// EigenPodManagerStorageBeaconChainSlashingFactorDecreasedIterator is returned from FilterBeaconChainSlashingFactorDecreased and is used to iterate over the raw logs and unpacked data for BeaconChainSlashingFactorDecreased events raised by the EigenPodManagerStorage contract.
+type EigenPodManagerStorageBeaconChainSlashingFactorDecreasedIterator struct {
+ Event *EigenPodManagerStorageBeaconChainSlashingFactorDecreased // 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
@@ -1134,7 +1165,7 @@ type EigenPodManagerStorageNewTotalSharesIterator 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 *EigenPodManagerStorageNewTotalSharesIterator) Next() bool {
+func (it *EigenPodManagerStorageBeaconChainSlashingFactorDecreasedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -1143,7 +1174,7 @@ func (it *EigenPodManagerStorageNewTotalSharesIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(EigenPodManagerStorageNewTotalShares)
+ it.Event = new(EigenPodManagerStorageBeaconChainSlashingFactorDecreased)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1158,7 +1189,7 @@ func (it *EigenPodManagerStorageNewTotalSharesIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(EigenPodManagerStorageNewTotalShares)
+ it.Event = new(EigenPodManagerStorageBeaconChainSlashingFactorDecreased)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1174,52 +1205,177 @@ func (it *EigenPodManagerStorageNewTotalSharesIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *EigenPodManagerStorageNewTotalSharesIterator) Error() error {
+func (it *EigenPodManagerStorageBeaconChainSlashingFactorDecreasedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *EigenPodManagerStorageNewTotalSharesIterator) Close() error {
+func (it *EigenPodManagerStorageBeaconChainSlashingFactorDecreasedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// EigenPodManagerStorageNewTotalShares represents a NewTotalShares event raised by the EigenPodManagerStorage contract.
-type EigenPodManagerStorageNewTotalShares struct {
- PodOwner common.Address
- NewTotalShares *big.Int
- Raw types.Log // Blockchain specific contextual infos
+// EigenPodManagerStorageBeaconChainSlashingFactorDecreased represents a BeaconChainSlashingFactorDecreased event raised by the EigenPodManagerStorage contract.
+type EigenPodManagerStorageBeaconChainSlashingFactorDecreased struct {
+ Staker common.Address
+ PrevBeaconChainSlashingFactor uint64
+ NewBeaconChainSlashingFactor uint64
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterNewTotalShares is a free log retrieval operation binding the contract event 0xd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098.
+// FilterBeaconChainSlashingFactorDecreased is a free log retrieval operation binding the contract event 0xb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf.
//
-// Solidity: event NewTotalShares(address indexed podOwner, int256 newTotalShares)
-func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) FilterNewTotalShares(opts *bind.FilterOpts, podOwner []common.Address) (*EigenPodManagerStorageNewTotalSharesIterator, error) {
+// Solidity: event BeaconChainSlashingFactorDecreased(address staker, uint64 prevBeaconChainSlashingFactor, uint64 newBeaconChainSlashingFactor)
+func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) FilterBeaconChainSlashingFactorDecreased(opts *bind.FilterOpts) (*EigenPodManagerStorageBeaconChainSlashingFactorDecreasedIterator, error) {
- var podOwnerRule []interface{}
- for _, podOwnerItem := range podOwner {
- podOwnerRule = append(podOwnerRule, podOwnerItem)
+ logs, sub, err := _EigenPodManagerStorage.contract.FilterLogs(opts, "BeaconChainSlashingFactorDecreased")
+ if err != nil {
+ return nil, err
}
+ return &EigenPodManagerStorageBeaconChainSlashingFactorDecreasedIterator{contract: _EigenPodManagerStorage.contract, event: "BeaconChainSlashingFactorDecreased", logs: logs, sub: sub}, nil
+}
- logs, sub, err := _EigenPodManagerStorage.contract.FilterLogs(opts, "NewTotalShares", podOwnerRule)
+// WatchBeaconChainSlashingFactorDecreased is a free log subscription operation binding the contract event 0xb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf.
+//
+// Solidity: event BeaconChainSlashingFactorDecreased(address staker, uint64 prevBeaconChainSlashingFactor, uint64 newBeaconChainSlashingFactor)
+func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchBeaconChainSlashingFactorDecreased(opts *bind.WatchOpts, sink chan<- *EigenPodManagerStorageBeaconChainSlashingFactorDecreased) (event.Subscription, error) {
+
+ logs, sub, err := _EigenPodManagerStorage.contract.WatchLogs(opts, "BeaconChainSlashingFactorDecreased")
if err != nil {
return nil, err
}
- return &EigenPodManagerStorageNewTotalSharesIterator{contract: _EigenPodManagerStorage.contract, event: "NewTotalShares", logs: logs, sub: sub}, nil
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(EigenPodManagerStorageBeaconChainSlashingFactorDecreased)
+ if err := _EigenPodManagerStorage.contract.UnpackLog(event, "BeaconChainSlashingFactorDecreased", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
}
-// WatchNewTotalShares is a free log subscription operation binding the contract event 0xd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098.
+// ParseBeaconChainSlashingFactorDecreased is a log parse operation binding the contract event 0xb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf.
//
-// Solidity: event NewTotalShares(address indexed podOwner, int256 newTotalShares)
-func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchNewTotalShares(opts *bind.WatchOpts, sink chan<- *EigenPodManagerStorageNewTotalShares, podOwner []common.Address) (event.Subscription, error) {
+// Solidity: event BeaconChainSlashingFactorDecreased(address staker, uint64 prevBeaconChainSlashingFactor, uint64 newBeaconChainSlashingFactor)
+func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) ParseBeaconChainSlashingFactorDecreased(log types.Log) (*EigenPodManagerStorageBeaconChainSlashingFactorDecreased, error) {
+ event := new(EigenPodManagerStorageBeaconChainSlashingFactorDecreased)
+ if err := _EigenPodManagerStorage.contract.UnpackLog(event, "BeaconChainSlashingFactorDecreased", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
- var podOwnerRule []interface{}
- for _, podOwnerItem := range podOwner {
- podOwnerRule = append(podOwnerRule, podOwnerItem)
+// EigenPodManagerStorageBurnableETHSharesIncreasedIterator is returned from FilterBurnableETHSharesIncreased and is used to iterate over the raw logs and unpacked data for BurnableETHSharesIncreased events raised by the EigenPodManagerStorage contract.
+type EigenPodManagerStorageBurnableETHSharesIncreasedIterator struct {
+ Event *EigenPodManagerStorageBurnableETHSharesIncreased // 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 *EigenPodManagerStorageBurnableETHSharesIncreasedIterator) 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(EigenPodManagerStorageBurnableETHSharesIncreased)
+ if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
+ it.fail = err
+ return false
+ }
+ it.Event.Raw = log
+ return true
- logs, sub, err := _EigenPodManagerStorage.contract.WatchLogs(opts, "NewTotalShares", podOwnerRule)
+ default:
+ return false
+ }
+ }
+ // Iterator still in progress, wait for either a data or an error event
+ select {
+ case log := <-it.logs:
+ it.Event = new(EigenPodManagerStorageBurnableETHSharesIncreased)
+ 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 *EigenPodManagerStorageBurnableETHSharesIncreasedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *EigenPodManagerStorageBurnableETHSharesIncreasedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// EigenPodManagerStorageBurnableETHSharesIncreased represents a BurnableETHSharesIncreased event raised by the EigenPodManagerStorage contract.
+type EigenPodManagerStorageBurnableETHSharesIncreased struct {
+ Shares *big.Int
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterBurnableETHSharesIncreased is a free log retrieval operation binding the contract event 0x1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a4.
+//
+// Solidity: event BurnableETHSharesIncreased(uint256 shares)
+func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) FilterBurnableETHSharesIncreased(opts *bind.FilterOpts) (*EigenPodManagerStorageBurnableETHSharesIncreasedIterator, error) {
+
+ logs, sub, err := _EigenPodManagerStorage.contract.FilterLogs(opts, "BurnableETHSharesIncreased")
+ if err != nil {
+ return nil, err
+ }
+ return &EigenPodManagerStorageBurnableETHSharesIncreasedIterator{contract: _EigenPodManagerStorage.contract, event: "BurnableETHSharesIncreased", logs: logs, sub: sub}, nil
+}
+
+// WatchBurnableETHSharesIncreased is a free log subscription operation binding the contract event 0x1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a4.
+//
+// Solidity: event BurnableETHSharesIncreased(uint256 shares)
+func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchBurnableETHSharesIncreased(opts *bind.WatchOpts, sink chan<- *EigenPodManagerStorageBurnableETHSharesIncreased) (event.Subscription, error) {
+
+ logs, sub, err := _EigenPodManagerStorage.contract.WatchLogs(opts, "BurnableETHSharesIncreased")
if err != nil {
return nil, err
}
@@ -1229,8 +1385,8 @@ func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchNewTotalShar
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(EigenPodManagerStorageNewTotalShares)
- if err := _EigenPodManagerStorage.contract.UnpackLog(event, "NewTotalShares", log); err != nil {
+ event := new(EigenPodManagerStorageBurnableETHSharesIncreased)
+ if err := _EigenPodManagerStorage.contract.UnpackLog(event, "BurnableETHSharesIncreased", log); err != nil {
return err
}
event.Raw = log
@@ -1251,21 +1407,21 @@ func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchNewTotalShar
}), nil
}
-// ParseNewTotalShares is a log parse operation binding the contract event 0xd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098.
+// ParseBurnableETHSharesIncreased is a log parse operation binding the contract event 0x1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a4.
//
-// Solidity: event NewTotalShares(address indexed podOwner, int256 newTotalShares)
-func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) ParseNewTotalShares(log types.Log) (*EigenPodManagerStorageNewTotalShares, error) {
- event := new(EigenPodManagerStorageNewTotalShares)
- if err := _EigenPodManagerStorage.contract.UnpackLog(event, "NewTotalShares", log); err != nil {
+// Solidity: event BurnableETHSharesIncreased(uint256 shares)
+func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) ParseBurnableETHSharesIncreased(log types.Log) (*EigenPodManagerStorageBurnableETHSharesIncreased, error) {
+ event := new(EigenPodManagerStorageBurnableETHSharesIncreased)
+ if err := _EigenPodManagerStorage.contract.UnpackLog(event, "BurnableETHSharesIncreased", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// EigenPodManagerStoragePausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the EigenPodManagerStorage contract.
-type EigenPodManagerStoragePausedIterator struct {
- Event *EigenPodManagerStoragePaused // Event containing the contract specifics and raw log
+// EigenPodManagerStorageNewTotalSharesIterator is returned from FilterNewTotalShares and is used to iterate over the raw logs and unpacked data for NewTotalShares events raised by the EigenPodManagerStorage contract.
+type EigenPodManagerStorageNewTotalSharesIterator struct {
+ Event *EigenPodManagerStorageNewTotalShares // 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
@@ -1279,7 +1435,7 @@ type EigenPodManagerStoragePausedIterator 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 *EigenPodManagerStoragePausedIterator) Next() bool {
+func (it *EigenPodManagerStorageNewTotalSharesIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -1288,7 +1444,7 @@ func (it *EigenPodManagerStoragePausedIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(EigenPodManagerStoragePaused)
+ it.Event = new(EigenPodManagerStorageNewTotalShares)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1303,7 +1459,7 @@ func (it *EigenPodManagerStoragePausedIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(EigenPodManagerStoragePaused)
+ it.Event = new(EigenPodManagerStorageNewTotalShares)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1319,52 +1475,52 @@ func (it *EigenPodManagerStoragePausedIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *EigenPodManagerStoragePausedIterator) Error() error {
+func (it *EigenPodManagerStorageNewTotalSharesIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *EigenPodManagerStoragePausedIterator) Close() error {
+func (it *EigenPodManagerStorageNewTotalSharesIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// EigenPodManagerStoragePaused represents a Paused event raised by the EigenPodManagerStorage contract.
-type EigenPodManagerStoragePaused struct {
- Account common.Address
- NewPausedStatus *big.Int
- Raw types.Log // Blockchain specific contextual infos
+// EigenPodManagerStorageNewTotalShares represents a NewTotalShares event raised by the EigenPodManagerStorage contract.
+type EigenPodManagerStorageNewTotalShares struct {
+ PodOwner common.Address
+ NewTotalShares *big.Int
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterPaused is a free log retrieval operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d.
+// FilterNewTotalShares is a free log retrieval operation binding the contract event 0xd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098.
//
-// Solidity: event Paused(address indexed account, uint256 newPausedStatus)
-func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) FilterPaused(opts *bind.FilterOpts, account []common.Address) (*EigenPodManagerStoragePausedIterator, error) {
+// Solidity: event NewTotalShares(address indexed podOwner, int256 newTotalShares)
+func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) FilterNewTotalShares(opts *bind.FilterOpts, podOwner []common.Address) (*EigenPodManagerStorageNewTotalSharesIterator, error) {
- var accountRule []interface{}
- for _, accountItem := range account {
- accountRule = append(accountRule, accountItem)
+ var podOwnerRule []interface{}
+ for _, podOwnerItem := range podOwner {
+ podOwnerRule = append(podOwnerRule, podOwnerItem)
}
- logs, sub, err := _EigenPodManagerStorage.contract.FilterLogs(opts, "Paused", accountRule)
+ logs, sub, err := _EigenPodManagerStorage.contract.FilterLogs(opts, "NewTotalShares", podOwnerRule)
if err != nil {
return nil, err
}
- return &EigenPodManagerStoragePausedIterator{contract: _EigenPodManagerStorage.contract, event: "Paused", logs: logs, sub: sub}, nil
+ return &EigenPodManagerStorageNewTotalSharesIterator{contract: _EigenPodManagerStorage.contract, event: "NewTotalShares", logs: logs, sub: sub}, nil
}
-// WatchPaused is a free log subscription operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d.
+// WatchNewTotalShares is a free log subscription operation binding the contract event 0xd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098.
//
-// Solidity: event Paused(address indexed account, uint256 newPausedStatus)
-func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *EigenPodManagerStoragePaused, account []common.Address) (event.Subscription, error) {
+// Solidity: event NewTotalShares(address indexed podOwner, int256 newTotalShares)
+func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchNewTotalShares(opts *bind.WatchOpts, sink chan<- *EigenPodManagerStorageNewTotalShares, podOwner []common.Address) (event.Subscription, error) {
- var accountRule []interface{}
- for _, accountItem := range account {
- accountRule = append(accountRule, accountItem)
+ var podOwnerRule []interface{}
+ for _, podOwnerItem := range podOwner {
+ podOwnerRule = append(podOwnerRule, podOwnerItem)
}
- logs, sub, err := _EigenPodManagerStorage.contract.WatchLogs(opts, "Paused", accountRule)
+ logs, sub, err := _EigenPodManagerStorage.contract.WatchLogs(opts, "NewTotalShares", podOwnerRule)
if err != nil {
return nil, err
}
@@ -1374,8 +1530,8 @@ func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchPaused(opts
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(EigenPodManagerStoragePaused)
- if err := _EigenPodManagerStorage.contract.UnpackLog(event, "Paused", log); err != nil {
+ event := new(EigenPodManagerStorageNewTotalShares)
+ if err := _EigenPodManagerStorage.contract.UnpackLog(event, "NewTotalShares", log); err != nil {
return err
}
event.Raw = log
@@ -1396,21 +1552,21 @@ func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchPaused(opts
}), nil
}
-// ParsePaused is a log parse operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d.
+// ParseNewTotalShares is a log parse operation binding the contract event 0xd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098.
//
-// Solidity: event Paused(address indexed account, uint256 newPausedStatus)
-func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) ParsePaused(log types.Log) (*EigenPodManagerStoragePaused, error) {
- event := new(EigenPodManagerStoragePaused)
- if err := _EigenPodManagerStorage.contract.UnpackLog(event, "Paused", log); err != nil {
+// Solidity: event NewTotalShares(address indexed podOwner, int256 newTotalShares)
+func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) ParseNewTotalShares(log types.Log) (*EigenPodManagerStorageNewTotalShares, error) {
+ event := new(EigenPodManagerStorageNewTotalShares)
+ if err := _EigenPodManagerStorage.contract.UnpackLog(event, "NewTotalShares", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// EigenPodManagerStoragePauserRegistrySetIterator is returned from FilterPauserRegistrySet and is used to iterate over the raw logs and unpacked data for PauserRegistrySet events raised by the EigenPodManagerStorage contract.
-type EigenPodManagerStoragePauserRegistrySetIterator struct {
- Event *EigenPodManagerStoragePauserRegistrySet // Event containing the contract specifics and raw log
+// EigenPodManagerStoragePausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the EigenPodManagerStorage contract.
+type EigenPodManagerStoragePausedIterator struct {
+ Event *EigenPodManagerStoragePaused // 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
@@ -1424,7 +1580,7 @@ type EigenPodManagerStoragePauserRegistrySetIterator 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 *EigenPodManagerStoragePauserRegistrySetIterator) Next() bool {
+func (it *EigenPodManagerStoragePausedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -1433,7 +1589,7 @@ func (it *EigenPodManagerStoragePauserRegistrySetIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(EigenPodManagerStoragePauserRegistrySet)
+ it.Event = new(EigenPodManagerStoragePaused)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1448,7 +1604,7 @@ func (it *EigenPodManagerStoragePauserRegistrySetIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(EigenPodManagerStoragePauserRegistrySet)
+ it.Event = new(EigenPodManagerStoragePaused)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1464,42 +1620,52 @@ func (it *EigenPodManagerStoragePauserRegistrySetIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *EigenPodManagerStoragePauserRegistrySetIterator) Error() error {
+func (it *EigenPodManagerStoragePausedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *EigenPodManagerStoragePauserRegistrySetIterator) Close() error {
+func (it *EigenPodManagerStoragePausedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// EigenPodManagerStoragePauserRegistrySet represents a PauserRegistrySet event raised by the EigenPodManagerStorage contract.
-type EigenPodManagerStoragePauserRegistrySet struct {
- PauserRegistry common.Address
- NewPauserRegistry common.Address
- Raw types.Log // Blockchain specific contextual infos
+// EigenPodManagerStoragePaused represents a Paused event raised by the EigenPodManagerStorage contract.
+type EigenPodManagerStoragePaused struct {
+ Account common.Address
+ NewPausedStatus *big.Int
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterPauserRegistrySet is a free log retrieval operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
+// FilterPaused is a free log retrieval operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d.
//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) FilterPauserRegistrySet(opts *bind.FilterOpts) (*EigenPodManagerStoragePauserRegistrySetIterator, error) {
+// Solidity: event Paused(address indexed account, uint256 newPausedStatus)
+func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) FilterPaused(opts *bind.FilterOpts, account []common.Address) (*EigenPodManagerStoragePausedIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
- logs, sub, err := _EigenPodManagerStorage.contract.FilterLogs(opts, "PauserRegistrySet")
+ logs, sub, err := _EigenPodManagerStorage.contract.FilterLogs(opts, "Paused", accountRule)
if err != nil {
return nil, err
}
- return &EigenPodManagerStoragePauserRegistrySetIterator{contract: _EigenPodManagerStorage.contract, event: "PauserRegistrySet", logs: logs, sub: sub}, nil
+ return &EigenPodManagerStoragePausedIterator{contract: _EigenPodManagerStorage.contract, event: "Paused", logs: logs, sub: sub}, nil
}
-// WatchPauserRegistrySet is a free log subscription operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
+// WatchPaused is a free log subscription operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d.
//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *EigenPodManagerStoragePauserRegistrySet) (event.Subscription, error) {
+// Solidity: event Paused(address indexed account, uint256 newPausedStatus)
+func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *EigenPodManagerStoragePaused, account []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
- logs, sub, err := _EigenPodManagerStorage.contract.WatchLogs(opts, "PauserRegistrySet")
+ logs, sub, err := _EigenPodManagerStorage.contract.WatchLogs(opts, "Paused", accountRule)
if err != nil {
return nil, err
}
@@ -1509,8 +1675,8 @@ func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchPauserRegist
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(EigenPodManagerStoragePauserRegistrySet)
- if err := _EigenPodManagerStorage.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
+ event := new(EigenPodManagerStoragePaused)
+ if err := _EigenPodManagerStorage.contract.UnpackLog(event, "Paused", log); err != nil {
return err
}
event.Raw = log
@@ -1531,12 +1697,12 @@ func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchPauserRegist
}), nil
}
-// ParsePauserRegistrySet is a log parse operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
+// ParsePaused is a log parse operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d.
//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) ParsePauserRegistrySet(log types.Log) (*EigenPodManagerStoragePauserRegistrySet, error) {
- event := new(EigenPodManagerStoragePauserRegistrySet)
- if err := _EigenPodManagerStorage.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
+// Solidity: event Paused(address indexed account, uint256 newPausedStatus)
+func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) ParsePaused(log types.Log) (*EigenPodManagerStoragePaused, error) {
+ event := new(EigenPodManagerStoragePaused)
+ if err := _EigenPodManagerStorage.contract.UnpackLog(event, "Paused", log); err != nil {
return nil, err
}
event.Raw = log
diff --git a/pkg/bindings/EigenPodStorage/binding.go b/pkg/bindings/EigenPodStorage/binding.go
index 70640763e4..4a572d34b8 100644
--- a/pkg/bindings/EigenPodStorage/binding.go
+++ b/pkg/bindings/EigenPodStorage/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
+ PrevBeaconBalanceGwei 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,7 +73,7 @@ type IEigenPodValidatorInfo struct {
// EigenPodStorageMetaData contains all meta data concerning the EigenPodStorage contract.
var EigenPodStorageMetaData = &bind.MetaData{
- ABI: "[{\"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\":\"getParentBlockRoot\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner\",\"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\":\"amount\",\"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\":\"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}]",
+ ABI: "[{\"type\":\"function\",\"name\":\"activeValidatorCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkpointBalanceExitedGwei\",\"inputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentCheckpoint\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.Checkpoint\",\"components\":[{\"name\":\"beaconBlockRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proofsRemaining\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"podBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"balanceDeltasGwei\",\"type\":\"int64\",\"internalType\":\"int64\"},{\"name\":\"prevBeaconBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentCheckpointTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getParentBlockRoot\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner\",\"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\":\"amount\",\"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\":\"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\":\"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\":\"InvalidPubKeyLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MsgValueNot32ETH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoActiveCheckpoint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoBalanceToCheckpoint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodOwner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodOwnerOrProofSubmitter\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TimestampOutOfRange\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorInactiveOnBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorIsExitingBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorNotActiveInPod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorNotSlashedOnBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalCredentialsNotForEigenPod\",\"inputs\":[]}]",
}
// EigenPodStorageABI is the input ABI used to generate the binding from.
@@ -285,16 +286,16 @@ func (_EigenPodStorage *EigenPodStorageCallerSession) CheckpointBalanceExitedGwe
// CurrentCheckpoint is a free data retrieval call binding the contract method 0x47d28372.
//
-// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int128))
-func (_EigenPodStorage *EigenPodStorageCaller) CurrentCheckpoint(opts *bind.CallOpts) (IEigenPodCheckpoint, error) {
+// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int64,uint64))
+func (_EigenPodStorage *EigenPodStorageCaller) CurrentCheckpoint(opts *bind.CallOpts) (IEigenPodTypesCheckpoint, error) {
var out []interface{}
err := _EigenPodStorage.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
@@ -302,15 +303,15 @@ func (_EigenPodStorage *EigenPodStorageCaller) CurrentCheckpoint(opts *bind.Call
// CurrentCheckpoint is a free data retrieval call binding the contract method 0x47d28372.
//
-// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int128))
-func (_EigenPodStorage *EigenPodStorageSession) CurrentCheckpoint() (IEigenPodCheckpoint, error) {
+// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int64,uint64))
+func (_EigenPodStorage *EigenPodStorageSession) CurrentCheckpoint() (IEigenPodTypesCheckpoint, error) {
return _EigenPodStorage.Contract.CurrentCheckpoint(&_EigenPodStorage.CallOpts)
}
// CurrentCheckpoint is a free data retrieval call binding the contract method 0x47d28372.
//
-// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int128))
-func (_EigenPodStorage *EigenPodStorageCallerSession) CurrentCheckpoint() (IEigenPodCheckpoint, error) {
+// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int64,uint64))
+func (_EigenPodStorage *EigenPodStorageCallerSession) CurrentCheckpoint() (IEigenPodTypesCheckpoint, error) {
return _EigenPodStorage.Contract.CurrentCheckpoint(&_EigenPodStorage.CallOpts)
}
@@ -503,15 +504,15 @@ func (_EigenPodStorage *EigenPodStorageCallerSession) ProofSubmitter() (common.A
// ValidatorPubkeyHashToInfo is a free data retrieval call binding the contract method 0x6fcd0e53.
//
// Solidity: function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) view returns((uint64,uint64,uint64,uint8))
-func (_EigenPodStorage *EigenPodStorageCaller) ValidatorPubkeyHashToInfo(opts *bind.CallOpts, validatorPubkeyHash [32]byte) (IEigenPodValidatorInfo, error) {
+func (_EigenPodStorage *EigenPodStorageCaller) ValidatorPubkeyHashToInfo(opts *bind.CallOpts, validatorPubkeyHash [32]byte) (IEigenPodTypesValidatorInfo, error) {
var out []interface{}
err := _EigenPodStorage.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
@@ -520,29 +521,29 @@ func (_EigenPodStorage *EigenPodStorageCaller) ValidatorPubkeyHashToInfo(opts *b
// ValidatorPubkeyHashToInfo is a free data retrieval call binding the contract method 0x6fcd0e53.
//
// Solidity: function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) view returns((uint64,uint64,uint64,uint8))
-func (_EigenPodStorage *EigenPodStorageSession) ValidatorPubkeyHashToInfo(validatorPubkeyHash [32]byte) (IEigenPodValidatorInfo, error) {
+func (_EigenPodStorage *EigenPodStorageSession) ValidatorPubkeyHashToInfo(validatorPubkeyHash [32]byte) (IEigenPodTypesValidatorInfo, error) {
return _EigenPodStorage.Contract.ValidatorPubkeyHashToInfo(&_EigenPodStorage.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 (_EigenPodStorage *EigenPodStorageCallerSession) ValidatorPubkeyHashToInfo(validatorPubkeyHash [32]byte) (IEigenPodValidatorInfo, error) {
+func (_EigenPodStorage *EigenPodStorageCallerSession) ValidatorPubkeyHashToInfo(validatorPubkeyHash [32]byte) (IEigenPodTypesValidatorInfo, error) {
return _EigenPodStorage.Contract.ValidatorPubkeyHashToInfo(&_EigenPodStorage.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 (_EigenPodStorage *EigenPodStorageCaller) ValidatorPubkeyToInfo(opts *bind.CallOpts, validatorPubkey []byte) (IEigenPodValidatorInfo, error) {
+func (_EigenPodStorage *EigenPodStorageCaller) ValidatorPubkeyToInfo(opts *bind.CallOpts, validatorPubkey []byte) (IEigenPodTypesValidatorInfo, error) {
var out []interface{}
err := _EigenPodStorage.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
@@ -551,14 +552,14 @@ func (_EigenPodStorage *EigenPodStorageCaller) ValidatorPubkeyToInfo(opts *bind.
// ValidatorPubkeyToInfo is a free data retrieval call binding the contract method 0xb522538a.
//
// Solidity: function validatorPubkeyToInfo(bytes validatorPubkey) view returns((uint64,uint64,uint64,uint8))
-func (_EigenPodStorage *EigenPodStorageSession) ValidatorPubkeyToInfo(validatorPubkey []byte) (IEigenPodValidatorInfo, error) {
+func (_EigenPodStorage *EigenPodStorageSession) ValidatorPubkeyToInfo(validatorPubkey []byte) (IEigenPodTypesValidatorInfo, error) {
return _EigenPodStorage.Contract.ValidatorPubkeyToInfo(&_EigenPodStorage.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 (_EigenPodStorage *EigenPodStorageCallerSession) ValidatorPubkeyToInfo(validatorPubkey []byte) (IEigenPodValidatorInfo, error) {
+func (_EigenPodStorage *EigenPodStorageCallerSession) ValidatorPubkeyToInfo(validatorPubkey []byte) (IEigenPodTypesValidatorInfo, error) {
return _EigenPodStorage.Contract.ValidatorPubkeyToInfo(&_EigenPodStorage.CallOpts, validatorPubkey)
}
diff --git a/pkg/bindings/EigenStrategy/binding.go b/pkg/bindings/EigenStrategy/binding.go
index 10f1a10cbc..efedf07cce 100644
--- a/pkg/bindings/EigenStrategy/binding.go
+++ b/pkg/bindings/EigenStrategy/binding.go
@@ -31,8 +31,8 @@ var (
// EigenStrategyMetaData contains all meta data concerning the EigenStrategy contract.
var EigenStrategyMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"EIGEN\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigen\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"newShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"explanation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_underlyingToken\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_EIGEN\",\"type\":\"address\",\"internalType\":\"contractIEigen\"},{\"name\":\"_bEIGEN\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"view\"},{\"type\":\"function\",\"name\":\"sharesToUnderlyingView\",\"inputs\":[{\"name\":\"amountShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"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\":\"view\"},{\"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\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"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\":\"StrategyTokenSet\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"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: "0x60a06040523480156200001157600080fd5b5060405162001dc338038062001dc3833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611c4a62000179600039600081816101af015281816105ac01528181610ad40152610b9f0152611c4a6000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80637a8b2637116100c3578063ce7c2ac21161007c578063ce7c2ac2146102da578063d9caed12146102ed578063e3dae51c14610300578063f3e7387514610313578063fabc1cbc14610326578063fdc371ce1461033957600080fd5b80637a8b263714610260578063886f1195146102735780638c8710191461028c5780638f6a62401461029f578063ab5921e1146102b2578063c0c53b8b146102c757600080fd5b806347e7ef241161011557806347e7ef24146101e8578063485cc955146101fb578063553ca5f81461020e578063595c6a67146102215780635ac86ab7146102295780635c975abb1461025857600080fd5b806310d67a2f14610152578063136439dd146101675780632495a5991461017a57806339b70e38146101aa5780633a98ef39146101d1575b600080fd5b61016561016036600461181e565b61034c565b005b61016561017536600461183b565b610408565b60325461018d906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61018d7f000000000000000000000000000000000000000000000000000000000000000081565b6101da60335481565b6040519081526020016101a1565b6101da6101f6366004611854565b61054c565b610165610209366004611880565b610790565b6101da61021c36600461181e565b61085e565b610165610872565b6102486102373660046118c8565b6001805460ff9092161b9081161490565b60405190151581526020016101a1565b6001546101da565b6101da61026e36600461183b565b61093e565b60005461018d906201000090046001600160a01b031681565b6101da61029a36600461183b565b610989565b6101da6102ad36600461181e565b610994565b6102ba6109a2565b6040516101a19190611911565b6101656102d5366004611944565b6109c2565b6101da6102e836600461181e565b610aac565b6101656102fb36600461198f565b610b41565b6101da61030e36600461183b565b610d27565b6101da61032136600461183b565b610d60565b61016561033436600461183b565b610d6b565b60645461018d906001600160a01b031681565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561039f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c391906119d0565b6001600160a01b0316336001600160a01b0316146103fc5760405162461bcd60e51b81526004016103f3906119ed565b60405180910390fd5b61040581610ec7565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104799190611a37565b6104955760405162461bcd60e51b81526004016103f390611a59565b6001548181161461050e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103f3565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105a15760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103f3565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106195760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103f3565b6106238484610fcc565b60335460006106346103e883611ab7565b905060006103e86106436110e0565b61064d9190611ab7565b9050600061065b8783611acf565b9050806106688489611ae6565b6106729190611b05565b9550856106d85760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103f3565b6106e28685611ab7565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561076c5760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103f3565b610785826103e86033546107809190611ab7565b611152565b505050505092915050565b600054610100900460ff16158080156107b05750600054600160ff909116105b806107ca5750303b1580156107ca575060005460ff166001145b6107e65760405162461bcd60e51b81526004016103f390611b27565b6000805460ff191660011790558015610809576000805461ff0019166101001790555b61081383836111a6565b8015610859576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b600061086c61026e83610aac565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e39190611a37565b6108ff5760405162461bcd60e51b81526004016103f390611a59565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e86033546109519190611ab7565b905060006103e86109606110e0565b61096a9190611ab7565b9050816109778583611ae6565b6109819190611b05565b949350505050565b600061086c82610d27565b600061086c61032183610aac565b60606040518060800160405280604d8152602001611bc8604d9139905090565b600054610100900460ff16158080156109e25750600054600160ff909116105b806109fc5750303b1580156109fc575060005460ff166001145b610a185760405162461bcd60e51b81526004016103f390611b27565b6000805460ff191660011790558015610a3b576000805461ff0019166101001790555b606480546001600160a01b0319166001600160a01b038616179055610a6083836111a6565b8015610aa6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610b1d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086c9190611b75565b6001805460029081161415610b945760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103f3565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c0c5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103f3565b610c178484846112f1565b60335480831115610ca65760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103f3565b6000610cb46103e883611ab7565b905060006103e8610cc36110e0565b610ccd9190611ab7565b9050600082610cdc8784611ae6565b610ce69190611b05565b9050610cf28685611acf565b603355610d12610d028284611acf565b6103e86033546107809190611ab7565b610d1d88888361138c565b5050505050505050565b6000806103e8603354610d3a9190611ab7565b905060006103e8610d496110e0565b610d539190611ab7565b9050806109778386611ae6565b600061086c8261093e565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de291906119d0565b6001600160a01b0316336001600160a01b031614610e125760405162461bcd60e51b81526004016103f3906119ed565b600154198119600154191614610e905760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103f3565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610541565b6001600160a01b038116610f555760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103f3565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b0383811691161480610ff557506064546001600160a01b038381169116145b6110675760405162461bcd60e51b815260206004820152603760248201527f456967656e53747261746567792e6465706f7369743a2043616e206f6e6c792060448201527f6465706f7369742062454947454e206f7220454947454e00000000000000000060648201526084016103f3565b6064546001600160a01b03838116911614156110dc57606454604051636f074d1f60e11b8152600481018390526001600160a01b039091169063de0e9a3e90602401600060405180830381600087803b1580156110c357600080fd5b505af11580156110d7573d6000803e3d6000fd5b505050505b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114d9190611b75565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161118684670de0b6b3a7640000611ae6565b6111909190611b05565b6040519081526020015b60405180910390a15050565b600054610100900460ff166112115760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103f3565b603280546001600160a01b0319166001600160a01b03841617905561123781600061148d565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507603260009054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d09190611b8e565b604080516001600160a01b03909316835260ff90911660208301520161119a565b6032546001600160a01b038381169116148061131a57506064546001600160a01b038381169116145b6108595760405162461bcd60e51b815260206004820152603960248201527f456967656e53747261746567792e77697468647261773a2043616e206f6e6c7960448201527f2077697468647261772062454947454e206f7220454947454e0000000000000060648201526084016103f3565b6064546001600160a01b03838116911614156114795760325460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044016020604051808303816000875af11580156113f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114199190611a37565b50606454604051630ea598cb60e41b8152600481018390526001600160a01b039091169063ea598cb090602401600060405180830381600087803b15801561146057600080fd5b505af1158015611474573d6000803e3d6000fd5b505050505b6108596001600160a01b0383168483611579565b6000546201000090046001600160a01b03161580156114b457506001600160a01b03821615155b6115365760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103f3565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26110dc82610ec7565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261085992869291600091611609918516908490611686565b80519091501561085957808060200190518101906116279190611a37565b6108595760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103f3565b6060611695848460008561169f565b90505b9392505050565b6060824710156117005760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103f3565b6001600160a01b0385163b6117575760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103f3565b600080866001600160a01b031685876040516117739190611bab565b60006040518083038185875af1925050503d80600081146117b0576040519150601f19603f3d011682016040523d82523d6000602084013e6117b5565b606091505b50915091506117c58282866117d0565b979650505050505050565b606083156117df575081611698565b8251156117ef5782518084602001fd5b8160405162461bcd60e51b81526004016103f39190611911565b6001600160a01b038116811461040557600080fd5b60006020828403121561183057600080fd5b813561169881611809565b60006020828403121561184d57600080fd5b5035919050565b6000806040838503121561186757600080fd5b823561187281611809565b946020939093013593505050565b6000806040838503121561189357600080fd5b823561189e81611809565b915060208301356118ae81611809565b809150509250929050565b60ff8116811461040557600080fd5b6000602082840312156118da57600080fd5b8135611698816118b9565b60005b838110156119005781810151838201526020016118e8565b83811115610aa65750506000910152565b60208152600082518060208401526119308160408501602087016118e5565b601f01601f19169190910160400192915050565b60008060006060848603121561195957600080fd5b833561196481611809565b9250602084013561197481611809565b9150604084013561198481611809565b809150509250925092565b6000806000606084860312156119a457600080fd5b83356119af81611809565b925060208401356119bf81611809565b929592945050506040919091013590565b6000602082840312156119e257600080fd5b815161169881611809565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611a4957600080fd5b8151801515811461169857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611aca57611aca611aa1565b500190565b600082821015611ae157611ae1611aa1565b500390565b6000816000190483118215151615611b0057611b00611aa1565b500290565b600082611b2257634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600060208284031215611b8757600080fd5b5051919050565b600060208284031215611ba057600080fd5b8151611698816118b9565b60008251611bbd8184602087016118e5565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220f4bcf17ea15ddd1e80bbf4e3a07be4a8d579ad7b2d471d0aff800689741ac6f764736f6c634300080c0033",
+ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"EIGEN\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigen\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"newShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"explanation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_EIGEN\",\"type\":\"address\",\"internalType\":\"contractIEigen\"},{\"name\":\"_bEIGEN\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_underlyingToken\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"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\":\"view\"},{\"type\":\"function\",\"name\":\"sharesToUnderlyingView\",\"inputs\":[{\"name\":\"amountShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"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\":\"view\"},{\"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\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"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\":\"StrategyTokenSet\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"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\":\"BalanceExceedsMaxTotalDeposits\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxPerDepositExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewSharesZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnderlyingToken\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TotalSharesExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalAmountExceedsTotalDeposits\",\"inputs\":[]}]",
+ Bin: "0x60c060405234801561000f575f5ffd5b5060405161168d38038061168d83398101604081905261002e9161014f565b8181806001600160a01b038116610058576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03908116608052821660a05261007361007c565b50505050610187565b5f54610100900460ff16156100e75760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610136575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461014c575f5ffd5b50565b5f5f60408385031215610160575f5ffd5b825161016b81610138565b602084015190925061017c81610138565b809150509250929050565b60805160a0516114bb6101d25f395f818161018b0152818161043e01528181610871015261090e01525f81816102540152818161034b0152818161066a0152610a3c01526114bb5ff3fe608060405234801561000f575f5ffd5b506004361061013d575f3560e01c8063886f1195116100b4578063ce7c2ac211610079578063ce7c2ac2146102c4578063d9caed12146102d7578063e3dae51c146102ea578063f3e73875146102fd578063fabc1cbc14610310578063fdc371ce14610323575f5ffd5b8063886f11951461024f5780638c871019146102765780638f6a624014610289578063ab5921e11461029c578063c4d66de8146102b1575f5ffd5b8063485cc95511610105578063485cc955146101d7578063553ca5f8146101ea578063595c6a67146101fd5780635ac86ab7146102055780635c975abb146102345780637a8b26371461023c575f5ffd5b8063136439dd146101415780632495a5991461015657806339b70e38146101865780633a98ef39146101ad57806347e7ef24146101c4575b5f5ffd5b61015461014f3660046111ab565b610336565b005b603254610169906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101697f000000000000000000000000000000000000000000000000000000000000000081565b6101b660335481565b60405190815260200161017d565b6101b66101d23660046111d9565b61040b565b6101546101e5366004611203565b610557565b6101b66101f836600461123a565b610642565b610154610655565b61022461021336600461126a565b6001805460ff9092161b9081161490565b604051901515815260200161017d565b6001546101b6565b6101b661024a3660046111ab565b610704565b6101697f000000000000000000000000000000000000000000000000000000000000000081565b6101b66102843660046111ab565b61074d565b6101b661029736600461123a565b610757565b6102a4610764565b60405161017d9190611285565b6101546102bf36600461123a565b610784565b6101b66102d236600461123a565b61084a565b6101546102e53660046112ba565b6108dc565b6101b66102f83660046111ab565b6109f9565b6101b661030b3660046111ab565b610a30565b61015461031e3660046111ab565b610a3a565b606454610169906001600160a01b031681565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610398573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103bc91906112f8565b6103d957604051631d77d47760e21b815260040160405180910390fd5b60015481811681146103fe5760405163c61dca5d60e01b815260040160405180910390fd5b61040782610b50565b5050565b600180545f9182918116036104335760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461047c576040516348da714f60e01b815260040160405180910390fd5b6104868484610b8d565b6033545f6104966103e88361132b565b90505f6103e86104a4610c46565b6104ae919061132b565b90505f6104bb878361133e565b9050806104c88489611351565b6104d29190611368565b9550855f036104f457604051630c392ed360e11b815260040160405180910390fd5b6104fe868561132b565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561053357604051632f14e8a360e11b815260040160405180910390fd5b61054c826103e8603354610547919061132b565b610cb5565b505050505092915050565b5f54610100900460ff161580801561057557505f54600160ff909116105b8061058e5750303b15801561058e57505f5460ff166001145b6105b35760405162461bcd60e51b81526004016105aa90611387565b60405180910390fd5b5f805460ff1916600117905580156105d4575f805461ff0019166101001790555b606480546001600160a01b0319166001600160a01b0385161790556105f882610d01565b801561063d575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b5f61064f61024a8361084a565b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156106b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106db91906112f8565b6106f857604051631d77d47760e21b815260040160405180910390fd5b6107025f19610b50565b565b5f5f6103e8603354610716919061132b565b90505f6103e8610724610c46565b61072e919061132b565b90508161073b8583611351565b6107459190611368565b949350505050565b5f61064f826109f9565b5f61064f61030b8361084a565b60606040518060800160405280604d8152602001611439604d9139905090565b5f54610100900460ff16158080156107a257505f54600160ff909116105b806107bb5750303b1580156107bb57505f5460ff166001145b6107d75760405162461bcd60e51b81526004016105aa90611387565b5f805460ff1916600117905580156107f8575f805461ff0019166101001790555b61080182610d01565b8015610407575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa1580156108b8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064f91906113d5565b600180546002908116036109035760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461094c576040516348da714f60e01b815260040160405180910390fd5b610957848484610e4c565b6033548083111561097b57604051630b469df360e41b815260040160405180910390fd5b5f6109886103e88361132b565b90505f6103e8610996610c46565b6109a0919061132b565b90505f826109ae8784611351565b6109b89190611368565b90506109c4868561133e565b6033556109e46109d4828461133e565b6103e8603354610547919061132b565b6109ef888883610e92565b5050505050505050565b5f5f6103e8603354610a0b919061132b565b90505f6103e8610a19610c46565b610a23919061132b565b90508061073b8386611351565b5f61064f82610704565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a96573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aba91906113ec565b6001600160a01b0316336001600160a01b031614610aeb5760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610b125760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6032546001600160a01b0383811691161480610bb657506064546001600160a01b038381169116145b610bd357604051630312abdd60e61b815260040160405180910390fd5b6064546001600160a01b039081169083160361040757606454604051636f074d1f60e11b8152600481018390526001600160a01b039091169063de0e9a3e906024015f604051808303815f87803b158015610c2c575f5ffd5b505af1158015610c3e573d5f5f3e3d5ffd5b505050505050565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610c8c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb091906113d5565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610ce984670de0b6b3a7640000611351565b610cf39190611368565b60405190815260200161083e565b5f54610100900460ff16610d6b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016105aa565b603280546001600160a01b0319166001600160a01b038316179055610d8f5f610b50565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e01573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e259190611407565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161480610e7557506064546001600160a01b038381169116145b61063d57604051630312abdd60e61b815260040160405180910390fd5b6064546001600160a01b0390811690831603610f775760325460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044016020604051808303815f875af1158015610ef8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1c91906112f8565b50606454604051630ea598cb60e41b8152600481018390526001600160a01b039091169063ea598cb0906024015f604051808303815f87803b158015610f60575f5ffd5b505af1158015610f72573d5f5f3e3d5ffd5b505050505b604080516001600160a01b03858116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261063d92908516918691859185918591905f9061100f908490849061108e565b905080515f148061102f57508080602001905181019061102f91906112f8565b61063d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105aa565b606061074584845f85855f5f866001600160a01b031685876040516110b39190611422565b5f6040518083038185875af1925050503d805f81146110ed576040519150601f19603f3d011682016040523d82523d5f602084013e6110f2565b606091505b50915091506111038783838761110e565b979650505050505050565b6060831561117c5782515f03611175576001600160a01b0385163b6111755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105aa565b5081610745565b61074583838151156111915781518083602001fd5b8060405162461bcd60e51b81526004016105aa9190611285565b5f602082840312156111bb575f5ffd5b5035919050565b6001600160a01b03811681146111d6575f5ffd5b50565b5f5f604083850312156111ea575f5ffd5b82356111f5816111c2565b946020939093013593505050565b5f5f60408385031215611214575f5ffd5b823561121f816111c2565b9150602083013561122f816111c2565b809150509250929050565b5f6020828403121561124a575f5ffd5b8135611255816111c2565b9392505050565b60ff811681146111d6575f5ffd5b5f6020828403121561127a575f5ffd5b81356112558161125c565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f606084860312156112cc575f5ffd5b83356112d7816111c2565b925060208401356112e7816111c2565b929592945050506040919091013590565b5f60208284031215611308575f5ffd5b81518015158114611255575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561064f5761064f611317565b8181038181111561064f5761064f611317565b808202811582820484141761064f5761064f611317565b5f8261138257634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f602082840312156113e5575f5ffd5b5051919050565b5f602082840312156113fc575f5ffd5b8151611255816111c2565b5f60208284031215611417575f5ffd5b81516112558161125c565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201c5c49dc9ba91268a0437894b1f63f6b2c10e2eab9c06e8afea4c24894e65ec564736f6c634300081b0033",
}
// EigenStrategyABI is the input ABI used to generate the binding from.
@@ -44,7 +44,7 @@ var EigenStrategyABI = EigenStrategyMetaData.ABI
var EigenStrategyBin = EigenStrategyMetaData.Bin
// DeployEigenStrategy deploys a new Ethereum contract, binding an instance of EigenStrategy to it.
-func DeployEigenStrategy(auth *bind.TransactOpts, backend bind.ContractBackend, _strategyManager common.Address) (common.Address, *types.Transaction, *EigenStrategy, error) {
+func DeployEigenStrategy(auth *bind.TransactOpts, backend bind.ContractBackend, _strategyManager common.Address, _pauserRegistry common.Address) (common.Address, *types.Transaction, *EigenStrategy, error) {
parsed, err := EigenStrategyMetaData.GetAbi()
if err != nil {
return common.Address{}, nil, nil, err
@@ -53,7 +53,7 @@ func DeployEigenStrategy(auth *bind.TransactOpts, backend bind.ContractBackend,
return common.Address{}, nil, nil, errors.New("GetABI returned nil")
}
- address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(EigenStrategyBin), backend, _strategyManager)
+ address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(EigenStrategyBin), backend, _strategyManager, _pauserRegistry)
if err != nil {
return common.Address{}, nil, nil, err
}
@@ -659,44 +659,44 @@ func (_EigenStrategy *EigenStrategyTransactorSession) Deposit(token common.Addre
// Initialize is a paid mutator transaction binding the contract method 0x485cc955.
//
-// Solidity: function initialize(address _underlyingToken, address _pauserRegistry) returns()
-func (_EigenStrategy *EigenStrategyTransactor) Initialize(opts *bind.TransactOpts, _underlyingToken common.Address, _pauserRegistry common.Address) (*types.Transaction, error) {
- return _EigenStrategy.contract.Transact(opts, "initialize", _underlyingToken, _pauserRegistry)
+// Solidity: function initialize(address _EIGEN, address _bEIGEN) returns()
+func (_EigenStrategy *EigenStrategyTransactor) Initialize(opts *bind.TransactOpts, _EIGEN common.Address, _bEIGEN common.Address) (*types.Transaction, error) {
+ return _EigenStrategy.contract.Transact(opts, "initialize", _EIGEN, _bEIGEN)
}
// Initialize is a paid mutator transaction binding the contract method 0x485cc955.
//
-// Solidity: function initialize(address _underlyingToken, address _pauserRegistry) returns()
-func (_EigenStrategy *EigenStrategySession) Initialize(_underlyingToken common.Address, _pauserRegistry common.Address) (*types.Transaction, error) {
- return _EigenStrategy.Contract.Initialize(&_EigenStrategy.TransactOpts, _underlyingToken, _pauserRegistry)
+// Solidity: function initialize(address _EIGEN, address _bEIGEN) returns()
+func (_EigenStrategy *EigenStrategySession) Initialize(_EIGEN common.Address, _bEIGEN common.Address) (*types.Transaction, error) {
+ return _EigenStrategy.Contract.Initialize(&_EigenStrategy.TransactOpts, _EIGEN, _bEIGEN)
}
// Initialize is a paid mutator transaction binding the contract method 0x485cc955.
//
-// Solidity: function initialize(address _underlyingToken, address _pauserRegistry) returns()
-func (_EigenStrategy *EigenStrategyTransactorSession) Initialize(_underlyingToken common.Address, _pauserRegistry common.Address) (*types.Transaction, error) {
- return _EigenStrategy.Contract.Initialize(&_EigenStrategy.TransactOpts, _underlyingToken, _pauserRegistry)
+// Solidity: function initialize(address _EIGEN, address _bEIGEN) returns()
+func (_EigenStrategy *EigenStrategyTransactorSession) Initialize(_EIGEN common.Address, _bEIGEN common.Address) (*types.Transaction, error) {
+ return _EigenStrategy.Contract.Initialize(&_EigenStrategy.TransactOpts, _EIGEN, _bEIGEN)
}
-// Initialize0 is a paid mutator transaction binding the contract method 0xc0c53b8b.
+// Initialize0 is a paid mutator transaction binding the contract method 0xc4d66de8.
//
-// Solidity: function initialize(address _EIGEN, address _bEIGEN, address _pauserRegistry) returns()
-func (_EigenStrategy *EigenStrategyTransactor) Initialize0(opts *bind.TransactOpts, _EIGEN common.Address, _bEIGEN common.Address, _pauserRegistry common.Address) (*types.Transaction, error) {
- return _EigenStrategy.contract.Transact(opts, "initialize0", _EIGEN, _bEIGEN, _pauserRegistry)
+// Solidity: function initialize(address _underlyingToken) returns()
+func (_EigenStrategy *EigenStrategyTransactor) Initialize0(opts *bind.TransactOpts, _underlyingToken common.Address) (*types.Transaction, error) {
+ return _EigenStrategy.contract.Transact(opts, "initialize0", _underlyingToken)
}
-// Initialize0 is a paid mutator transaction binding the contract method 0xc0c53b8b.
+// Initialize0 is a paid mutator transaction binding the contract method 0xc4d66de8.
//
-// Solidity: function initialize(address _EIGEN, address _bEIGEN, address _pauserRegistry) returns()
-func (_EigenStrategy *EigenStrategySession) Initialize0(_EIGEN common.Address, _bEIGEN common.Address, _pauserRegistry common.Address) (*types.Transaction, error) {
- return _EigenStrategy.Contract.Initialize0(&_EigenStrategy.TransactOpts, _EIGEN, _bEIGEN, _pauserRegistry)
+// Solidity: function initialize(address _underlyingToken) returns()
+func (_EigenStrategy *EigenStrategySession) Initialize0(_underlyingToken common.Address) (*types.Transaction, error) {
+ return _EigenStrategy.Contract.Initialize0(&_EigenStrategy.TransactOpts, _underlyingToken)
}
-// Initialize0 is a paid mutator transaction binding the contract method 0xc0c53b8b.
+// Initialize0 is a paid mutator transaction binding the contract method 0xc4d66de8.
//
-// Solidity: function initialize(address _EIGEN, address _bEIGEN, address _pauserRegistry) returns()
-func (_EigenStrategy *EigenStrategyTransactorSession) Initialize0(_EIGEN common.Address, _bEIGEN common.Address, _pauserRegistry common.Address) (*types.Transaction, error) {
- return _EigenStrategy.Contract.Initialize0(&_EigenStrategy.TransactOpts, _EIGEN, _bEIGEN, _pauserRegistry)
+// Solidity: function initialize(address _underlyingToken) returns()
+func (_EigenStrategy *EigenStrategyTransactorSession) Initialize0(_underlyingToken common.Address) (*types.Transaction, error) {
+ return _EigenStrategy.Contract.Initialize0(&_EigenStrategy.TransactOpts, _underlyingToken)
}
// Pause is a paid mutator transaction binding the contract method 0x136439dd.
@@ -741,27 +741,6 @@ func (_EigenStrategy *EigenStrategyTransactorSession) PauseAll() (*types.Transac
return _EigenStrategy.Contract.PauseAll(&_EigenStrategy.TransactOpts)
}
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_EigenStrategy *EigenStrategyTransactor) SetPauserRegistry(opts *bind.TransactOpts, newPauserRegistry common.Address) (*types.Transaction, error) {
- return _EigenStrategy.contract.Transact(opts, "setPauserRegistry", newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_EigenStrategy *EigenStrategySession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _EigenStrategy.Contract.SetPauserRegistry(&_EigenStrategy.TransactOpts, newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_EigenStrategy *EigenStrategyTransactorSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _EigenStrategy.Contract.SetPauserRegistry(&_EigenStrategy.TransactOpts, newPauserRegistry)
-}
-
// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc.
//
// Solidity: function unpause(uint256 newPausedStatus) returns()
@@ -1238,141 +1217,6 @@ func (_EigenStrategy *EigenStrategyFilterer) ParsePaused(log types.Log) (*EigenS
return event, nil
}
-// EigenStrategyPauserRegistrySetIterator is returned from FilterPauserRegistrySet and is used to iterate over the raw logs and unpacked data for PauserRegistrySet events raised by the EigenStrategy contract.
-type EigenStrategyPauserRegistrySetIterator struct {
- Event *EigenStrategyPauserRegistrySet // 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 *EigenStrategyPauserRegistrySetIterator) 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(EigenStrategyPauserRegistrySet)
- 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(EigenStrategyPauserRegistrySet)
- 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 *EigenStrategyPauserRegistrySetIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *EigenStrategyPauserRegistrySetIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// EigenStrategyPauserRegistrySet represents a PauserRegistrySet event raised by the EigenStrategy contract.
-type EigenStrategyPauserRegistrySet struct {
- PauserRegistry common.Address
- NewPauserRegistry common.Address
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterPauserRegistrySet is a free log retrieval operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_EigenStrategy *EigenStrategyFilterer) FilterPauserRegistrySet(opts *bind.FilterOpts) (*EigenStrategyPauserRegistrySetIterator, error) {
-
- logs, sub, err := _EigenStrategy.contract.FilterLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return &EigenStrategyPauserRegistrySetIterator{contract: _EigenStrategy.contract, event: "PauserRegistrySet", logs: logs, sub: sub}, nil
-}
-
-// WatchPauserRegistrySet is a free log subscription operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_EigenStrategy *EigenStrategyFilterer) WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *EigenStrategyPauserRegistrySet) (event.Subscription, error) {
-
- logs, sub, err := _EigenStrategy.contract.WatchLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(EigenStrategyPauserRegistrySet)
- if err := _EigenStrategy.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return err
- }
- event.Raw = log
-
- select {
- case sink <- event:
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- }
- }), nil
-}
-
-// ParsePauserRegistrySet is a log parse operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_EigenStrategy *EigenStrategyFilterer) ParsePauserRegistrySet(log types.Log) (*EigenStrategyPauserRegistrySet, error) {
- event := new(EigenStrategyPauserRegistrySet)
- if err := _EigenStrategy.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
// EigenStrategyStrategyTokenSetIterator is returned from FilterStrategyTokenSet and is used to iterate over the raw logs and unpacked data for StrategyTokenSet events raised by the EigenStrategy contract.
type EigenStrategyStrategyTokenSetIterator struct {
Event *EigenStrategyStrategyTokenSet // Event containing the contract specifics and raw log
diff --git a/pkg/bindings/Endian/binding.go b/pkg/bindings/Endian/binding.go
index 7c51e25999..e2995571cc 100644
--- a/pkg/bindings/Endian/binding.go
+++ b/pkg/bindings/Endian/binding.go
@@ -32,7 +32,7 @@ var (
// EndianMetaData contains all meta data concerning the Endian contract.
var EndianMetaData = &bind.MetaData{
ABI: "[]",
- Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204a2efc12207a3cee7b82623fa8175320e423b455b285e2e2b2977ee6bde3203c64736f6c634300080c0033",
+ Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122065de58e62fc0153ec81e59074101ab95f4a50a4dc9b195d91698d58ec6e19dcb64736f6c634300081b0033",
}
// EndianABI is the input ABI used to generate the binding from.
diff --git a/pkg/bindings/IAVSDirectory/binding.go b/pkg/bindings/IAVSDirectory/binding.go
index 062259c2f2..83dfe31453 100644
--- a/pkg/bindings/IAVSDirectory/binding.go
+++ b/pkg/bindings/IAVSDirectory/binding.go
@@ -38,7 +38,7 @@ type ISignatureUtilsSignatureWithSaltAndExpiry struct {
// IAVSDirectoryMetaData contains all meta data concerning the IAVSDirectory contract.
var IAVSDirectoryMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"function\",\"name\":\"OPERATOR_AVS_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorAVSRegistrationDigestHash\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"cancelSalt\",\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"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\":\"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\":\"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}]",
+ 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\":\"calculateOperatorAVSRegistrationDigestHash\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"cancelSalt\",\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"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\":\"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\":\"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\":\"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\":[]}]",
}
// IAVSDirectoryABI is the input ABI used to generate the binding from.
@@ -218,12 +218,12 @@ func (_IAVSDirectory *IAVSDirectoryCallerSession) OPERATORAVSREGISTRATIONTYPEHAS
return _IAVSDirectory.Contract.OPERATORAVSREGISTRATIONTYPEHASH(&_IAVSDirectory.CallOpts)
}
-// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88.
+// OPERATORSETREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xc825fe68.
//
-// Solidity: function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) view returns(bytes32)
-func (_IAVSDirectory *IAVSDirectoryCaller) CalculateOperatorAVSRegistrationDigestHash(opts *bind.CallOpts, operator common.Address, avs common.Address, salt [32]byte, expiry *big.Int) ([32]byte, error) {
+// Solidity: function OPERATOR_SET_REGISTRATION_TYPEHASH() view returns(bytes32)
+func (_IAVSDirectory *IAVSDirectoryCaller) OPERATORSETREGISTRATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) {
var out []interface{}
- err := _IAVSDirectory.contract.Call(opts, &out, "calculateOperatorAVSRegistrationDigestHash", operator, avs, salt, expiry)
+ err := _IAVSDirectory.contract.Call(opts, &out, "OPERATOR_SET_REGISTRATION_TYPEHASH")
if err != nil {
return *new([32]byte), err
@@ -235,26 +235,26 @@ func (_IAVSDirectory *IAVSDirectoryCaller) CalculateOperatorAVSRegistrationDiges
}
-// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88.
+// OPERATORSETREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xc825fe68.
//
-// Solidity: function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) view returns(bytes32)
-func (_IAVSDirectory *IAVSDirectorySession) CalculateOperatorAVSRegistrationDigestHash(operator common.Address, avs common.Address, salt [32]byte, expiry *big.Int) ([32]byte, error) {
- return _IAVSDirectory.Contract.CalculateOperatorAVSRegistrationDigestHash(&_IAVSDirectory.CallOpts, operator, avs, salt, expiry)
+// Solidity: function OPERATOR_SET_REGISTRATION_TYPEHASH() view returns(bytes32)
+func (_IAVSDirectory *IAVSDirectorySession) OPERATORSETREGISTRATIONTYPEHASH() ([32]byte, error) {
+ return _IAVSDirectory.Contract.OPERATORSETREGISTRATIONTYPEHASH(&_IAVSDirectory.CallOpts)
}
-// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88.
+// OPERATORSETREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xc825fe68.
//
-// Solidity: function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) view returns(bytes32)
-func (_IAVSDirectory *IAVSDirectoryCallerSession) CalculateOperatorAVSRegistrationDigestHash(operator common.Address, avs common.Address, salt [32]byte, expiry *big.Int) ([32]byte, error) {
- return _IAVSDirectory.Contract.CalculateOperatorAVSRegistrationDigestHash(&_IAVSDirectory.CallOpts, operator, avs, salt, expiry)
+// Solidity: function OPERATOR_SET_REGISTRATION_TYPEHASH() view returns(bytes32)
+func (_IAVSDirectory *IAVSDirectoryCallerSession) OPERATORSETREGISTRATIONTYPEHASH() ([32]byte, error) {
+ return _IAVSDirectory.Contract.OPERATORSETREGISTRATIONTYPEHASH(&_IAVSDirectory.CallOpts)
}
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
+// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88.
//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_IAVSDirectory *IAVSDirectoryCaller) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) {
+// Solidity: function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) view returns(bytes32)
+func (_IAVSDirectory *IAVSDirectoryCaller) CalculateOperatorAVSRegistrationDigestHash(opts *bind.CallOpts, operator common.Address, avs common.Address, salt [32]byte, expiry *big.Int) ([32]byte, error) {
var out []interface{}
- err := _IAVSDirectory.contract.Call(opts, &out, "domainSeparator")
+ err := _IAVSDirectory.contract.Call(opts, &out, "calculateOperatorAVSRegistrationDigestHash", operator, avs, salt, expiry)
if err != nil {
return *new([32]byte), err
@@ -266,18 +266,18 @@ func (_IAVSDirectory *IAVSDirectoryCaller) DomainSeparator(opts *bind.CallOpts)
}
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
+// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88.
//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_IAVSDirectory *IAVSDirectorySession) DomainSeparator() ([32]byte, error) {
- return _IAVSDirectory.Contract.DomainSeparator(&_IAVSDirectory.CallOpts)
+// Solidity: function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) view returns(bytes32)
+func (_IAVSDirectory *IAVSDirectorySession) CalculateOperatorAVSRegistrationDigestHash(operator common.Address, avs common.Address, salt [32]byte, expiry *big.Int) ([32]byte, error) {
+ return _IAVSDirectory.Contract.CalculateOperatorAVSRegistrationDigestHash(&_IAVSDirectory.CallOpts, operator, avs, salt, expiry)
}
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
+// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88.
//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_IAVSDirectory *IAVSDirectoryCallerSession) DomainSeparator() ([32]byte, error) {
- return _IAVSDirectory.Contract.DomainSeparator(&_IAVSDirectory.CallOpts)
+// Solidity: function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) view returns(bytes32)
+func (_IAVSDirectory *IAVSDirectoryCallerSession) CalculateOperatorAVSRegistrationDigestHash(operator common.Address, avs common.Address, salt [32]byte, expiry *big.Int) ([32]byte, error) {
+ return _IAVSDirectory.Contract.CalculateOperatorAVSRegistrationDigestHash(&_IAVSDirectory.CallOpts, operator, avs, salt, expiry)
}
// OperatorSaltIsSpent is a free data retrieval call binding the contract method 0x374823b5.
@@ -353,6 +353,27 @@ func (_IAVSDirectory *IAVSDirectoryTransactorSession) DeregisterOperatorFromAVS(
return _IAVSDirectory.Contract.DeregisterOperatorFromAVS(&_IAVSDirectory.TransactOpts, operator)
}
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_IAVSDirectory *IAVSDirectoryTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _IAVSDirectory.contract.Transact(opts, "initialize", initialOwner, initialPausedStatus)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_IAVSDirectory *IAVSDirectorySession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _IAVSDirectory.Contract.Initialize(&_IAVSDirectory.TransactOpts, initialOwner, initialPausedStatus)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_IAVSDirectory *IAVSDirectoryTransactorSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _IAVSDirectory.Contract.Initialize(&_IAVSDirectory.TransactOpts, initialOwner, initialPausedStatus)
+}
+
// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d.
//
// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns()
diff --git a/pkg/bindings/IAVSRegistrar/binding.go b/pkg/bindings/IAVSRegistrar/binding.go
new file mode 100644
index 0000000000..5c84b09c7e
--- /dev/null
+++ b/pkg/bindings/IAVSRegistrar/binding.go
@@ -0,0 +1,223 @@
+// Code generated - DO NOT EDIT.
+// This file is a generated binding and any manual changes will be lost.
+
+package IAVSRegistrar
+
+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
+)
+
+// IAVSRegistrarMetaData contains all meta data concerning the IAVSRegistrar contract.
+var IAVSRegistrarMetaData = &bind.MetaData{
+ ABI: "[{\"type\":\"function\",\"name\":\"deregisterOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]",
+}
+
+// IAVSRegistrarABI is the input ABI used to generate the binding from.
+// Deprecated: Use IAVSRegistrarMetaData.ABI instead.
+var IAVSRegistrarABI = IAVSRegistrarMetaData.ABI
+
+// IAVSRegistrar is an auto generated Go binding around an Ethereum contract.
+type IAVSRegistrar struct {
+ IAVSRegistrarCaller // Read-only binding to the contract
+ IAVSRegistrarTransactor // Write-only binding to the contract
+ IAVSRegistrarFilterer // Log filterer for contract events
+}
+
+// IAVSRegistrarCaller is an auto generated read-only Go binding around an Ethereum contract.
+type IAVSRegistrarCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// IAVSRegistrarTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type IAVSRegistrarTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// IAVSRegistrarFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
+type IAVSRegistrarFilterer struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// IAVSRegistrarSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type IAVSRegistrarSession struct {
+ Contract *IAVSRegistrar // 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
+}
+
+// IAVSRegistrarCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type IAVSRegistrarCallerSession struct {
+ Contract *IAVSRegistrarCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// IAVSRegistrarTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type IAVSRegistrarTransactorSession struct {
+ Contract *IAVSRegistrarTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// IAVSRegistrarRaw is an auto generated low-level Go binding around an Ethereum contract.
+type IAVSRegistrarRaw struct {
+ Contract *IAVSRegistrar // Generic contract binding to access the raw methods on
+}
+
+// IAVSRegistrarCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type IAVSRegistrarCallerRaw struct {
+ Contract *IAVSRegistrarCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// IAVSRegistrarTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type IAVSRegistrarTransactorRaw struct {
+ Contract *IAVSRegistrarTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewIAVSRegistrar creates a new instance of IAVSRegistrar, bound to a specific deployed contract.
+func NewIAVSRegistrar(address common.Address, backend bind.ContractBackend) (*IAVSRegistrar, error) {
+ contract, err := bindIAVSRegistrar(address, backend, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &IAVSRegistrar{IAVSRegistrarCaller: IAVSRegistrarCaller{contract: contract}, IAVSRegistrarTransactor: IAVSRegistrarTransactor{contract: contract}, IAVSRegistrarFilterer: IAVSRegistrarFilterer{contract: contract}}, nil
+}
+
+// NewIAVSRegistrarCaller creates a new read-only instance of IAVSRegistrar, bound to a specific deployed contract.
+func NewIAVSRegistrarCaller(address common.Address, caller bind.ContractCaller) (*IAVSRegistrarCaller, error) {
+ contract, err := bindIAVSRegistrar(address, caller, nil, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &IAVSRegistrarCaller{contract: contract}, nil
+}
+
+// NewIAVSRegistrarTransactor creates a new write-only instance of IAVSRegistrar, bound to a specific deployed contract.
+func NewIAVSRegistrarTransactor(address common.Address, transactor bind.ContractTransactor) (*IAVSRegistrarTransactor, error) {
+ contract, err := bindIAVSRegistrar(address, nil, transactor, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &IAVSRegistrarTransactor{contract: contract}, nil
+}
+
+// NewIAVSRegistrarFilterer creates a new log filterer instance of IAVSRegistrar, bound to a specific deployed contract.
+func NewIAVSRegistrarFilterer(address common.Address, filterer bind.ContractFilterer) (*IAVSRegistrarFilterer, error) {
+ contract, err := bindIAVSRegistrar(address, nil, nil, filterer)
+ if err != nil {
+ return nil, err
+ }
+ return &IAVSRegistrarFilterer{contract: contract}, nil
+}
+
+// bindIAVSRegistrar binds a generic wrapper to an already deployed contract.
+func bindIAVSRegistrar(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
+ parsed, err := IAVSRegistrarMetaData.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 (_IAVSRegistrar *IAVSRegistrarRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _IAVSRegistrar.Contract.IAVSRegistrarCaller.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 (_IAVSRegistrar *IAVSRegistrarRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _IAVSRegistrar.Contract.IAVSRegistrarTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_IAVSRegistrar *IAVSRegistrarRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _IAVSRegistrar.Contract.IAVSRegistrarTransactor.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 (_IAVSRegistrar *IAVSRegistrarCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _IAVSRegistrar.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 (_IAVSRegistrar *IAVSRegistrarTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _IAVSRegistrar.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_IAVSRegistrar *IAVSRegistrarTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _IAVSRegistrar.Contract.contract.Transact(opts, method, params...)
+}
+
+// DeregisterOperator is a paid mutator transaction binding the contract method 0x9d8e0c23.
+//
+// Solidity: function deregisterOperator(address operator, uint32[] operatorSetIds) returns()
+func (_IAVSRegistrar *IAVSRegistrarTransactor) DeregisterOperator(opts *bind.TransactOpts, operator common.Address, operatorSetIds []uint32) (*types.Transaction, error) {
+ return _IAVSRegistrar.contract.Transact(opts, "deregisterOperator", operator, operatorSetIds)
+}
+
+// DeregisterOperator is a paid mutator transaction binding the contract method 0x9d8e0c23.
+//
+// Solidity: function deregisterOperator(address operator, uint32[] operatorSetIds) returns()
+func (_IAVSRegistrar *IAVSRegistrarSession) DeregisterOperator(operator common.Address, operatorSetIds []uint32) (*types.Transaction, error) {
+ return _IAVSRegistrar.Contract.DeregisterOperator(&_IAVSRegistrar.TransactOpts, operator, operatorSetIds)
+}
+
+// DeregisterOperator is a paid mutator transaction binding the contract method 0x9d8e0c23.
+//
+// Solidity: function deregisterOperator(address operator, uint32[] operatorSetIds) returns()
+func (_IAVSRegistrar *IAVSRegistrarTransactorSession) DeregisterOperator(operator common.Address, operatorSetIds []uint32) (*types.Transaction, error) {
+ return _IAVSRegistrar.Contract.DeregisterOperator(&_IAVSRegistrar.TransactOpts, operator, operatorSetIds)
+}
+
+// RegisterOperator is a paid mutator transaction binding the contract method 0xadcf73f7.
+//
+// Solidity: function registerOperator(address operator, uint32[] operatorSetIds, bytes data) returns()
+func (_IAVSRegistrar *IAVSRegistrarTransactor) RegisterOperator(opts *bind.TransactOpts, operator common.Address, operatorSetIds []uint32, data []byte) (*types.Transaction, error) {
+ return _IAVSRegistrar.contract.Transact(opts, "registerOperator", operator, operatorSetIds, data)
+}
+
+// RegisterOperator is a paid mutator transaction binding the contract method 0xadcf73f7.
+//
+// Solidity: function registerOperator(address operator, uint32[] operatorSetIds, bytes data) returns()
+func (_IAVSRegistrar *IAVSRegistrarSession) RegisterOperator(operator common.Address, operatorSetIds []uint32, data []byte) (*types.Transaction, error) {
+ return _IAVSRegistrar.Contract.RegisterOperator(&_IAVSRegistrar.TransactOpts, operator, operatorSetIds, data)
+}
+
+// RegisterOperator is a paid mutator transaction binding the contract method 0xadcf73f7.
+//
+// Solidity: function registerOperator(address operator, uint32[] operatorSetIds, bytes data) returns()
+func (_IAVSRegistrar *IAVSRegistrarTransactorSession) RegisterOperator(operator common.Address, operatorSetIds []uint32, data []byte) (*types.Transaction, error) {
+ return _IAVSRegistrar.Contract.RegisterOperator(&_IAVSRegistrar.TransactOpts, operator, operatorSetIds, data)
+}
diff --git a/pkg/bindings/IAllocationManager/binding.go b/pkg/bindings/IAllocationManager/binding.go
new file mode 100644
index 0000000000..3f74f32ea9
--- /dev/null
+++ b/pkg/bindings/IAllocationManager/binding.go
@@ -0,0 +1,2868 @@
+// Code generated - DO NOT EDIT.
+// This file is a generated binding and any manual changes will be lost.
+
+package IAllocationManager
+
+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
+)
+
+// IAllocationManagerTypesAllocateParams is an auto generated low-level Go binding around an user-defined struct.
+type IAllocationManagerTypesAllocateParams struct {
+ OperatorSet OperatorSet
+ Strategies []common.Address
+ NewMagnitudes []uint64
+}
+
+// IAllocationManagerTypesAllocation is an auto generated low-level Go binding around an user-defined struct.
+type IAllocationManagerTypesAllocation struct {
+ CurrentMagnitude uint64
+ PendingDiff *big.Int
+ EffectBlock uint32
+}
+
+// IAllocationManagerTypesCreateSetParams is an auto generated low-level Go binding around an user-defined struct.
+type IAllocationManagerTypesCreateSetParams struct {
+ OperatorSetId uint32
+ Strategies []common.Address
+}
+
+// IAllocationManagerTypesDeregisterParams is an auto generated low-level Go binding around an user-defined struct.
+type IAllocationManagerTypesDeregisterParams struct {
+ Operator common.Address
+ Avs common.Address
+ OperatorSetIds []uint32
+}
+
+// IAllocationManagerTypesRegisterParams is an auto generated low-level Go binding around an user-defined struct.
+type IAllocationManagerTypesRegisterParams struct {
+ Avs common.Address
+ OperatorSetIds []uint32
+ Data []byte
+}
+
+// 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
+ WadsToSlash []*big.Int
+ Description string
+}
+
+// OperatorSet is an auto generated low-level Go binding around an user-defined struct.
+type OperatorSet struct {
+ Avs common.Address
+ Id uint32
+}
+
+// IAllocationManagerMetaData contains all meta data concerning the IAllocationManager contract.
+var IAllocationManagerMetaData = &bind.MetaData{
+ ABI: "[{\"type\":\"function\",\"name\":\"addStrategiesToOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"clearDeallocationQueue\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"numToClear\",\"type\":\"uint16[]\",\"internalType\":\"uint16[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createOperatorSets\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.CreateSetParams[]\",\"components\":[{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterFromOperatorSets\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.DeregisterParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatableMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedStake\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"slashableStake\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocatedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocation\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.Allocation\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"isSet\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"delay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAllocations\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getEncumberedMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitude\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudes\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxMagnitudesAtBlock\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMemberCount\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMembers\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMinimumSlashableStake\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"futureBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"slashableStake\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetCount\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRegisteredSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"operatorSets\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategiesInOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStrategyAllocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structOperatorSet[]\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.Allocation[]\",\"components\":[{\"name\":\"currentMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"pendingDiff\",\"type\":\"int128\",\"internalType\":\"int128\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isMemberOfOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorSlashable\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyAllocations\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIAllocationManagerTypes.AllocateParams[]\",\"components\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"newMagnitudes\",\"type\":\"uint64[]\",\"internalType\":\"uint64[]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerForOperatorSets\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.RegisterParams\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetIds\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromOperatorSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAVSRegistrar\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"internalType\":\"contractIAVSRegistrar\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAllocationDelay\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slashOperator\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIAllocationManagerTypes.SlashingParams\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSetId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadsToSlash\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AVSMetadataURIUpdated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AVSRegistrarSet\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"registrar\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIAVSRegistrar\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationDelaySet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"delay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AllocationUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"magnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"effectBlock\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EncumberedMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"encumberedMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxMagnitudeUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"maxMagnitude\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAddedToOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetCreated\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSlashed\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategies\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"contractIStrategy[]\"},{\"name\":\"wadSlashed\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"description\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyAddedToOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromOperatorSet\",\"inputs\":[{\"name\":\"operatorSet\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structOperatorSet\",\"components\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AlreadyMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCaller\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperator\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidWadToSlash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ModificationAlreadyPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotMemberOfSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotSlashable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SameMagnitude\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategiesMustBeInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyAlreadyInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotInOperatorSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UninitializedAllocationDelay\",\"inputs\":[]}]",
+}
+
+// IAllocationManagerABI is the input ABI used to generate the binding from.
+// Deprecated: Use IAllocationManagerMetaData.ABI instead.
+var IAllocationManagerABI = IAllocationManagerMetaData.ABI
+
+// IAllocationManager is an auto generated Go binding around an Ethereum contract.
+type IAllocationManager struct {
+ IAllocationManagerCaller // Read-only binding to the contract
+ IAllocationManagerTransactor // Write-only binding to the contract
+ IAllocationManagerFilterer // Log filterer for contract events
+}
+
+// IAllocationManagerCaller is an auto generated read-only Go binding around an Ethereum contract.
+type IAllocationManagerCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// IAllocationManagerTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type IAllocationManagerTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// IAllocationManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
+type IAllocationManagerFilterer struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// IAllocationManagerSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type IAllocationManagerSession struct {
+ Contract *IAllocationManager // 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
+}
+
+// IAllocationManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type IAllocationManagerCallerSession struct {
+ Contract *IAllocationManagerCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// IAllocationManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type IAllocationManagerTransactorSession struct {
+ Contract *IAllocationManagerTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// IAllocationManagerRaw is an auto generated low-level Go binding around an Ethereum contract.
+type IAllocationManagerRaw struct {
+ Contract *IAllocationManager // Generic contract binding to access the raw methods on
+}
+
+// IAllocationManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type IAllocationManagerCallerRaw struct {
+ Contract *IAllocationManagerCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// IAllocationManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type IAllocationManagerTransactorRaw struct {
+ Contract *IAllocationManagerTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewIAllocationManager creates a new instance of IAllocationManager, bound to a specific deployed contract.
+func NewIAllocationManager(address common.Address, backend bind.ContractBackend) (*IAllocationManager, error) {
+ contract, err := bindIAllocationManager(address, backend, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &IAllocationManager{IAllocationManagerCaller: IAllocationManagerCaller{contract: contract}, IAllocationManagerTransactor: IAllocationManagerTransactor{contract: contract}, IAllocationManagerFilterer: IAllocationManagerFilterer{contract: contract}}, nil
+}
+
+// NewIAllocationManagerCaller creates a new read-only instance of IAllocationManager, bound to a specific deployed contract.
+func NewIAllocationManagerCaller(address common.Address, caller bind.ContractCaller) (*IAllocationManagerCaller, error) {
+ contract, err := bindIAllocationManager(address, caller, nil, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &IAllocationManagerCaller{contract: contract}, nil
+}
+
+// NewIAllocationManagerTransactor creates a new write-only instance of IAllocationManager, bound to a specific deployed contract.
+func NewIAllocationManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IAllocationManagerTransactor, error) {
+ contract, err := bindIAllocationManager(address, nil, transactor, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &IAllocationManagerTransactor{contract: contract}, nil
+}
+
+// NewIAllocationManagerFilterer creates a new log filterer instance of IAllocationManager, bound to a specific deployed contract.
+func NewIAllocationManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IAllocationManagerFilterer, error) {
+ contract, err := bindIAllocationManager(address, nil, nil, filterer)
+ if err != nil {
+ return nil, err
+ }
+ return &IAllocationManagerFilterer{contract: contract}, nil
+}
+
+// bindIAllocationManager binds a generic wrapper to an already deployed contract.
+func bindIAllocationManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
+ parsed, err := IAllocationManagerMetaData.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 (_IAllocationManager *IAllocationManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _IAllocationManager.Contract.IAllocationManagerCaller.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 (_IAllocationManager *IAllocationManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.IAllocationManagerTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_IAllocationManager *IAllocationManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.IAllocationManagerTransactor.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 (_IAllocationManager *IAllocationManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _IAllocationManager.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 (_IAllocationManager *IAllocationManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_IAllocationManager *IAllocationManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.contract.Transact(opts, method, params...)
+}
+
+// GetAVSRegistrar is a free data retrieval call binding the contract method 0x304c10cd.
+//
+// Solidity: function getAVSRegistrar(address avs) view returns(address)
+func (_IAllocationManager *IAllocationManagerCaller) GetAVSRegistrar(opts *bind.CallOpts, avs common.Address) (common.Address, error) {
+ var out []interface{}
+ err := _IAllocationManager.contract.Call(opts, &out, "getAVSRegistrar", avs)
+
+ if err != nil {
+ return *new(common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
+
+ return out0, err
+
+}
+
+// GetAVSRegistrar is a free data retrieval call binding the contract method 0x304c10cd.
+//
+// Solidity: function getAVSRegistrar(address avs) view returns(address)
+func (_IAllocationManager *IAllocationManagerSession) GetAVSRegistrar(avs common.Address) (common.Address, error) {
+ return _IAllocationManager.Contract.GetAVSRegistrar(&_IAllocationManager.CallOpts, avs)
+}
+
+// GetAVSRegistrar is a free data retrieval call binding the contract method 0x304c10cd.
+//
+// Solidity: function getAVSRegistrar(address avs) view returns(address)
+func (_IAllocationManager *IAllocationManagerCallerSession) GetAVSRegistrar(avs common.Address) (common.Address, error) {
+ return _IAllocationManager.Contract.GetAVSRegistrar(&_IAllocationManager.CallOpts, avs)
+}
+
+// GetAllocatableMagnitude is a free data retrieval call binding the contract method 0x6cfb4481.
+//
+// Solidity: function getAllocatableMagnitude(address operator, address strategy) view returns(uint64)
+func (_IAllocationManager *IAllocationManagerCaller) GetAllocatableMagnitude(opts *bind.CallOpts, operator common.Address, strategy common.Address) (uint64, error) {
+ var out []interface{}
+ err := _IAllocationManager.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 (_IAllocationManager *IAllocationManagerSession) GetAllocatableMagnitude(operator common.Address, strategy common.Address) (uint64, error) {
+ return _IAllocationManager.Contract.GetAllocatableMagnitude(&_IAllocationManager.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 (_IAllocationManager *IAllocationManagerCallerSession) GetAllocatableMagnitude(operator common.Address, strategy common.Address) (uint64, error) {
+ return _IAllocationManager.Contract.GetAllocatableMagnitude(&_IAllocationManager.CallOpts, operator, strategy)
+}
+
+// GetAllocatedSets is a free data retrieval call binding the contract method 0x15fe5028.
+//
+// Solidity: function getAllocatedSets(address operator) view returns((address,uint32)[])
+func (_IAllocationManager *IAllocationManagerCaller) GetAllocatedSets(opts *bind.CallOpts, operator common.Address) ([]OperatorSet, error) {
+ var out []interface{}
+ err := _IAllocationManager.contract.Call(opts, &out, "getAllocatedSets", operator)
+
+ if err != nil {
+ return *new([]OperatorSet), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]OperatorSet)).(*[]OperatorSet)
+
+ return out0, err
+
+}
+
+// GetAllocatedSets is a free data retrieval call binding the contract method 0x15fe5028.
+//
+// Solidity: function getAllocatedSets(address operator) view returns((address,uint32)[])
+func (_IAllocationManager *IAllocationManagerSession) GetAllocatedSets(operator common.Address) ([]OperatorSet, error) {
+ return _IAllocationManager.Contract.GetAllocatedSets(&_IAllocationManager.CallOpts, operator)
+}
+
+// GetAllocatedSets is a free data retrieval call binding the contract method 0x15fe5028.
+//
+// Solidity: function getAllocatedSets(address operator) view returns((address,uint32)[])
+func (_IAllocationManager *IAllocationManagerCallerSession) GetAllocatedSets(operator common.Address) ([]OperatorSet, error) {
+ return _IAllocationManager.Contract.GetAllocatedSets(&_IAllocationManager.CallOpts, operator)
+}
+
+// GetAllocatedStake is a free data retrieval call binding the contract method 0x2b453a9a.
+//
+// Solidity: function getAllocatedStake((address,uint32) operatorSet, address[] operators, address[] strategies) view returns(uint256[][] slashableStake)
+func (_IAllocationManager *IAllocationManagerCaller) GetAllocatedStake(opts *bind.CallOpts, operatorSet OperatorSet, operators []common.Address, strategies []common.Address) ([][]*big.Int, error) {
+ var out []interface{}
+ err := _IAllocationManager.contract.Call(opts, &out, "getAllocatedStake", operatorSet, operators, strategies)
+
+ if err != nil {
+ return *new([][]*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([][]*big.Int)).(*[][]*big.Int)
+
+ return out0, err
+
+}
+
+// GetAllocatedStake is a free data retrieval call binding the contract method 0x2b453a9a.
+//
+// Solidity: function getAllocatedStake((address,uint32) operatorSet, address[] operators, address[] strategies) view returns(uint256[][] slashableStake)
+func (_IAllocationManager *IAllocationManagerSession) GetAllocatedStake(operatorSet OperatorSet, operators []common.Address, strategies []common.Address) ([][]*big.Int, error) {
+ return _IAllocationManager.Contract.GetAllocatedStake(&_IAllocationManager.CallOpts, operatorSet, operators, strategies)
+}
+
+// GetAllocatedStake is a free data retrieval call binding the contract method 0x2b453a9a.
+//
+// Solidity: function getAllocatedStake((address,uint32) operatorSet, address[] operators, address[] strategies) view returns(uint256[][] slashableStake)
+func (_IAllocationManager *IAllocationManagerCallerSession) GetAllocatedStake(operatorSet OperatorSet, operators []common.Address, strategies []common.Address) ([][]*big.Int, error) {
+ return _IAllocationManager.Contract.GetAllocatedStake(&_IAllocationManager.CallOpts, operatorSet, operators, strategies)
+}
+
+// GetAllocatedStrategies is a free data retrieval call binding the contract method 0xc221d8ae.
+//
+// Solidity: function getAllocatedStrategies(address operator, (address,uint32) operatorSet) view returns(address[])
+func (_IAllocationManager *IAllocationManagerCaller) GetAllocatedStrategies(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet) ([]common.Address, error) {
+ var out []interface{}
+ err := _IAllocationManager.contract.Call(opts, &out, "getAllocatedStrategies", operator, operatorSet)
+
+ if err != nil {
+ return *new([]common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
+
+ return out0, err
+
+}
+
+// GetAllocatedStrategies is a free data retrieval call binding the contract method 0xc221d8ae.
+//
+// Solidity: function getAllocatedStrategies(address operator, (address,uint32) operatorSet) view returns(address[])
+func (_IAllocationManager *IAllocationManagerSession) GetAllocatedStrategies(operator common.Address, operatorSet OperatorSet) ([]common.Address, error) {
+ return _IAllocationManager.Contract.GetAllocatedStrategies(&_IAllocationManager.CallOpts, operator, operatorSet)
+}
+
+// GetAllocatedStrategies is a free data retrieval call binding the contract method 0xc221d8ae.
+//
+// Solidity: function getAllocatedStrategies(address operator, (address,uint32) operatorSet) view returns(address[])
+func (_IAllocationManager *IAllocationManagerCallerSession) GetAllocatedStrategies(operator common.Address, operatorSet OperatorSet) ([]common.Address, error) {
+ return _IAllocationManager.Contract.GetAllocatedStrategies(&_IAllocationManager.CallOpts, operator, operatorSet)
+}
+
+// GetAllocation is a free data retrieval call binding the contract method 0x10e1b9b8.
+//
+// Solidity: function getAllocation(address operator, (address,uint32) operatorSet, address strategy) view returns((uint64,int128,uint32))
+func (_IAllocationManager *IAllocationManagerCaller) GetAllocation(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet, strategy common.Address) (IAllocationManagerTypesAllocation, error) {
+ var out []interface{}
+ err := _IAllocationManager.contract.Call(opts, &out, "getAllocation", operator, operatorSet, strategy)
+
+ if err != nil {
+ return *new(IAllocationManagerTypesAllocation), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(IAllocationManagerTypesAllocation)).(*IAllocationManagerTypesAllocation)
+
+ return out0, err
+
+}
+
+// GetAllocation is a free data retrieval call binding the contract method 0x10e1b9b8.
+//
+// Solidity: function getAllocation(address operator, (address,uint32) operatorSet, address strategy) view returns((uint64,int128,uint32))
+func (_IAllocationManager *IAllocationManagerSession) GetAllocation(operator common.Address, operatorSet OperatorSet, strategy common.Address) (IAllocationManagerTypesAllocation, error) {
+ return _IAllocationManager.Contract.GetAllocation(&_IAllocationManager.CallOpts, operator, operatorSet, strategy)
+}
+
+// GetAllocation is a free data retrieval call binding the contract method 0x10e1b9b8.
+//
+// Solidity: function getAllocation(address operator, (address,uint32) operatorSet, address strategy) view returns((uint64,int128,uint32))
+func (_IAllocationManager *IAllocationManagerCallerSession) GetAllocation(operator common.Address, operatorSet OperatorSet, strategy common.Address) (IAllocationManagerTypesAllocation, error) {
+ return _IAllocationManager.Contract.GetAllocation(&_IAllocationManager.CallOpts, operator, operatorSet, 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 (_IAllocationManager *IAllocationManagerCaller) GetAllocationDelay(opts *bind.CallOpts, operator common.Address) (struct {
+ IsSet bool
+ Delay uint32
+}, error) {
+ var out []interface{}
+ err := _IAllocationManager.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 (_IAllocationManager *IAllocationManagerSession) GetAllocationDelay(operator common.Address) (struct {
+ IsSet bool
+ Delay uint32
+}, error) {
+ return _IAllocationManager.Contract.GetAllocationDelay(&_IAllocationManager.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 (_IAllocationManager *IAllocationManagerCallerSession) GetAllocationDelay(operator common.Address) (struct {
+ IsSet bool
+ Delay uint32
+}, error) {
+ return _IAllocationManager.Contract.GetAllocationDelay(&_IAllocationManager.CallOpts, operator)
+}
+
+// GetAllocations is a free data retrieval call binding the contract method 0x8ce64854.
+//
+// Solidity: function getAllocations(address[] operators, (address,uint32) operatorSet, address strategy) view returns((uint64,int128,uint32)[])
+func (_IAllocationManager *IAllocationManagerCaller) GetAllocations(opts *bind.CallOpts, operators []common.Address, operatorSet OperatorSet, strategy common.Address) ([]IAllocationManagerTypesAllocation, error) {
+ var out []interface{}
+ err := _IAllocationManager.contract.Call(opts, &out, "getAllocations", operators, operatorSet, strategy)
+
+ if err != nil {
+ return *new([]IAllocationManagerTypesAllocation), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]IAllocationManagerTypesAllocation)).(*[]IAllocationManagerTypesAllocation)
+
+ return out0, err
+
+}
+
+// GetAllocations is a free data retrieval call binding the contract method 0x8ce64854.
+//
+// Solidity: function getAllocations(address[] operators, (address,uint32) operatorSet, address strategy) view returns((uint64,int128,uint32)[])
+func (_IAllocationManager *IAllocationManagerSession) GetAllocations(operators []common.Address, operatorSet OperatorSet, strategy common.Address) ([]IAllocationManagerTypesAllocation, error) {
+ return _IAllocationManager.Contract.GetAllocations(&_IAllocationManager.CallOpts, operators, operatorSet, strategy)
+}
+
+// GetAllocations is a free data retrieval call binding the contract method 0x8ce64854.
+//
+// Solidity: function getAllocations(address[] operators, (address,uint32) operatorSet, address strategy) view returns((uint64,int128,uint32)[])
+func (_IAllocationManager *IAllocationManagerCallerSession) GetAllocations(operators []common.Address, operatorSet OperatorSet, strategy common.Address) ([]IAllocationManagerTypesAllocation, error) {
+ return _IAllocationManager.Contract.GetAllocations(&_IAllocationManager.CallOpts, operators, operatorSet, strategy)
+}
+
+// GetEncumberedMagnitude is a free data retrieval call binding the contract method 0xf605ce08.
+//
+// Solidity: function getEncumberedMagnitude(address operator, address strategy) view returns(uint64)
+func (_IAllocationManager *IAllocationManagerCaller) GetEncumberedMagnitude(opts *bind.CallOpts, operator common.Address, strategy common.Address) (uint64, error) {
+ var out []interface{}
+ err := _IAllocationManager.contract.Call(opts, &out, "getEncumberedMagnitude", operator, strategy)
+
+ if err != nil {
+ return *new(uint64), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64)
+
+ return out0, err
+
+}
+
+// GetEncumberedMagnitude is a free data retrieval call binding the contract method 0xf605ce08.
+//
+// Solidity: function getEncumberedMagnitude(address operator, address strategy) view returns(uint64)
+func (_IAllocationManager *IAllocationManagerSession) GetEncumberedMagnitude(operator common.Address, strategy common.Address) (uint64, error) {
+ return _IAllocationManager.Contract.GetEncumberedMagnitude(&_IAllocationManager.CallOpts, operator, strategy)
+}
+
+// GetEncumberedMagnitude is a free data retrieval call binding the contract method 0xf605ce08.
+//
+// Solidity: function getEncumberedMagnitude(address operator, address strategy) view returns(uint64)
+func (_IAllocationManager *IAllocationManagerCallerSession) GetEncumberedMagnitude(operator common.Address, strategy common.Address) (uint64, error) {
+ return _IAllocationManager.Contract.GetEncumberedMagnitude(&_IAllocationManager.CallOpts, operator, strategy)
+}
+
+// GetMaxMagnitude is a free data retrieval call binding the contract method 0xa9333ec8.
+//
+// Solidity: function getMaxMagnitude(address operator, address strategy) view returns(uint64)
+func (_IAllocationManager *IAllocationManagerCaller) GetMaxMagnitude(opts *bind.CallOpts, operator common.Address, strategy common.Address) (uint64, error) {
+ var out []interface{}
+ err := _IAllocationManager.contract.Call(opts, &out, "getMaxMagnitude", operator, strategy)
+
+ if err != nil {
+ return *new(uint64), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64)
+
+ return out0, err
+
+}
+
+// GetMaxMagnitude is a free data retrieval call binding the contract method 0xa9333ec8.
+//
+// Solidity: function getMaxMagnitude(address operator, address strategy) view returns(uint64)
+func (_IAllocationManager *IAllocationManagerSession) GetMaxMagnitude(operator common.Address, strategy common.Address) (uint64, error) {
+ return _IAllocationManager.Contract.GetMaxMagnitude(&_IAllocationManager.CallOpts, operator, strategy)
+}
+
+// GetMaxMagnitude is a free data retrieval call binding the contract method 0xa9333ec8.
+//
+// Solidity: function getMaxMagnitude(address operator, address strategy) view returns(uint64)
+func (_IAllocationManager *IAllocationManagerCallerSession) GetMaxMagnitude(operator common.Address, strategy common.Address) (uint64, error) {
+ return _IAllocationManager.Contract.GetMaxMagnitude(&_IAllocationManager.CallOpts, operator, strategy)
+}
+
+// GetMaxMagnitudes is a free data retrieval call binding the contract method 0x4a10ffe5.
+//
+// Solidity: function getMaxMagnitudes(address[] operators, address strategy) view returns(uint64[])
+func (_IAllocationManager *IAllocationManagerCaller) GetMaxMagnitudes(opts *bind.CallOpts, operators []common.Address, strategy common.Address) ([]uint64, error) {
+ var out []interface{}
+ err := _IAllocationManager.contract.Call(opts, &out, "getMaxMagnitudes", operators, strategy)
+
+ 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 0x4a10ffe5.
+//
+// Solidity: function getMaxMagnitudes(address[] operators, address strategy) view returns(uint64[])
+func (_IAllocationManager *IAllocationManagerSession) GetMaxMagnitudes(operators []common.Address, strategy common.Address) ([]uint64, error) {
+ return _IAllocationManager.Contract.GetMaxMagnitudes(&_IAllocationManager.CallOpts, operators, strategy)
+}
+
+// GetMaxMagnitudes is a free data retrieval call binding the contract method 0x4a10ffe5.
+//
+// Solidity: function getMaxMagnitudes(address[] operators, address strategy) view returns(uint64[])
+func (_IAllocationManager *IAllocationManagerCallerSession) GetMaxMagnitudes(operators []common.Address, strategy common.Address) ([]uint64, error) {
+ return _IAllocationManager.Contract.GetMaxMagnitudes(&_IAllocationManager.CallOpts, operators, strategy)
+}
+
+// GetMaxMagnitudes0 is a free data retrieval call binding the contract method 0x547afb87.
+//
+// Solidity: function getMaxMagnitudes(address operator, address[] strategies) view returns(uint64[])
+func (_IAllocationManager *IAllocationManagerCaller) GetMaxMagnitudes0(opts *bind.CallOpts, operator common.Address, strategies []common.Address) ([]uint64, error) {
+ var out []interface{}
+ err := _IAllocationManager.contract.Call(opts, &out, "getMaxMagnitudes0", operator, strategies)
+
+ if err != nil {
+ return *new([]uint64), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]uint64)).(*[]uint64)
+
+ return out0, err
+
+}
+
+// GetMaxMagnitudes0 is a free data retrieval call binding the contract method 0x547afb87.
+//
+// Solidity: function getMaxMagnitudes(address operator, address[] strategies) view returns(uint64[])
+func (_IAllocationManager *IAllocationManagerSession) GetMaxMagnitudes0(operator common.Address, strategies []common.Address) ([]uint64, error) {
+ return _IAllocationManager.Contract.GetMaxMagnitudes0(&_IAllocationManager.CallOpts, operator, strategies)
+}
+
+// GetMaxMagnitudes0 is a free data retrieval call binding the contract method 0x547afb87.
+//
+// Solidity: function getMaxMagnitudes(address operator, address[] strategies) view returns(uint64[])
+func (_IAllocationManager *IAllocationManagerCallerSession) GetMaxMagnitudes0(operator common.Address, strategies []common.Address) ([]uint64, error) {
+ return _IAllocationManager.Contract.GetMaxMagnitudes0(&_IAllocationManager.CallOpts, operator, strategies)
+}
+
+// GetMaxMagnitudesAtBlock is a free data retrieval call binding the contract method 0x94d7d00c.
+//
+// Solidity: function getMaxMagnitudesAtBlock(address operator, address[] strategies, uint32 blockNumber) view returns(uint64[])
+func (_IAllocationManager *IAllocationManagerCaller) GetMaxMagnitudesAtBlock(opts *bind.CallOpts, operator common.Address, strategies []common.Address, blockNumber uint32) ([]uint64, error) {
+ var out []interface{}
+ err := _IAllocationManager.contract.Call(opts, &out, "getMaxMagnitudesAtBlock", operator, strategies, blockNumber)
+
+ if err != nil {
+ return *new([]uint64), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]uint64)).(*[]uint64)
+
+ return out0, err
+
+}
+
+// GetMaxMagnitudesAtBlock is a free data retrieval call binding the contract method 0x94d7d00c.
+//
+// Solidity: function getMaxMagnitudesAtBlock(address operator, address[] strategies, uint32 blockNumber) view returns(uint64[])
+func (_IAllocationManager *IAllocationManagerSession) GetMaxMagnitudesAtBlock(operator common.Address, strategies []common.Address, blockNumber uint32) ([]uint64, error) {
+ return _IAllocationManager.Contract.GetMaxMagnitudesAtBlock(&_IAllocationManager.CallOpts, operator, strategies, blockNumber)
+}
+
+// GetMaxMagnitudesAtBlock is a free data retrieval call binding the contract method 0x94d7d00c.
+//
+// Solidity: function getMaxMagnitudesAtBlock(address operator, address[] strategies, uint32 blockNumber) view returns(uint64[])
+func (_IAllocationManager *IAllocationManagerCallerSession) GetMaxMagnitudesAtBlock(operator common.Address, strategies []common.Address, blockNumber uint32) ([]uint64, error) {
+ return _IAllocationManager.Contract.GetMaxMagnitudesAtBlock(&_IAllocationManager.CallOpts, operator, strategies, blockNumber)
+}
+
+// GetMemberCount is a free data retrieval call binding the contract method 0xb2447af7.
+//
+// Solidity: function getMemberCount((address,uint32) operatorSet) view returns(uint256)
+func (_IAllocationManager *IAllocationManagerCaller) GetMemberCount(opts *bind.CallOpts, operatorSet OperatorSet) (*big.Int, error) {
+ var out []interface{}
+ err := _IAllocationManager.contract.Call(opts, &out, "getMemberCount", operatorSet)
+
+ if err != nil {
+ return *new(*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+
+ return out0, err
+
+}
+
+// GetMemberCount is a free data retrieval call binding the contract method 0xb2447af7.
+//
+// Solidity: function getMemberCount((address,uint32) operatorSet) view returns(uint256)
+func (_IAllocationManager *IAllocationManagerSession) GetMemberCount(operatorSet OperatorSet) (*big.Int, error) {
+ return _IAllocationManager.Contract.GetMemberCount(&_IAllocationManager.CallOpts, operatorSet)
+}
+
+// GetMemberCount is a free data retrieval call binding the contract method 0xb2447af7.
+//
+// Solidity: function getMemberCount((address,uint32) operatorSet) view returns(uint256)
+func (_IAllocationManager *IAllocationManagerCallerSession) GetMemberCount(operatorSet OperatorSet) (*big.Int, error) {
+ return _IAllocationManager.Contract.GetMemberCount(&_IAllocationManager.CallOpts, operatorSet)
+}
+
+// GetMembers is a free data retrieval call binding the contract method 0x6e875dba.
+//
+// Solidity: function getMembers((address,uint32) operatorSet) view returns(address[] operators)
+func (_IAllocationManager *IAllocationManagerCaller) GetMembers(opts *bind.CallOpts, operatorSet OperatorSet) ([]common.Address, error) {
+ var out []interface{}
+ err := _IAllocationManager.contract.Call(opts, &out, "getMembers", operatorSet)
+
+ if err != nil {
+ return *new([]common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
+
+ return out0, err
+
+}
+
+// GetMembers is a free data retrieval call binding the contract method 0x6e875dba.
+//
+// Solidity: function getMembers((address,uint32) operatorSet) view returns(address[] operators)
+func (_IAllocationManager *IAllocationManagerSession) GetMembers(operatorSet OperatorSet) ([]common.Address, error) {
+ return _IAllocationManager.Contract.GetMembers(&_IAllocationManager.CallOpts, operatorSet)
+}
+
+// GetMembers is a free data retrieval call binding the contract method 0x6e875dba.
+//
+// Solidity: function getMembers((address,uint32) operatorSet) view returns(address[] operators)
+func (_IAllocationManager *IAllocationManagerCallerSession) GetMembers(operatorSet OperatorSet) ([]common.Address, error) {
+ return _IAllocationManager.Contract.GetMembers(&_IAllocationManager.CallOpts, operatorSet)
+}
+
+// GetMinimumSlashableStake is a free data retrieval call binding the contract method 0x2bab2c4a.
+//
+// Solidity: function getMinimumSlashableStake((address,uint32) operatorSet, address[] operators, address[] strategies, uint32 futureBlock) view returns(uint256[][] slashableStake)
+func (_IAllocationManager *IAllocationManagerCaller) GetMinimumSlashableStake(opts *bind.CallOpts, operatorSet OperatorSet, operators []common.Address, strategies []common.Address, futureBlock uint32) ([][]*big.Int, error) {
+ var out []interface{}
+ err := _IAllocationManager.contract.Call(opts, &out, "getMinimumSlashableStake", operatorSet, operators, strategies, futureBlock)
+
+ if err != nil {
+ return *new([][]*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([][]*big.Int)).(*[][]*big.Int)
+
+ return out0, err
+
+}
+
+// GetMinimumSlashableStake is a free data retrieval call binding the contract method 0x2bab2c4a.
+//
+// Solidity: function getMinimumSlashableStake((address,uint32) operatorSet, address[] operators, address[] strategies, uint32 futureBlock) view returns(uint256[][] slashableStake)
+func (_IAllocationManager *IAllocationManagerSession) GetMinimumSlashableStake(operatorSet OperatorSet, operators []common.Address, strategies []common.Address, futureBlock uint32) ([][]*big.Int, error) {
+ return _IAllocationManager.Contract.GetMinimumSlashableStake(&_IAllocationManager.CallOpts, operatorSet, operators, strategies, futureBlock)
+}
+
+// GetMinimumSlashableStake is a free data retrieval call binding the contract method 0x2bab2c4a.
+//
+// Solidity: function getMinimumSlashableStake((address,uint32) operatorSet, address[] operators, address[] strategies, uint32 futureBlock) view returns(uint256[][] slashableStake)
+func (_IAllocationManager *IAllocationManagerCallerSession) GetMinimumSlashableStake(operatorSet OperatorSet, operators []common.Address, strategies []common.Address, futureBlock uint32) ([][]*big.Int, error) {
+ return _IAllocationManager.Contract.GetMinimumSlashableStake(&_IAllocationManager.CallOpts, operatorSet, operators, strategies, futureBlock)
+}
+
+// GetOperatorSetCount is a free data retrieval call binding the contract method 0xba1a84e5.
+//
+// Solidity: function getOperatorSetCount(address avs) view returns(uint256)
+func (_IAllocationManager *IAllocationManagerCaller) GetOperatorSetCount(opts *bind.CallOpts, avs common.Address) (*big.Int, error) {
+ var out []interface{}
+ err := _IAllocationManager.contract.Call(opts, &out, "getOperatorSetCount", avs)
+
+ if err != nil {
+ return *new(*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+
+ return out0, err
+
+}
+
+// GetOperatorSetCount is a free data retrieval call binding the contract method 0xba1a84e5.
+//
+// Solidity: function getOperatorSetCount(address avs) view returns(uint256)
+func (_IAllocationManager *IAllocationManagerSession) GetOperatorSetCount(avs common.Address) (*big.Int, error) {
+ return _IAllocationManager.Contract.GetOperatorSetCount(&_IAllocationManager.CallOpts, avs)
+}
+
+// GetOperatorSetCount is a free data retrieval call binding the contract method 0xba1a84e5.
+//
+// Solidity: function getOperatorSetCount(address avs) view returns(uint256)
+func (_IAllocationManager *IAllocationManagerCallerSession) GetOperatorSetCount(avs common.Address) (*big.Int, error) {
+ return _IAllocationManager.Contract.GetOperatorSetCount(&_IAllocationManager.CallOpts, avs)
+}
+
+// GetRegisteredSets is a free data retrieval call binding the contract method 0x79ae50cd.
+//
+// Solidity: function getRegisteredSets(address operator) view returns((address,uint32)[] operatorSets)
+func (_IAllocationManager *IAllocationManagerCaller) GetRegisteredSets(opts *bind.CallOpts, operator common.Address) ([]OperatorSet, error) {
+ var out []interface{}
+ err := _IAllocationManager.contract.Call(opts, &out, "getRegisteredSets", operator)
+
+ if err != nil {
+ return *new([]OperatorSet), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]OperatorSet)).(*[]OperatorSet)
+
+ return out0, err
+
+}
+
+// GetRegisteredSets is a free data retrieval call binding the contract method 0x79ae50cd.
+//
+// Solidity: function getRegisteredSets(address operator) view returns((address,uint32)[] operatorSets)
+func (_IAllocationManager *IAllocationManagerSession) GetRegisteredSets(operator common.Address) ([]OperatorSet, error) {
+ return _IAllocationManager.Contract.GetRegisteredSets(&_IAllocationManager.CallOpts, operator)
+}
+
+// GetRegisteredSets is a free data retrieval call binding the contract method 0x79ae50cd.
+//
+// Solidity: function getRegisteredSets(address operator) view returns((address,uint32)[] operatorSets)
+func (_IAllocationManager *IAllocationManagerCallerSession) GetRegisteredSets(operator common.Address) ([]OperatorSet, error) {
+ return _IAllocationManager.Contract.GetRegisteredSets(&_IAllocationManager.CallOpts, operator)
+}
+
+// GetStrategiesInOperatorSet is a free data retrieval call binding the contract method 0x4177a87c.
+//
+// Solidity: function getStrategiesInOperatorSet((address,uint32) operatorSet) view returns(address[] strategies)
+func (_IAllocationManager *IAllocationManagerCaller) GetStrategiesInOperatorSet(opts *bind.CallOpts, operatorSet OperatorSet) ([]common.Address, error) {
+ var out []interface{}
+ err := _IAllocationManager.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 (_IAllocationManager *IAllocationManagerSession) GetStrategiesInOperatorSet(operatorSet OperatorSet) ([]common.Address, error) {
+ return _IAllocationManager.Contract.GetStrategiesInOperatorSet(&_IAllocationManager.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 (_IAllocationManager *IAllocationManagerCallerSession) GetStrategiesInOperatorSet(operatorSet OperatorSet) ([]common.Address, error) {
+ return _IAllocationManager.Contract.GetStrategiesInOperatorSet(&_IAllocationManager.CallOpts, operatorSet)
+}
+
+// GetStrategyAllocations is a free data retrieval call binding the contract method 0x40120dab.
+//
+// Solidity: function getStrategyAllocations(address operator, address strategy) view returns((address,uint32)[], (uint64,int128,uint32)[])
+func (_IAllocationManager *IAllocationManagerCaller) GetStrategyAllocations(opts *bind.CallOpts, operator common.Address, strategy common.Address) ([]OperatorSet, []IAllocationManagerTypesAllocation, error) {
+ var out []interface{}
+ err := _IAllocationManager.contract.Call(opts, &out, "getStrategyAllocations", operator, strategy)
+
+ if err != nil {
+ return *new([]OperatorSet), *new([]IAllocationManagerTypesAllocation), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]OperatorSet)).(*[]OperatorSet)
+ out1 := *abi.ConvertType(out[1], new([]IAllocationManagerTypesAllocation)).(*[]IAllocationManagerTypesAllocation)
+
+ return out0, out1, err
+
+}
+
+// GetStrategyAllocations is a free data retrieval call binding the contract method 0x40120dab.
+//
+// Solidity: function getStrategyAllocations(address operator, address strategy) view returns((address,uint32)[], (uint64,int128,uint32)[])
+func (_IAllocationManager *IAllocationManagerSession) GetStrategyAllocations(operator common.Address, strategy common.Address) ([]OperatorSet, []IAllocationManagerTypesAllocation, error) {
+ return _IAllocationManager.Contract.GetStrategyAllocations(&_IAllocationManager.CallOpts, operator, strategy)
+}
+
+// GetStrategyAllocations is a free data retrieval call binding the contract method 0x40120dab.
+//
+// Solidity: function getStrategyAllocations(address operator, address strategy) view returns((address,uint32)[], (uint64,int128,uint32)[])
+func (_IAllocationManager *IAllocationManagerCallerSession) GetStrategyAllocations(operator common.Address, strategy common.Address) ([]OperatorSet, []IAllocationManagerTypesAllocation, error) {
+ return _IAllocationManager.Contract.GetStrategyAllocations(&_IAllocationManager.CallOpts, operator, strategy)
+}
+
+// IsMemberOfOperatorSet is a free data retrieval call binding the contract method 0x670d3ba2.
+//
+// Solidity: function isMemberOfOperatorSet(address operator, (address,uint32) operatorSet) view returns(bool)
+func (_IAllocationManager *IAllocationManagerCaller) IsMemberOfOperatorSet(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet) (bool, error) {
+ var out []interface{}
+ err := _IAllocationManager.contract.Call(opts, &out, "isMemberOfOperatorSet", operator, operatorSet)
+
+ if err != nil {
+ return *new(bool), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
+
+ return out0, err
+
+}
+
+// IsMemberOfOperatorSet is a free data retrieval call binding the contract method 0x670d3ba2.
+//
+// Solidity: function isMemberOfOperatorSet(address operator, (address,uint32) operatorSet) view returns(bool)
+func (_IAllocationManager *IAllocationManagerSession) IsMemberOfOperatorSet(operator common.Address, operatorSet OperatorSet) (bool, error) {
+ return _IAllocationManager.Contract.IsMemberOfOperatorSet(&_IAllocationManager.CallOpts, operator, operatorSet)
+}
+
+// IsMemberOfOperatorSet is a free data retrieval call binding the contract method 0x670d3ba2.
+//
+// Solidity: function isMemberOfOperatorSet(address operator, (address,uint32) operatorSet) view returns(bool)
+func (_IAllocationManager *IAllocationManagerCallerSession) IsMemberOfOperatorSet(operator common.Address, operatorSet OperatorSet) (bool, error) {
+ return _IAllocationManager.Contract.IsMemberOfOperatorSet(&_IAllocationManager.CallOpts, operator, operatorSet)
+}
+
+// IsOperatorSet is a free data retrieval call binding the contract method 0x260dc758.
+//
+// Solidity: function isOperatorSet((address,uint32) operatorSet) view returns(bool)
+func (_IAllocationManager *IAllocationManagerCaller) IsOperatorSet(opts *bind.CallOpts, operatorSet OperatorSet) (bool, error) {
+ var out []interface{}
+ err := _IAllocationManager.contract.Call(opts, &out, "isOperatorSet", operatorSet)
+
+ if err != nil {
+ return *new(bool), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
+
+ return out0, err
+
+}
+
+// IsOperatorSet is a free data retrieval call binding the contract method 0x260dc758.
+//
+// Solidity: function isOperatorSet((address,uint32) operatorSet) view returns(bool)
+func (_IAllocationManager *IAllocationManagerSession) IsOperatorSet(operatorSet OperatorSet) (bool, error) {
+ return _IAllocationManager.Contract.IsOperatorSet(&_IAllocationManager.CallOpts, operatorSet)
+}
+
+// IsOperatorSet is a free data retrieval call binding the contract method 0x260dc758.
+//
+// Solidity: function isOperatorSet((address,uint32) operatorSet) view returns(bool)
+func (_IAllocationManager *IAllocationManagerCallerSession) IsOperatorSet(operatorSet OperatorSet) (bool, error) {
+ return _IAllocationManager.Contract.IsOperatorSet(&_IAllocationManager.CallOpts, 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 (_IAllocationManager *IAllocationManagerCaller) IsOperatorSlashable(opts *bind.CallOpts, operator common.Address, operatorSet OperatorSet) (bool, error) {
+ var out []interface{}
+ err := _IAllocationManager.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 (_IAllocationManager *IAllocationManagerSession) IsOperatorSlashable(operator common.Address, operatorSet OperatorSet) (bool, error) {
+ return _IAllocationManager.Contract.IsOperatorSlashable(&_IAllocationManager.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 (_IAllocationManager *IAllocationManagerCallerSession) IsOperatorSlashable(operator common.Address, operatorSet OperatorSet) (bool, error) {
+ return _IAllocationManager.Contract.IsOperatorSlashable(&_IAllocationManager.CallOpts, operator, operatorSet)
+}
+
+// AddStrategiesToOperatorSet is a paid mutator transaction binding the contract method 0x50feea20.
+//
+// Solidity: function addStrategiesToOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns()
+func (_IAllocationManager *IAllocationManagerTransactor) AddStrategiesToOperatorSet(opts *bind.TransactOpts, avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) {
+ return _IAllocationManager.contract.Transact(opts, "addStrategiesToOperatorSet", avs, operatorSetId, strategies)
+}
+
+// AddStrategiesToOperatorSet is a paid mutator transaction binding the contract method 0x50feea20.
+//
+// Solidity: function addStrategiesToOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns()
+func (_IAllocationManager *IAllocationManagerSession) AddStrategiesToOperatorSet(avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.AddStrategiesToOperatorSet(&_IAllocationManager.TransactOpts, avs, operatorSetId, strategies)
+}
+
+// AddStrategiesToOperatorSet is a paid mutator transaction binding the contract method 0x50feea20.
+//
+// Solidity: function addStrategiesToOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns()
+func (_IAllocationManager *IAllocationManagerTransactorSession) AddStrategiesToOperatorSet(avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.AddStrategiesToOperatorSet(&_IAllocationManager.TransactOpts, avs, operatorSetId, strategies)
+}
+
+// ClearDeallocationQueue is a paid mutator transaction binding the contract method 0x4b5046ef.
+//
+// Solidity: function clearDeallocationQueue(address operator, address[] strategies, uint16[] numToClear) returns()
+func (_IAllocationManager *IAllocationManagerTransactor) ClearDeallocationQueue(opts *bind.TransactOpts, operator common.Address, strategies []common.Address, numToClear []uint16) (*types.Transaction, error) {
+ return _IAllocationManager.contract.Transact(opts, "clearDeallocationQueue", operator, strategies, numToClear)
+}
+
+// ClearDeallocationQueue is a paid mutator transaction binding the contract method 0x4b5046ef.
+//
+// Solidity: function clearDeallocationQueue(address operator, address[] strategies, uint16[] numToClear) returns()
+func (_IAllocationManager *IAllocationManagerSession) ClearDeallocationQueue(operator common.Address, strategies []common.Address, numToClear []uint16) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.ClearDeallocationQueue(&_IAllocationManager.TransactOpts, operator, strategies, numToClear)
+}
+
+// ClearDeallocationQueue is a paid mutator transaction binding the contract method 0x4b5046ef.
+//
+// Solidity: function clearDeallocationQueue(address operator, address[] strategies, uint16[] numToClear) returns()
+func (_IAllocationManager *IAllocationManagerTransactorSession) ClearDeallocationQueue(operator common.Address, strategies []common.Address, numToClear []uint16) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.ClearDeallocationQueue(&_IAllocationManager.TransactOpts, operator, strategies, numToClear)
+}
+
+// CreateOperatorSets is a paid mutator transaction binding the contract method 0x261f84e0.
+//
+// Solidity: function createOperatorSets(address avs, (uint32,address[])[] params) returns()
+func (_IAllocationManager *IAllocationManagerTransactor) CreateOperatorSets(opts *bind.TransactOpts, avs common.Address, params []IAllocationManagerTypesCreateSetParams) (*types.Transaction, error) {
+ return _IAllocationManager.contract.Transact(opts, "createOperatorSets", avs, params)
+}
+
+// CreateOperatorSets is a paid mutator transaction binding the contract method 0x261f84e0.
+//
+// Solidity: function createOperatorSets(address avs, (uint32,address[])[] params) returns()
+func (_IAllocationManager *IAllocationManagerSession) CreateOperatorSets(avs common.Address, params []IAllocationManagerTypesCreateSetParams) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.CreateOperatorSets(&_IAllocationManager.TransactOpts, avs, params)
+}
+
+// CreateOperatorSets is a paid mutator transaction binding the contract method 0x261f84e0.
+//
+// Solidity: function createOperatorSets(address avs, (uint32,address[])[] params) returns()
+func (_IAllocationManager *IAllocationManagerTransactorSession) CreateOperatorSets(avs common.Address, params []IAllocationManagerTypesCreateSetParams) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.CreateOperatorSets(&_IAllocationManager.TransactOpts, avs, params)
+}
+
+// DeregisterFromOperatorSets is a paid mutator transaction binding the contract method 0x6e3492b5.
+//
+// Solidity: function deregisterFromOperatorSets((address,address,uint32[]) params) returns()
+func (_IAllocationManager *IAllocationManagerTransactor) DeregisterFromOperatorSets(opts *bind.TransactOpts, params IAllocationManagerTypesDeregisterParams) (*types.Transaction, error) {
+ return _IAllocationManager.contract.Transact(opts, "deregisterFromOperatorSets", params)
+}
+
+// DeregisterFromOperatorSets is a paid mutator transaction binding the contract method 0x6e3492b5.
+//
+// Solidity: function deregisterFromOperatorSets((address,address,uint32[]) params) returns()
+func (_IAllocationManager *IAllocationManagerSession) DeregisterFromOperatorSets(params IAllocationManagerTypesDeregisterParams) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.DeregisterFromOperatorSets(&_IAllocationManager.TransactOpts, params)
+}
+
+// DeregisterFromOperatorSets is a paid mutator transaction binding the contract method 0x6e3492b5.
+//
+// Solidity: function deregisterFromOperatorSets((address,address,uint32[]) params) returns()
+func (_IAllocationManager *IAllocationManagerTransactorSession) DeregisterFromOperatorSets(params IAllocationManagerTypesDeregisterParams) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.DeregisterFromOperatorSets(&_IAllocationManager.TransactOpts, params)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_IAllocationManager *IAllocationManagerTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _IAllocationManager.contract.Transact(opts, "initialize", initialOwner, initialPausedStatus)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_IAllocationManager *IAllocationManagerSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.Initialize(&_IAllocationManager.TransactOpts, initialOwner, initialPausedStatus)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_IAllocationManager *IAllocationManagerTransactorSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.Initialize(&_IAllocationManager.TransactOpts, initialOwner, initialPausedStatus)
+}
+
+// ModifyAllocations is a paid mutator transaction binding the contract method 0x952899ee.
+//
+// Solidity: function modifyAllocations(address operator, ((address,uint32),address[],uint64[])[] params) returns()
+func (_IAllocationManager *IAllocationManagerTransactor) ModifyAllocations(opts *bind.TransactOpts, operator common.Address, params []IAllocationManagerTypesAllocateParams) (*types.Transaction, error) {
+ return _IAllocationManager.contract.Transact(opts, "modifyAllocations", operator, params)
+}
+
+// ModifyAllocations is a paid mutator transaction binding the contract method 0x952899ee.
+//
+// Solidity: function modifyAllocations(address operator, ((address,uint32),address[],uint64[])[] params) returns()
+func (_IAllocationManager *IAllocationManagerSession) ModifyAllocations(operator common.Address, params []IAllocationManagerTypesAllocateParams) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.ModifyAllocations(&_IAllocationManager.TransactOpts, operator, params)
+}
+
+// ModifyAllocations is a paid mutator transaction binding the contract method 0x952899ee.
+//
+// Solidity: function modifyAllocations(address operator, ((address,uint32),address[],uint64[])[] params) returns()
+func (_IAllocationManager *IAllocationManagerTransactorSession) ModifyAllocations(operator common.Address, params []IAllocationManagerTypesAllocateParams) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.ModifyAllocations(&_IAllocationManager.TransactOpts, operator, params)
+}
+
+// RegisterForOperatorSets is a paid mutator transaction binding the contract method 0xadc2e3d9.
+//
+// Solidity: function registerForOperatorSets(address operator, (address,uint32[],bytes) params) returns()
+func (_IAllocationManager *IAllocationManagerTransactor) RegisterForOperatorSets(opts *bind.TransactOpts, operator common.Address, params IAllocationManagerTypesRegisterParams) (*types.Transaction, error) {
+ return _IAllocationManager.contract.Transact(opts, "registerForOperatorSets", operator, params)
+}
+
+// RegisterForOperatorSets is a paid mutator transaction binding the contract method 0xadc2e3d9.
+//
+// Solidity: function registerForOperatorSets(address operator, (address,uint32[],bytes) params) returns()
+func (_IAllocationManager *IAllocationManagerSession) RegisterForOperatorSets(operator common.Address, params IAllocationManagerTypesRegisterParams) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.RegisterForOperatorSets(&_IAllocationManager.TransactOpts, operator, params)
+}
+
+// RegisterForOperatorSets is a paid mutator transaction binding the contract method 0xadc2e3d9.
+//
+// Solidity: function registerForOperatorSets(address operator, (address,uint32[],bytes) params) returns()
+func (_IAllocationManager *IAllocationManagerTransactorSession) RegisterForOperatorSets(operator common.Address, params IAllocationManagerTypesRegisterParams) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.RegisterForOperatorSets(&_IAllocationManager.TransactOpts, operator, params)
+}
+
+// RemoveStrategiesFromOperatorSet is a paid mutator transaction binding the contract method 0xb66bd989.
+//
+// Solidity: function removeStrategiesFromOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns()
+func (_IAllocationManager *IAllocationManagerTransactor) RemoveStrategiesFromOperatorSet(opts *bind.TransactOpts, avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) {
+ return _IAllocationManager.contract.Transact(opts, "removeStrategiesFromOperatorSet", avs, operatorSetId, strategies)
+}
+
+// RemoveStrategiesFromOperatorSet is a paid mutator transaction binding the contract method 0xb66bd989.
+//
+// Solidity: function removeStrategiesFromOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns()
+func (_IAllocationManager *IAllocationManagerSession) RemoveStrategiesFromOperatorSet(avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.RemoveStrategiesFromOperatorSet(&_IAllocationManager.TransactOpts, avs, operatorSetId, strategies)
+}
+
+// RemoveStrategiesFromOperatorSet is a paid mutator transaction binding the contract method 0xb66bd989.
+//
+// Solidity: function removeStrategiesFromOperatorSet(address avs, uint32 operatorSetId, address[] strategies) returns()
+func (_IAllocationManager *IAllocationManagerTransactorSession) RemoveStrategiesFromOperatorSet(avs common.Address, operatorSetId uint32, strategies []common.Address) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.RemoveStrategiesFromOperatorSet(&_IAllocationManager.TransactOpts, avs, operatorSetId, strategies)
+}
+
+// SetAVSRegistrar is a paid mutator transaction binding the contract method 0xd3d96ff4.
+//
+// Solidity: function setAVSRegistrar(address avs, address registrar) returns()
+func (_IAllocationManager *IAllocationManagerTransactor) SetAVSRegistrar(opts *bind.TransactOpts, avs common.Address, registrar common.Address) (*types.Transaction, error) {
+ return _IAllocationManager.contract.Transact(opts, "setAVSRegistrar", avs, registrar)
+}
+
+// SetAVSRegistrar is a paid mutator transaction binding the contract method 0xd3d96ff4.
+//
+// Solidity: function setAVSRegistrar(address avs, address registrar) returns()
+func (_IAllocationManager *IAllocationManagerSession) SetAVSRegistrar(avs common.Address, registrar common.Address) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.SetAVSRegistrar(&_IAllocationManager.TransactOpts, avs, registrar)
+}
+
+// SetAVSRegistrar is a paid mutator transaction binding the contract method 0xd3d96ff4.
+//
+// Solidity: function setAVSRegistrar(address avs, address registrar) returns()
+func (_IAllocationManager *IAllocationManagerTransactorSession) SetAVSRegistrar(avs common.Address, registrar common.Address) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.SetAVSRegistrar(&_IAllocationManager.TransactOpts, avs, registrar)
+}
+
+// SetAllocationDelay is a paid mutator transaction binding the contract method 0x56c483e6.
+//
+// Solidity: function setAllocationDelay(address operator, uint32 delay) returns()
+func (_IAllocationManager *IAllocationManagerTransactor) SetAllocationDelay(opts *bind.TransactOpts, operator common.Address, delay uint32) (*types.Transaction, error) {
+ return _IAllocationManager.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 (_IAllocationManager *IAllocationManagerSession) SetAllocationDelay(operator common.Address, delay uint32) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.SetAllocationDelay(&_IAllocationManager.TransactOpts, operator, delay)
+}
+
+// SetAllocationDelay is a paid mutator transaction binding the contract method 0x56c483e6.
+//
+// Solidity: function setAllocationDelay(address operator, uint32 delay) returns()
+func (_IAllocationManager *IAllocationManagerTransactorSession) SetAllocationDelay(operator common.Address, delay uint32) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.SetAllocationDelay(&_IAllocationManager.TransactOpts, operator, delay)
+}
+
+// SlashOperator is a paid mutator transaction binding the contract method 0x36352057.
+//
+// Solidity: function slashOperator(address avs, (address,uint32,address[],uint256[],string) params) returns()
+func (_IAllocationManager *IAllocationManagerTransactor) SlashOperator(opts *bind.TransactOpts, avs common.Address, params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) {
+ return _IAllocationManager.contract.Transact(opts, "slashOperator", avs, params)
+}
+
+// SlashOperator is a paid mutator transaction binding the contract method 0x36352057.
+//
+// Solidity: function slashOperator(address avs, (address,uint32,address[],uint256[],string) params) returns()
+func (_IAllocationManager *IAllocationManagerSession) SlashOperator(avs common.Address, params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.SlashOperator(&_IAllocationManager.TransactOpts, avs, params)
+}
+
+// SlashOperator is a paid mutator transaction binding the contract method 0x36352057.
+//
+// Solidity: function slashOperator(address avs, (address,uint32,address[],uint256[],string) params) returns()
+func (_IAllocationManager *IAllocationManagerTransactorSession) SlashOperator(avs common.Address, params IAllocationManagerTypesSlashingParams) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.SlashOperator(&_IAllocationManager.TransactOpts, avs, params)
+}
+
+// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa9821821.
+//
+// Solidity: function updateAVSMetadataURI(address avs, string metadataURI) returns()
+func (_IAllocationManager *IAllocationManagerTransactor) UpdateAVSMetadataURI(opts *bind.TransactOpts, avs common.Address, metadataURI string) (*types.Transaction, error) {
+ return _IAllocationManager.contract.Transact(opts, "updateAVSMetadataURI", avs, metadataURI)
+}
+
+// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa9821821.
+//
+// Solidity: function updateAVSMetadataURI(address avs, string metadataURI) returns()
+func (_IAllocationManager *IAllocationManagerSession) UpdateAVSMetadataURI(avs common.Address, metadataURI string) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.UpdateAVSMetadataURI(&_IAllocationManager.TransactOpts, avs, metadataURI)
+}
+
+// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa9821821.
+//
+// Solidity: function updateAVSMetadataURI(address avs, string metadataURI) returns()
+func (_IAllocationManager *IAllocationManagerTransactorSession) UpdateAVSMetadataURI(avs common.Address, metadataURI string) (*types.Transaction, error) {
+ return _IAllocationManager.Contract.UpdateAVSMetadataURI(&_IAllocationManager.TransactOpts, avs, metadataURI)
+}
+
+// IAllocationManagerAVSMetadataURIUpdatedIterator is returned from FilterAVSMetadataURIUpdated and is used to iterate over the raw logs and unpacked data for AVSMetadataURIUpdated events raised by the IAllocationManager contract.
+type IAllocationManagerAVSMetadataURIUpdatedIterator struct {
+ Event *IAllocationManagerAVSMetadataURIUpdated // 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 *IAllocationManagerAVSMetadataURIUpdatedIterator) 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(IAllocationManagerAVSMetadataURIUpdated)
+ 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(IAllocationManagerAVSMetadataURIUpdated)
+ 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 *IAllocationManagerAVSMetadataURIUpdatedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IAllocationManagerAVSMetadataURIUpdatedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IAllocationManagerAVSMetadataURIUpdated represents a AVSMetadataURIUpdated event raised by the IAllocationManager contract.
+type IAllocationManagerAVSMetadataURIUpdated struct {
+ Avs common.Address
+ MetadataURI string
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAVSMetadataURIUpdated is a free log retrieval operation binding the contract event 0xa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713.
+//
+// Solidity: event AVSMetadataURIUpdated(address indexed avs, string metadataURI)
+func (_IAllocationManager *IAllocationManagerFilterer) FilterAVSMetadataURIUpdated(opts *bind.FilterOpts, avs []common.Address) (*IAllocationManagerAVSMetadataURIUpdatedIterator, error) {
+
+ var avsRule []interface{}
+ for _, avsItem := range avs {
+ avsRule = append(avsRule, avsItem)
+ }
+
+ logs, sub, err := _IAllocationManager.contract.FilterLogs(opts, "AVSMetadataURIUpdated", avsRule)
+ if err != nil {
+ return nil, err
+ }
+ return &IAllocationManagerAVSMetadataURIUpdatedIterator{contract: _IAllocationManager.contract, event: "AVSMetadataURIUpdated", logs: logs, sub: sub}, nil
+}
+
+// WatchAVSMetadataURIUpdated is a free log subscription operation binding the contract event 0xa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713.
+//
+// Solidity: event AVSMetadataURIUpdated(address indexed avs, string metadataURI)
+func (_IAllocationManager *IAllocationManagerFilterer) WatchAVSMetadataURIUpdated(opts *bind.WatchOpts, sink chan<- *IAllocationManagerAVSMetadataURIUpdated, avs []common.Address) (event.Subscription, error) {
+
+ var avsRule []interface{}
+ for _, avsItem := range avs {
+ avsRule = append(avsRule, avsItem)
+ }
+
+ logs, sub, err := _IAllocationManager.contract.WatchLogs(opts, "AVSMetadataURIUpdated", avsRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(IAllocationManagerAVSMetadataURIUpdated)
+ if err := _IAllocationManager.contract.UnpackLog(event, "AVSMetadataURIUpdated", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParseAVSMetadataURIUpdated is a log parse operation binding the contract event 0xa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713.
+//
+// Solidity: event AVSMetadataURIUpdated(address indexed avs, string metadataURI)
+func (_IAllocationManager *IAllocationManagerFilterer) ParseAVSMetadataURIUpdated(log types.Log) (*IAllocationManagerAVSMetadataURIUpdated, error) {
+ event := new(IAllocationManagerAVSMetadataURIUpdated)
+ if err := _IAllocationManager.contract.UnpackLog(event, "AVSMetadataURIUpdated", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// IAllocationManagerAVSRegistrarSetIterator is returned from FilterAVSRegistrarSet and is used to iterate over the raw logs and unpacked data for AVSRegistrarSet events raised by the IAllocationManager contract.
+type IAllocationManagerAVSRegistrarSetIterator struct {
+ Event *IAllocationManagerAVSRegistrarSet // 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 *IAllocationManagerAVSRegistrarSetIterator) 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(IAllocationManagerAVSRegistrarSet)
+ 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(IAllocationManagerAVSRegistrarSet)
+ 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 *IAllocationManagerAVSRegistrarSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IAllocationManagerAVSRegistrarSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IAllocationManagerAVSRegistrarSet represents a AVSRegistrarSet event raised by the IAllocationManager contract.
+type IAllocationManagerAVSRegistrarSet struct {
+ Avs common.Address
+ Registrar common.Address
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAVSRegistrarSet is a free log retrieval operation binding the contract event 0x2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf85.
+//
+// Solidity: event AVSRegistrarSet(address avs, address registrar)
+func (_IAllocationManager *IAllocationManagerFilterer) FilterAVSRegistrarSet(opts *bind.FilterOpts) (*IAllocationManagerAVSRegistrarSetIterator, error) {
+
+ logs, sub, err := _IAllocationManager.contract.FilterLogs(opts, "AVSRegistrarSet")
+ if err != nil {
+ return nil, err
+ }
+ return &IAllocationManagerAVSRegistrarSetIterator{contract: _IAllocationManager.contract, event: "AVSRegistrarSet", logs: logs, sub: sub}, nil
+}
+
+// WatchAVSRegistrarSet is a free log subscription operation binding the contract event 0x2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf85.
+//
+// Solidity: event AVSRegistrarSet(address avs, address registrar)
+func (_IAllocationManager *IAllocationManagerFilterer) WatchAVSRegistrarSet(opts *bind.WatchOpts, sink chan<- *IAllocationManagerAVSRegistrarSet) (event.Subscription, error) {
+
+ logs, sub, err := _IAllocationManager.contract.WatchLogs(opts, "AVSRegistrarSet")
+ 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(IAllocationManagerAVSRegistrarSet)
+ if err := _IAllocationManager.contract.UnpackLog(event, "AVSRegistrarSet", 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
+}
+
+// ParseAVSRegistrarSet is a log parse operation binding the contract event 0x2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf85.
+//
+// Solidity: event AVSRegistrarSet(address avs, address registrar)
+func (_IAllocationManager *IAllocationManagerFilterer) ParseAVSRegistrarSet(log types.Log) (*IAllocationManagerAVSRegistrarSet, error) {
+ event := new(IAllocationManagerAVSRegistrarSet)
+ if err := _IAllocationManager.contract.UnpackLog(event, "AVSRegistrarSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// IAllocationManagerAllocationDelaySetIterator is returned from FilterAllocationDelaySet and is used to iterate over the raw logs and unpacked data for AllocationDelaySet events raised by the IAllocationManager contract.
+type IAllocationManagerAllocationDelaySetIterator struct {
+ Event *IAllocationManagerAllocationDelaySet // 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 *IAllocationManagerAllocationDelaySetIterator) 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(IAllocationManagerAllocationDelaySet)
+ 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(IAllocationManagerAllocationDelaySet)
+ 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 *IAllocationManagerAllocationDelaySetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IAllocationManagerAllocationDelaySetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IAllocationManagerAllocationDelaySet represents a AllocationDelaySet event raised by the IAllocationManager contract.
+type IAllocationManagerAllocationDelaySet struct {
+ Operator common.Address
+ Delay uint32
+ EffectBlock 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 effectBlock)
+func (_IAllocationManager *IAllocationManagerFilterer) FilterAllocationDelaySet(opts *bind.FilterOpts) (*IAllocationManagerAllocationDelaySetIterator, error) {
+
+ logs, sub, err := _IAllocationManager.contract.FilterLogs(opts, "AllocationDelaySet")
+ if err != nil {
+ return nil, err
+ }
+ return &IAllocationManagerAllocationDelaySetIterator{contract: _IAllocationManager.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 effectBlock)
+func (_IAllocationManager *IAllocationManagerFilterer) WatchAllocationDelaySet(opts *bind.WatchOpts, sink chan<- *IAllocationManagerAllocationDelaySet) (event.Subscription, error) {
+
+ logs, sub, err := _IAllocationManager.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(IAllocationManagerAllocationDelaySet)
+ if err := _IAllocationManager.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 effectBlock)
+func (_IAllocationManager *IAllocationManagerFilterer) ParseAllocationDelaySet(log types.Log) (*IAllocationManagerAllocationDelaySet, error) {
+ event := new(IAllocationManagerAllocationDelaySet)
+ if err := _IAllocationManager.contract.UnpackLog(event, "AllocationDelaySet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// IAllocationManagerAllocationUpdatedIterator is returned from FilterAllocationUpdated and is used to iterate over the raw logs and unpacked data for AllocationUpdated events raised by the IAllocationManager contract.
+type IAllocationManagerAllocationUpdatedIterator struct {
+ Event *IAllocationManagerAllocationUpdated // 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 *IAllocationManagerAllocationUpdatedIterator) 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(IAllocationManagerAllocationUpdated)
+ 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(IAllocationManagerAllocationUpdated)
+ 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 *IAllocationManagerAllocationUpdatedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IAllocationManagerAllocationUpdatedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IAllocationManagerAllocationUpdated represents a AllocationUpdated event raised by the IAllocationManager contract.
+type IAllocationManagerAllocationUpdated struct {
+ Operator common.Address
+ OperatorSet OperatorSet
+ Strategy common.Address
+ Magnitude uint64
+ EffectBlock uint32
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAllocationUpdated is a free log retrieval operation binding the contract event 0x1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd.
+//
+// Solidity: event AllocationUpdated(address operator, (address,uint32) operatorSet, address strategy, uint64 magnitude, uint32 effectBlock)
+func (_IAllocationManager *IAllocationManagerFilterer) FilterAllocationUpdated(opts *bind.FilterOpts) (*IAllocationManagerAllocationUpdatedIterator, error) {
+
+ logs, sub, err := _IAllocationManager.contract.FilterLogs(opts, "AllocationUpdated")
+ if err != nil {
+ return nil, err
+ }
+ return &IAllocationManagerAllocationUpdatedIterator{contract: _IAllocationManager.contract, event: "AllocationUpdated", logs: logs, sub: sub}, nil
+}
+
+// WatchAllocationUpdated is a free log subscription operation binding the contract event 0x1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd.
+//
+// Solidity: event AllocationUpdated(address operator, (address,uint32) operatorSet, address strategy, uint64 magnitude, uint32 effectBlock)
+func (_IAllocationManager *IAllocationManagerFilterer) WatchAllocationUpdated(opts *bind.WatchOpts, sink chan<- *IAllocationManagerAllocationUpdated) (event.Subscription, error) {
+
+ logs, sub, err := _IAllocationManager.contract.WatchLogs(opts, "AllocationUpdated")
+ 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(IAllocationManagerAllocationUpdated)
+ if err := _IAllocationManager.contract.UnpackLog(event, "AllocationUpdated", 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
+}
+
+// ParseAllocationUpdated is a log parse operation binding the contract event 0x1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd.
+//
+// Solidity: event AllocationUpdated(address operator, (address,uint32) operatorSet, address strategy, uint64 magnitude, uint32 effectBlock)
+func (_IAllocationManager *IAllocationManagerFilterer) ParseAllocationUpdated(log types.Log) (*IAllocationManagerAllocationUpdated, error) {
+ event := new(IAllocationManagerAllocationUpdated)
+ if err := _IAllocationManager.contract.UnpackLog(event, "AllocationUpdated", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// IAllocationManagerEncumberedMagnitudeUpdatedIterator is returned from FilterEncumberedMagnitudeUpdated and is used to iterate over the raw logs and unpacked data for EncumberedMagnitudeUpdated events raised by the IAllocationManager contract.
+type IAllocationManagerEncumberedMagnitudeUpdatedIterator struct {
+ Event *IAllocationManagerEncumberedMagnitudeUpdated // 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 *IAllocationManagerEncumberedMagnitudeUpdatedIterator) 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(IAllocationManagerEncumberedMagnitudeUpdated)
+ 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(IAllocationManagerEncumberedMagnitudeUpdated)
+ 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 *IAllocationManagerEncumberedMagnitudeUpdatedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IAllocationManagerEncumberedMagnitudeUpdatedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IAllocationManagerEncumberedMagnitudeUpdated represents a EncumberedMagnitudeUpdated event raised by the IAllocationManager contract.
+type IAllocationManagerEncumberedMagnitudeUpdated 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 (_IAllocationManager *IAllocationManagerFilterer) FilterEncumberedMagnitudeUpdated(opts *bind.FilterOpts) (*IAllocationManagerEncumberedMagnitudeUpdatedIterator, error) {
+
+ logs, sub, err := _IAllocationManager.contract.FilterLogs(opts, "EncumberedMagnitudeUpdated")
+ if err != nil {
+ return nil, err
+ }
+ return &IAllocationManagerEncumberedMagnitudeUpdatedIterator{contract: _IAllocationManager.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 (_IAllocationManager *IAllocationManagerFilterer) WatchEncumberedMagnitudeUpdated(opts *bind.WatchOpts, sink chan<- *IAllocationManagerEncumberedMagnitudeUpdated) (event.Subscription, error) {
+
+ logs, sub, err := _IAllocationManager.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(IAllocationManagerEncumberedMagnitudeUpdated)
+ if err := _IAllocationManager.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 (_IAllocationManager *IAllocationManagerFilterer) ParseEncumberedMagnitudeUpdated(log types.Log) (*IAllocationManagerEncumberedMagnitudeUpdated, error) {
+ event := new(IAllocationManagerEncumberedMagnitudeUpdated)
+ if err := _IAllocationManager.contract.UnpackLog(event, "EncumberedMagnitudeUpdated", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// IAllocationManagerMaxMagnitudeUpdatedIterator is returned from FilterMaxMagnitudeUpdated and is used to iterate over the raw logs and unpacked data for MaxMagnitudeUpdated events raised by the IAllocationManager contract.
+type IAllocationManagerMaxMagnitudeUpdatedIterator struct {
+ Event *IAllocationManagerMaxMagnitudeUpdated // 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 *IAllocationManagerMaxMagnitudeUpdatedIterator) 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(IAllocationManagerMaxMagnitudeUpdated)
+ 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(IAllocationManagerMaxMagnitudeUpdated)
+ 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 *IAllocationManagerMaxMagnitudeUpdatedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IAllocationManagerMaxMagnitudeUpdatedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IAllocationManagerMaxMagnitudeUpdated represents a MaxMagnitudeUpdated event raised by the IAllocationManager contract.
+type IAllocationManagerMaxMagnitudeUpdated struct {
+ Operator common.Address
+ Strategy common.Address
+ MaxMagnitude 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 maxMagnitude)
+func (_IAllocationManager *IAllocationManagerFilterer) FilterMaxMagnitudeUpdated(opts *bind.FilterOpts) (*IAllocationManagerMaxMagnitudeUpdatedIterator, error) {
+
+ logs, sub, err := _IAllocationManager.contract.FilterLogs(opts, "MaxMagnitudeUpdated")
+ if err != nil {
+ return nil, err
+ }
+ return &IAllocationManagerMaxMagnitudeUpdatedIterator{contract: _IAllocationManager.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 maxMagnitude)
+func (_IAllocationManager *IAllocationManagerFilterer) WatchMaxMagnitudeUpdated(opts *bind.WatchOpts, sink chan<- *IAllocationManagerMaxMagnitudeUpdated) (event.Subscription, error) {
+
+ logs, sub, err := _IAllocationManager.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(IAllocationManagerMaxMagnitudeUpdated)
+ if err := _IAllocationManager.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 maxMagnitude)
+func (_IAllocationManager *IAllocationManagerFilterer) ParseMaxMagnitudeUpdated(log types.Log) (*IAllocationManagerMaxMagnitudeUpdated, error) {
+ event := new(IAllocationManagerMaxMagnitudeUpdated)
+ if err := _IAllocationManager.contract.UnpackLog(event, "MaxMagnitudeUpdated", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// IAllocationManagerOperatorAddedToOperatorSetIterator is returned from FilterOperatorAddedToOperatorSet and is used to iterate over the raw logs and unpacked data for OperatorAddedToOperatorSet events raised by the IAllocationManager contract.
+type IAllocationManagerOperatorAddedToOperatorSetIterator struct {
+ Event *IAllocationManagerOperatorAddedToOperatorSet // 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 *IAllocationManagerOperatorAddedToOperatorSetIterator) 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(IAllocationManagerOperatorAddedToOperatorSet)
+ 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(IAllocationManagerOperatorAddedToOperatorSet)
+ 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 *IAllocationManagerOperatorAddedToOperatorSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IAllocationManagerOperatorAddedToOperatorSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IAllocationManagerOperatorAddedToOperatorSet represents a OperatorAddedToOperatorSet event raised by the IAllocationManager contract.
+type IAllocationManagerOperatorAddedToOperatorSet struct {
+ Operator common.Address
+ OperatorSet OperatorSet
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterOperatorAddedToOperatorSet is a free log retrieval operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e.
+//
+// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet)
+func (_IAllocationManager *IAllocationManagerFilterer) FilterOperatorAddedToOperatorSet(opts *bind.FilterOpts, operator []common.Address) (*IAllocationManagerOperatorAddedToOperatorSetIterator, error) {
+
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
+
+ logs, sub, err := _IAllocationManager.contract.FilterLogs(opts, "OperatorAddedToOperatorSet", operatorRule)
+ if err != nil {
+ return nil, err
+ }
+ return &IAllocationManagerOperatorAddedToOperatorSetIterator{contract: _IAllocationManager.contract, event: "OperatorAddedToOperatorSet", logs: logs, sub: sub}, nil
+}
+
+// WatchOperatorAddedToOperatorSet is a free log subscription operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e.
+//
+// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet)
+func (_IAllocationManager *IAllocationManagerFilterer) WatchOperatorAddedToOperatorSet(opts *bind.WatchOpts, sink chan<- *IAllocationManagerOperatorAddedToOperatorSet, operator []common.Address) (event.Subscription, error) {
+
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
+
+ logs, sub, err := _IAllocationManager.contract.WatchLogs(opts, "OperatorAddedToOperatorSet", 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(IAllocationManagerOperatorAddedToOperatorSet)
+ if err := _IAllocationManager.contract.UnpackLog(event, "OperatorAddedToOperatorSet", 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
+}
+
+// ParseOperatorAddedToOperatorSet is a log parse operation binding the contract event 0x43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e.
+//
+// Solidity: event OperatorAddedToOperatorSet(address indexed operator, (address,uint32) operatorSet)
+func (_IAllocationManager *IAllocationManagerFilterer) ParseOperatorAddedToOperatorSet(log types.Log) (*IAllocationManagerOperatorAddedToOperatorSet, error) {
+ event := new(IAllocationManagerOperatorAddedToOperatorSet)
+ if err := _IAllocationManager.contract.UnpackLog(event, "OperatorAddedToOperatorSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// IAllocationManagerOperatorRemovedFromOperatorSetIterator is returned from FilterOperatorRemovedFromOperatorSet and is used to iterate over the raw logs and unpacked data for OperatorRemovedFromOperatorSet events raised by the IAllocationManager contract.
+type IAllocationManagerOperatorRemovedFromOperatorSetIterator struct {
+ Event *IAllocationManagerOperatorRemovedFromOperatorSet // 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 *IAllocationManagerOperatorRemovedFromOperatorSetIterator) 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(IAllocationManagerOperatorRemovedFromOperatorSet)
+ 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(IAllocationManagerOperatorRemovedFromOperatorSet)
+ 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 *IAllocationManagerOperatorRemovedFromOperatorSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IAllocationManagerOperatorRemovedFromOperatorSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IAllocationManagerOperatorRemovedFromOperatorSet represents a OperatorRemovedFromOperatorSet event raised by the IAllocationManager contract.
+type IAllocationManagerOperatorRemovedFromOperatorSet struct {
+ Operator common.Address
+ OperatorSet OperatorSet
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterOperatorRemovedFromOperatorSet is a free log retrieval operation binding the contract event 0xad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe.
+//
+// Solidity: event OperatorRemovedFromOperatorSet(address indexed operator, (address,uint32) operatorSet)
+func (_IAllocationManager *IAllocationManagerFilterer) FilterOperatorRemovedFromOperatorSet(opts *bind.FilterOpts, operator []common.Address) (*IAllocationManagerOperatorRemovedFromOperatorSetIterator, error) {
+
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
+
+ logs, sub, err := _IAllocationManager.contract.FilterLogs(opts, "OperatorRemovedFromOperatorSet", operatorRule)
+ if err != nil {
+ return nil, err
+ }
+ return &IAllocationManagerOperatorRemovedFromOperatorSetIterator{contract: _IAllocationManager.contract, event: "OperatorRemovedFromOperatorSet", logs: logs, sub: sub}, nil
+}
+
+// WatchOperatorRemovedFromOperatorSet is a free log subscription operation binding the contract event 0xad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe.
+//
+// Solidity: event OperatorRemovedFromOperatorSet(address indexed operator, (address,uint32) operatorSet)
+func (_IAllocationManager *IAllocationManagerFilterer) WatchOperatorRemovedFromOperatorSet(opts *bind.WatchOpts, sink chan<- *IAllocationManagerOperatorRemovedFromOperatorSet, operator []common.Address) (event.Subscription, error) {
+
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
+
+ logs, sub, err := _IAllocationManager.contract.WatchLogs(opts, "OperatorRemovedFromOperatorSet", 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(IAllocationManagerOperatorRemovedFromOperatorSet)
+ if err := _IAllocationManager.contract.UnpackLog(event, "OperatorRemovedFromOperatorSet", 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
+}
+
+// ParseOperatorRemovedFromOperatorSet is a log parse operation binding the contract event 0xad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe.
+//
+// Solidity: event OperatorRemovedFromOperatorSet(address indexed operator, (address,uint32) operatorSet)
+func (_IAllocationManager *IAllocationManagerFilterer) ParseOperatorRemovedFromOperatorSet(log types.Log) (*IAllocationManagerOperatorRemovedFromOperatorSet, error) {
+ event := new(IAllocationManagerOperatorRemovedFromOperatorSet)
+ if err := _IAllocationManager.contract.UnpackLog(event, "OperatorRemovedFromOperatorSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// IAllocationManagerOperatorSetCreatedIterator is returned from FilterOperatorSetCreated and is used to iterate over the raw logs and unpacked data for OperatorSetCreated events raised by the IAllocationManager contract.
+type IAllocationManagerOperatorSetCreatedIterator struct {
+ Event *IAllocationManagerOperatorSetCreated // 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 *IAllocationManagerOperatorSetCreatedIterator) 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(IAllocationManagerOperatorSetCreated)
+ 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(IAllocationManagerOperatorSetCreated)
+ 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 *IAllocationManagerOperatorSetCreatedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IAllocationManagerOperatorSetCreatedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IAllocationManagerOperatorSetCreated represents a OperatorSetCreated event raised by the IAllocationManager contract.
+type IAllocationManagerOperatorSetCreated struct {
+ OperatorSet OperatorSet
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterOperatorSetCreated is a free log retrieval operation binding the contract event 0x31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c.
+//
+// Solidity: event OperatorSetCreated((address,uint32) operatorSet)
+func (_IAllocationManager *IAllocationManagerFilterer) FilterOperatorSetCreated(opts *bind.FilterOpts) (*IAllocationManagerOperatorSetCreatedIterator, error) {
+
+ logs, sub, err := _IAllocationManager.contract.FilterLogs(opts, "OperatorSetCreated")
+ if err != nil {
+ return nil, err
+ }
+ return &IAllocationManagerOperatorSetCreatedIterator{contract: _IAllocationManager.contract, event: "OperatorSetCreated", logs: logs, sub: sub}, nil
+}
+
+// WatchOperatorSetCreated is a free log subscription operation binding the contract event 0x31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c.
+//
+// Solidity: event OperatorSetCreated((address,uint32) operatorSet)
+func (_IAllocationManager *IAllocationManagerFilterer) WatchOperatorSetCreated(opts *bind.WatchOpts, sink chan<- *IAllocationManagerOperatorSetCreated) (event.Subscription, error) {
+
+ logs, sub, err := _IAllocationManager.contract.WatchLogs(opts, "OperatorSetCreated")
+ 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(IAllocationManagerOperatorSetCreated)
+ if err := _IAllocationManager.contract.UnpackLog(event, "OperatorSetCreated", 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
+}
+
+// ParseOperatorSetCreated is a log parse operation binding the contract event 0x31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c.
+//
+// Solidity: event OperatorSetCreated((address,uint32) operatorSet)
+func (_IAllocationManager *IAllocationManagerFilterer) ParseOperatorSetCreated(log types.Log) (*IAllocationManagerOperatorSetCreated, error) {
+ event := new(IAllocationManagerOperatorSetCreated)
+ if err := _IAllocationManager.contract.UnpackLog(event, "OperatorSetCreated", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// IAllocationManagerOperatorSlashedIterator is returned from FilterOperatorSlashed and is used to iterate over the raw logs and unpacked data for OperatorSlashed events raised by the IAllocationManager contract.
+type IAllocationManagerOperatorSlashedIterator struct {
+ Event *IAllocationManagerOperatorSlashed // 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 *IAllocationManagerOperatorSlashedIterator) 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(IAllocationManagerOperatorSlashed)
+ 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(IAllocationManagerOperatorSlashed)
+ 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 *IAllocationManagerOperatorSlashedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IAllocationManagerOperatorSlashedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IAllocationManagerOperatorSlashed represents a OperatorSlashed event raised by the IAllocationManager contract.
+type IAllocationManagerOperatorSlashed 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 (_IAllocationManager *IAllocationManagerFilterer) FilterOperatorSlashed(opts *bind.FilterOpts) (*IAllocationManagerOperatorSlashedIterator, error) {
+
+ logs, sub, err := _IAllocationManager.contract.FilterLogs(opts, "OperatorSlashed")
+ if err != nil {
+ return nil, err
+ }
+ return &IAllocationManagerOperatorSlashedIterator{contract: _IAllocationManager.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 (_IAllocationManager *IAllocationManagerFilterer) WatchOperatorSlashed(opts *bind.WatchOpts, sink chan<- *IAllocationManagerOperatorSlashed) (event.Subscription, error) {
+
+ logs, sub, err := _IAllocationManager.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(IAllocationManagerOperatorSlashed)
+ if err := _IAllocationManager.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 (_IAllocationManager *IAllocationManagerFilterer) ParseOperatorSlashed(log types.Log) (*IAllocationManagerOperatorSlashed, error) {
+ event := new(IAllocationManagerOperatorSlashed)
+ if err := _IAllocationManager.contract.UnpackLog(event, "OperatorSlashed", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// IAllocationManagerStrategyAddedToOperatorSetIterator is returned from FilterStrategyAddedToOperatorSet and is used to iterate over the raw logs and unpacked data for StrategyAddedToOperatorSet events raised by the IAllocationManager contract.
+type IAllocationManagerStrategyAddedToOperatorSetIterator struct {
+ Event *IAllocationManagerStrategyAddedToOperatorSet // 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 *IAllocationManagerStrategyAddedToOperatorSetIterator) 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(IAllocationManagerStrategyAddedToOperatorSet)
+ 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(IAllocationManagerStrategyAddedToOperatorSet)
+ 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 *IAllocationManagerStrategyAddedToOperatorSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IAllocationManagerStrategyAddedToOperatorSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IAllocationManagerStrategyAddedToOperatorSet represents a StrategyAddedToOperatorSet event raised by the IAllocationManager contract.
+type IAllocationManagerStrategyAddedToOperatorSet 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 (_IAllocationManager *IAllocationManagerFilterer) FilterStrategyAddedToOperatorSet(opts *bind.FilterOpts) (*IAllocationManagerStrategyAddedToOperatorSetIterator, error) {
+
+ logs, sub, err := _IAllocationManager.contract.FilterLogs(opts, "StrategyAddedToOperatorSet")
+ if err != nil {
+ return nil, err
+ }
+ return &IAllocationManagerStrategyAddedToOperatorSetIterator{contract: _IAllocationManager.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 (_IAllocationManager *IAllocationManagerFilterer) WatchStrategyAddedToOperatorSet(opts *bind.WatchOpts, sink chan<- *IAllocationManagerStrategyAddedToOperatorSet) (event.Subscription, error) {
+
+ logs, sub, err := _IAllocationManager.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(IAllocationManagerStrategyAddedToOperatorSet)
+ if err := _IAllocationManager.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 (_IAllocationManager *IAllocationManagerFilterer) ParseStrategyAddedToOperatorSet(log types.Log) (*IAllocationManagerStrategyAddedToOperatorSet, error) {
+ event := new(IAllocationManagerStrategyAddedToOperatorSet)
+ if err := _IAllocationManager.contract.UnpackLog(event, "StrategyAddedToOperatorSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// IAllocationManagerStrategyRemovedFromOperatorSetIterator is returned from FilterStrategyRemovedFromOperatorSet and is used to iterate over the raw logs and unpacked data for StrategyRemovedFromOperatorSet events raised by the IAllocationManager contract.
+type IAllocationManagerStrategyRemovedFromOperatorSetIterator struct {
+ Event *IAllocationManagerStrategyRemovedFromOperatorSet // 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 *IAllocationManagerStrategyRemovedFromOperatorSetIterator) 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(IAllocationManagerStrategyRemovedFromOperatorSet)
+ 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(IAllocationManagerStrategyRemovedFromOperatorSet)
+ 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 *IAllocationManagerStrategyRemovedFromOperatorSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IAllocationManagerStrategyRemovedFromOperatorSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IAllocationManagerStrategyRemovedFromOperatorSet represents a StrategyRemovedFromOperatorSet event raised by the IAllocationManager contract.
+type IAllocationManagerStrategyRemovedFromOperatorSet 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 (_IAllocationManager *IAllocationManagerFilterer) FilterStrategyRemovedFromOperatorSet(opts *bind.FilterOpts) (*IAllocationManagerStrategyRemovedFromOperatorSetIterator, error) {
+
+ logs, sub, err := _IAllocationManager.contract.FilterLogs(opts, "StrategyRemovedFromOperatorSet")
+ if err != nil {
+ return nil, err
+ }
+ return &IAllocationManagerStrategyRemovedFromOperatorSetIterator{contract: _IAllocationManager.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 (_IAllocationManager *IAllocationManagerFilterer) WatchStrategyRemovedFromOperatorSet(opts *bind.WatchOpts, sink chan<- *IAllocationManagerStrategyRemovedFromOperatorSet) (event.Subscription, error) {
+
+ logs, sub, err := _IAllocationManager.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(IAllocationManagerStrategyRemovedFromOperatorSet)
+ if err := _IAllocationManager.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 (_IAllocationManager *IAllocationManagerFilterer) ParseStrategyRemovedFromOperatorSet(log types.Log) (*IAllocationManagerStrategyRemovedFromOperatorSet, error) {
+ event := new(IAllocationManagerStrategyRemovedFromOperatorSet)
+ if err := _IAllocationManager.contract.UnpackLog(event, "StrategyRemovedFromOperatorSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
diff --git a/pkg/bindings/IDelegationFaucet/binding.go b/pkg/bindings/IDelegationFaucet/binding.go
deleted file mode 100644
index 9486264d04..0000000000
--- a/pkg/bindings/IDelegationFaucet/binding.go
+++ /dev/null
@@ -1,352 +0,0 @@
-// Code generated - DO NOT EDIT.
-// This file is a generated binding and any manual changes will be lost.
-
-package IDelegationFaucet
-
-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
-)
-
-// IDelegationManagerQueuedWithdrawalParams is an auto generated low-level Go binding around an user-defined struct.
-type IDelegationManagerQueuedWithdrawalParams struct {
- Strategies []common.Address
- Shares []*big.Int
- Withdrawer common.Address
-}
-
-// IDelegationManagerWithdrawal is an auto generated low-level Go binding around an user-defined struct.
-type IDelegationManagerWithdrawal struct {
- Staker common.Address
- DelegatedTo common.Address
- Withdrawer common.Address
- Nonce *big.Int
- StartBlock uint32
- Strategies []common.Address
- Shares []*big.Int
-}
-
-// ISignatureUtilsSignatureWithExpiry is an auto generated low-level Go binding around an user-defined struct.
-type ISignatureUtilsSignatureWithExpiry struct {
- Signature []byte
- Expiry *big.Int
-}
-
-// IDelegationFaucetMetaData contains all meta data concerning the IDelegationFaucet contract.
-var IDelegationFaucetMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"function\",\"name\":\"callAddress\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawal\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"queuedWithdrawal\",\"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\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositIntoStrategy\",\"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\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getStaker\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mintDepositAndDelegate\",\"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\"},{\"name\":\"_depositAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"queueWithdrawal\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"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\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"nonpayable\"}]",
-}
-
-// IDelegationFaucetABI is the input ABI used to generate the binding from.
-// Deprecated: Use IDelegationFaucetMetaData.ABI instead.
-var IDelegationFaucetABI = IDelegationFaucetMetaData.ABI
-
-// IDelegationFaucet is an auto generated Go binding around an Ethereum contract.
-type IDelegationFaucet struct {
- IDelegationFaucetCaller // Read-only binding to the contract
- IDelegationFaucetTransactor // Write-only binding to the contract
- IDelegationFaucetFilterer // Log filterer for contract events
-}
-
-// IDelegationFaucetCaller is an auto generated read-only Go binding around an Ethereum contract.
-type IDelegationFaucetCaller struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// IDelegationFaucetTransactor is an auto generated write-only Go binding around an Ethereum contract.
-type IDelegationFaucetTransactor struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// IDelegationFaucetFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
-type IDelegationFaucetFilterer struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// IDelegationFaucetSession is an auto generated Go binding around an Ethereum contract,
-// with pre-set call and transact options.
-type IDelegationFaucetSession struct {
- Contract *IDelegationFaucet // 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
-}
-
-// IDelegationFaucetCallerSession is an auto generated read-only Go binding around an Ethereum contract,
-// with pre-set call options.
-type IDelegationFaucetCallerSession struct {
- Contract *IDelegationFaucetCaller // Generic contract caller binding to set the session for
- CallOpts bind.CallOpts // Call options to use throughout this session
-}
-
-// IDelegationFaucetTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
-// with pre-set transact options.
-type IDelegationFaucetTransactorSession struct {
- Contract *IDelegationFaucetTransactor // Generic contract transactor binding to set the session for
- TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
-}
-
-// IDelegationFaucetRaw is an auto generated low-level Go binding around an Ethereum contract.
-type IDelegationFaucetRaw struct {
- Contract *IDelegationFaucet // Generic contract binding to access the raw methods on
-}
-
-// IDelegationFaucetCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
-type IDelegationFaucetCallerRaw struct {
- Contract *IDelegationFaucetCaller // Generic read-only contract binding to access the raw methods on
-}
-
-// IDelegationFaucetTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
-type IDelegationFaucetTransactorRaw struct {
- Contract *IDelegationFaucetTransactor // Generic write-only contract binding to access the raw methods on
-}
-
-// NewIDelegationFaucet creates a new instance of IDelegationFaucet, bound to a specific deployed contract.
-func NewIDelegationFaucet(address common.Address, backend bind.ContractBackend) (*IDelegationFaucet, error) {
- contract, err := bindIDelegationFaucet(address, backend, backend, backend)
- if err != nil {
- return nil, err
- }
- return &IDelegationFaucet{IDelegationFaucetCaller: IDelegationFaucetCaller{contract: contract}, IDelegationFaucetTransactor: IDelegationFaucetTransactor{contract: contract}, IDelegationFaucetFilterer: IDelegationFaucetFilterer{contract: contract}}, nil
-}
-
-// NewIDelegationFaucetCaller creates a new read-only instance of IDelegationFaucet, bound to a specific deployed contract.
-func NewIDelegationFaucetCaller(address common.Address, caller bind.ContractCaller) (*IDelegationFaucetCaller, error) {
- contract, err := bindIDelegationFaucet(address, caller, nil, nil)
- if err != nil {
- return nil, err
- }
- return &IDelegationFaucetCaller{contract: contract}, nil
-}
-
-// NewIDelegationFaucetTransactor creates a new write-only instance of IDelegationFaucet, bound to a specific deployed contract.
-func NewIDelegationFaucetTransactor(address common.Address, transactor bind.ContractTransactor) (*IDelegationFaucetTransactor, error) {
- contract, err := bindIDelegationFaucet(address, nil, transactor, nil)
- if err != nil {
- return nil, err
- }
- return &IDelegationFaucetTransactor{contract: contract}, nil
-}
-
-// NewIDelegationFaucetFilterer creates a new log filterer instance of IDelegationFaucet, bound to a specific deployed contract.
-func NewIDelegationFaucetFilterer(address common.Address, filterer bind.ContractFilterer) (*IDelegationFaucetFilterer, error) {
- contract, err := bindIDelegationFaucet(address, nil, nil, filterer)
- if err != nil {
- return nil, err
- }
- return &IDelegationFaucetFilterer{contract: contract}, nil
-}
-
-// bindIDelegationFaucet binds a generic wrapper to an already deployed contract.
-func bindIDelegationFaucet(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
- parsed, err := IDelegationFaucetMetaData.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 (_IDelegationFaucet *IDelegationFaucetRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
- return _IDelegationFaucet.Contract.IDelegationFaucetCaller.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 (_IDelegationFaucet *IDelegationFaucetRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
- return _IDelegationFaucet.Contract.IDelegationFaucetTransactor.contract.Transfer(opts)
-}
-
-// Transact invokes the (paid) contract method with params as input values.
-func (_IDelegationFaucet *IDelegationFaucetRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
- return _IDelegationFaucet.Contract.IDelegationFaucetTransactor.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 (_IDelegationFaucet *IDelegationFaucetCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
- return _IDelegationFaucet.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 (_IDelegationFaucet *IDelegationFaucetTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
- return _IDelegationFaucet.Contract.contract.Transfer(opts)
-}
-
-// Transact invokes the (paid) contract method with params as input values.
-func (_IDelegationFaucet *IDelegationFaucetTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
- return _IDelegationFaucet.Contract.contract.Transact(opts, method, params...)
-}
-
-// CallAddress is a paid mutator transaction binding the contract method 0xf6e8f39d.
-//
-// Solidity: function callAddress(address to, bytes data) payable returns(bytes)
-func (_IDelegationFaucet *IDelegationFaucetTransactor) CallAddress(opts *bind.TransactOpts, to common.Address, data []byte) (*types.Transaction, error) {
- return _IDelegationFaucet.contract.Transact(opts, "callAddress", to, data)
-}
-
-// CallAddress is a paid mutator transaction binding the contract method 0xf6e8f39d.
-//
-// Solidity: function callAddress(address to, bytes data) payable returns(bytes)
-func (_IDelegationFaucet *IDelegationFaucetSession) CallAddress(to common.Address, data []byte) (*types.Transaction, error) {
- return _IDelegationFaucet.Contract.CallAddress(&_IDelegationFaucet.TransactOpts, to, data)
-}
-
-// CallAddress is a paid mutator transaction binding the contract method 0xf6e8f39d.
-//
-// Solidity: function callAddress(address to, bytes data) payable returns(bytes)
-func (_IDelegationFaucet *IDelegationFaucetTransactorSession) CallAddress(to common.Address, data []byte) (*types.Transaction, error) {
- return _IDelegationFaucet.Contract.CallAddress(&_IDelegationFaucet.TransactOpts, to, data)
-}
-
-// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x063dcd50.
-//
-// Solidity: function completeQueuedWithdrawal(address staker, (address,address,address,uint256,uint32,address[],uint256[]) queuedWithdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns(bytes)
-func (_IDelegationFaucet *IDelegationFaucetTransactor) CompleteQueuedWithdrawal(opts *bind.TransactOpts, staker common.Address, queuedWithdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) {
- return _IDelegationFaucet.contract.Transact(opts, "completeQueuedWithdrawal", staker, queuedWithdrawal, tokens, middlewareTimesIndex, receiveAsTokens)
-}
-
-// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x063dcd50.
-//
-// Solidity: function completeQueuedWithdrawal(address staker, (address,address,address,uint256,uint32,address[],uint256[]) queuedWithdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns(bytes)
-func (_IDelegationFaucet *IDelegationFaucetSession) CompleteQueuedWithdrawal(staker common.Address, queuedWithdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) {
- return _IDelegationFaucet.Contract.CompleteQueuedWithdrawal(&_IDelegationFaucet.TransactOpts, staker, queuedWithdrawal, tokens, middlewareTimesIndex, receiveAsTokens)
-}
-
-// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x063dcd50.
-//
-// Solidity: function completeQueuedWithdrawal(address staker, (address,address,address,uint256,uint32,address[],uint256[]) queuedWithdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns(bytes)
-func (_IDelegationFaucet *IDelegationFaucetTransactorSession) CompleteQueuedWithdrawal(staker common.Address, queuedWithdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) {
- return _IDelegationFaucet.Contract.CompleteQueuedWithdrawal(&_IDelegationFaucet.TransactOpts, staker, queuedWithdrawal, tokens, middlewareTimesIndex, receiveAsTokens)
-}
-
-// DepositIntoStrategy is a paid mutator transaction binding the contract method 0xa49ca158.
-//
-// Solidity: function depositIntoStrategy(address staker, address strategy, address token, uint256 amount) returns(bytes)
-func (_IDelegationFaucet *IDelegationFaucetTransactor) DepositIntoStrategy(opts *bind.TransactOpts, staker common.Address, strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) {
- return _IDelegationFaucet.contract.Transact(opts, "depositIntoStrategy", staker, strategy, token, amount)
-}
-
-// DepositIntoStrategy is a paid mutator transaction binding the contract method 0xa49ca158.
-//
-// Solidity: function depositIntoStrategy(address staker, address strategy, address token, uint256 amount) returns(bytes)
-func (_IDelegationFaucet *IDelegationFaucetSession) DepositIntoStrategy(staker common.Address, strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) {
- return _IDelegationFaucet.Contract.DepositIntoStrategy(&_IDelegationFaucet.TransactOpts, staker, strategy, token, amount)
-}
-
-// DepositIntoStrategy is a paid mutator transaction binding the contract method 0xa49ca158.
-//
-// Solidity: function depositIntoStrategy(address staker, address strategy, address token, uint256 amount) returns(bytes)
-func (_IDelegationFaucet *IDelegationFaucetTransactorSession) DepositIntoStrategy(staker common.Address, strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) {
- return _IDelegationFaucet.Contract.DepositIntoStrategy(&_IDelegationFaucet.TransactOpts, staker, strategy, token, amount)
-}
-
-// GetStaker is a paid mutator transaction binding the contract method 0xa23c44b1.
-//
-// Solidity: function getStaker(address operator) returns(address)
-func (_IDelegationFaucet *IDelegationFaucetTransactor) GetStaker(opts *bind.TransactOpts, operator common.Address) (*types.Transaction, error) {
- return _IDelegationFaucet.contract.Transact(opts, "getStaker", operator)
-}
-
-// GetStaker is a paid mutator transaction binding the contract method 0xa23c44b1.
-//
-// Solidity: function getStaker(address operator) returns(address)
-func (_IDelegationFaucet *IDelegationFaucetSession) GetStaker(operator common.Address) (*types.Transaction, error) {
- return _IDelegationFaucet.Contract.GetStaker(&_IDelegationFaucet.TransactOpts, operator)
-}
-
-// GetStaker is a paid mutator transaction binding the contract method 0xa23c44b1.
-//
-// Solidity: function getStaker(address operator) returns(address)
-func (_IDelegationFaucet *IDelegationFaucetTransactorSession) GetStaker(operator common.Address) (*types.Transaction, error) {
- return _IDelegationFaucet.Contract.GetStaker(&_IDelegationFaucet.TransactOpts, operator)
-}
-
-// MintDepositAndDelegate is a paid mutator transaction binding the contract method 0x34489506.
-//
-// Solidity: function mintDepositAndDelegate(address _operator, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt, uint256 _depositAmount) returns()
-func (_IDelegationFaucet *IDelegationFaucetTransactor) MintDepositAndDelegate(opts *bind.TransactOpts, _operator common.Address, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte, _depositAmount *big.Int) (*types.Transaction, error) {
- return _IDelegationFaucet.contract.Transact(opts, "mintDepositAndDelegate", _operator, approverSignatureAndExpiry, approverSalt, _depositAmount)
-}
-
-// MintDepositAndDelegate is a paid mutator transaction binding the contract method 0x34489506.
-//
-// Solidity: function mintDepositAndDelegate(address _operator, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt, uint256 _depositAmount) returns()
-func (_IDelegationFaucet *IDelegationFaucetSession) MintDepositAndDelegate(_operator common.Address, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte, _depositAmount *big.Int) (*types.Transaction, error) {
- return _IDelegationFaucet.Contract.MintDepositAndDelegate(&_IDelegationFaucet.TransactOpts, _operator, approverSignatureAndExpiry, approverSalt, _depositAmount)
-}
-
-// MintDepositAndDelegate is a paid mutator transaction binding the contract method 0x34489506.
-//
-// Solidity: function mintDepositAndDelegate(address _operator, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt, uint256 _depositAmount) returns()
-func (_IDelegationFaucet *IDelegationFaucetTransactorSession) MintDepositAndDelegate(_operator common.Address, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte, _depositAmount *big.Int) (*types.Transaction, error) {
- return _IDelegationFaucet.Contract.MintDepositAndDelegate(&_IDelegationFaucet.TransactOpts, _operator, approverSignatureAndExpiry, approverSalt, _depositAmount)
-}
-
-// QueueWithdrawal is a paid mutator transaction binding the contract method 0xa76a9d2d.
-//
-// Solidity: function queueWithdrawal(address staker, (address[],uint256[],address)[] queuedWithdrawalParams) returns(bytes)
-func (_IDelegationFaucet *IDelegationFaucetTransactor) QueueWithdrawal(opts *bind.TransactOpts, staker common.Address, queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) {
- return _IDelegationFaucet.contract.Transact(opts, "queueWithdrawal", staker, queuedWithdrawalParams)
-}
-
-// QueueWithdrawal is a paid mutator transaction binding the contract method 0xa76a9d2d.
-//
-// Solidity: function queueWithdrawal(address staker, (address[],uint256[],address)[] queuedWithdrawalParams) returns(bytes)
-func (_IDelegationFaucet *IDelegationFaucetSession) QueueWithdrawal(staker common.Address, queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) {
- return _IDelegationFaucet.Contract.QueueWithdrawal(&_IDelegationFaucet.TransactOpts, staker, queuedWithdrawalParams)
-}
-
-// QueueWithdrawal is a paid mutator transaction binding the contract method 0xa76a9d2d.
-//
-// Solidity: function queueWithdrawal(address staker, (address[],uint256[],address)[] queuedWithdrawalParams) returns(bytes)
-func (_IDelegationFaucet *IDelegationFaucetTransactorSession) QueueWithdrawal(staker common.Address, queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) {
- return _IDelegationFaucet.Contract.QueueWithdrawal(&_IDelegationFaucet.TransactOpts, staker, queuedWithdrawalParams)
-}
-
-// Transfer is a paid mutator transaction binding the contract method 0xf18d03cc.
-//
-// Solidity: function transfer(address staker, address token, address to, uint256 amount) returns(bytes)
-func (_IDelegationFaucet *IDelegationFaucetTransactor) Transfer(opts *bind.TransactOpts, staker common.Address, token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) {
- return _IDelegationFaucet.contract.Transact(opts, "transfer", staker, token, to, amount)
-}
-
-// Transfer is a paid mutator transaction binding the contract method 0xf18d03cc.
-//
-// Solidity: function transfer(address staker, address token, address to, uint256 amount) returns(bytes)
-func (_IDelegationFaucet *IDelegationFaucetSession) Transfer(staker common.Address, token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) {
- return _IDelegationFaucet.Contract.Transfer(&_IDelegationFaucet.TransactOpts, staker, token, to, amount)
-}
-
-// Transfer is a paid mutator transaction binding the contract method 0xf18d03cc.
-//
-// Solidity: function transfer(address staker, address token, address to, uint256 amount) returns(bytes)
-func (_IDelegationFaucet *IDelegationFaucetTransactorSession) Transfer(staker common.Address, token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) {
- return _IDelegationFaucet.Contract.Transfer(&_IDelegationFaucet.TransactOpts, staker, token, to, amount)
-}
diff --git a/pkg/bindings/IDelegationManager/binding.go b/pkg/bindings/IDelegationManager/binding.go
index ccb417d408..ec7567cafc 100644
--- a/pkg/bindings/IDelegationManager/binding.go
+++ b/pkg/bindings/IDelegationManager/binding.go
@@ -29,29 +29,22 @@ 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
+// IDelegationManagerTypesQueuedWithdrawalParams is an auto generated low-level Go binding around an user-defined struct.
+type IDelegationManagerTypesQueuedWithdrawalParams struct {
+ Strategies []common.Address
+ DepositShares []*big.Int
+ DeprecatedWithdrawer common.Address
}
-// IDelegationManagerQueuedWithdrawalParams is an auto generated low-level Go binding around an user-defined struct.
-type IDelegationManagerQueuedWithdrawalParams struct {
- Strategies []common.Address
- Shares []*big.Int
- Withdrawer common.Address
-}
-
-// IDelegationManagerWithdrawal is an auto generated low-level Go binding around an user-defined struct.
-type IDelegationManagerWithdrawal struct {
- Staker common.Address
- DelegatedTo common.Address
- Withdrawer common.Address
- Nonce *big.Int
- StartBlock uint32
- Strategies []common.Address
- Shares []*big.Int
+// 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
+ StartBlock uint32
+ Strategies []common.Address
+ ScaledShares []*big.Int
}
// ISignatureUtilsSignatureWithExpiry is an auto generated low-level Go binding around an user-defined struct.
@@ -62,7 +55,7 @@ type ISignatureUtilsSignatureWithExpiry struct {
// IDelegationManagerMetaData contains all meta data concerning the IDelegationManager contract.
var IDelegationManagerMetaData = &bind.MetaData{
- ABI: "[{\"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\":\"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\":\"staker\",\"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\":\"staker\",\"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\":\"_delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"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\":\"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\":\"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\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"setMinWithdrawalDelayBlocks\",\"inputs\":[{\"name\":\"newMinWithdrawalDelayBlocks\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"stakerNonce\",\"inputs\":[{\"name\":\"staker\",\"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\":\"strategyWithdrawalDelayBlocks\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"undelegate\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorMetadataURI\",\"inputs\":[{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"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\":\"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}]",
+ ABI: "[{\"type\":\"function\",\"name\":\"DELEGATION_APPROVAL_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\":\"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\":\"calculateWithdrawalRoot\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawal\",\"inputs\":[{\"name\":\"withdrawal\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal[]\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"tokens\",\"type\":\"address[][]\",\"internalType\":\"contractIERC20[][]\"},{\"name\":\"receiveAsTokens\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"convertToDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"withdrawableShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"cumulativeWithdrawalsQueued\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"curDepositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"beaconChainSlashingFactorDecrease\",\"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\":\"delegatedTo\",\"inputs\":[{\"name\":\"staker\",\"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\":\"_delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositScalingFactor\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"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\":\"getQueuedWithdrawal\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQueuedWithdrawalRoots\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQueuedWithdrawals\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"withdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.Withdrawal[]\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"shares\",\"type\":\"uint256[][]\",\"internalType\":\"uint256[][]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSlashableSharesInQueue\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWithdrawableShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[{\"name\":\"withdrawableShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"depositShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseDelegatedShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"prevDepositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"addedShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isDelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minWithdrawalDelayBlocks\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyOperatorDetails\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newDelegationApprover\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"queueWithdrawals\",\"inputs\":[{\"name\":\"params\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManagerTypes.QueuedWithdrawalParams[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"depositShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"__deprecated_withdrawer\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"redelegate\",\"inputs\":[{\"name\":\"newOperator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"newOperatorApproverSig\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"approverSalt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"withdrawalRoots\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerAsOperator\",\"inputs\":[{\"name\":\"initDelegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allocationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"slashOperatorShares\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"prevMaxMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"newMaxMagnitude\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"undelegate\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"withdrawalRoots\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorMetadataURI\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"DelegationApproverUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newDelegationApprover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DepositScalingFactorUpdated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"newDepositScalingFactor\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorMetadataURIUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRegistered\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"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\":\"SlashingWithdrawalCompleted\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SlashingWithdrawalQueued\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"withdrawal\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManagerTypes.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"scaledShares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]},{\"name\":\"sharesToWithdraw\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerDelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerForceUndelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerUndelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ActivelyDelegated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerCannotUndelegate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FullySlashed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotActivelyDelegated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyAllocationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyManagerOrEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorNotRegistered\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorsCannotUndelegate\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SaltSpent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalDelayNotElapsed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalNotQueued\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawerNotCaller\",\"inputs\":[]}]",
}
// IDelegationManagerABI is the input ABI used to generate the binding from.
@@ -242,68 +235,6 @@ func (_IDelegationManager *IDelegationManagerCallerSession) DELEGATIONAPPROVALTY
return _IDelegationManager.Contract.DELEGATIONAPPROVALTYPEHASH(&_IDelegationManager.CallOpts)
}
-// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70.
-//
-// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32)
-func (_IDelegationManager *IDelegationManagerCaller) DOMAINTYPEHASH(opts *bind.CallOpts) ([32]byte, error) {
- var out []interface{}
- err := _IDelegationManager.contract.Call(opts, &out, "DOMAIN_TYPEHASH")
-
- if err != nil {
- return *new([32]byte), err
- }
-
- out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
-
- return out0, err
-
-}
-
-// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70.
-//
-// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32)
-func (_IDelegationManager *IDelegationManagerSession) DOMAINTYPEHASH() ([32]byte, error) {
- return _IDelegationManager.Contract.DOMAINTYPEHASH(&_IDelegationManager.CallOpts)
-}
-
-// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70.
-//
-// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32)
-func (_IDelegationManager *IDelegationManagerCallerSession) DOMAINTYPEHASH() ([32]byte, error) {
- return _IDelegationManager.Contract.DOMAINTYPEHASH(&_IDelegationManager.CallOpts)
-}
-
-// STAKERDELEGATIONTYPEHASH is a free data retrieval call binding the contract method 0x43377382.
-//
-// Solidity: function STAKER_DELEGATION_TYPEHASH() view returns(bytes32)
-func (_IDelegationManager *IDelegationManagerCaller) STAKERDELEGATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) {
- var out []interface{}
- err := _IDelegationManager.contract.Call(opts, &out, "STAKER_DELEGATION_TYPEHASH")
-
- if err != nil {
- return *new([32]byte), err
- }
-
- out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
-
- return out0, err
-
-}
-
-// STAKERDELEGATIONTYPEHASH is a free data retrieval call binding the contract method 0x43377382.
-//
-// Solidity: function STAKER_DELEGATION_TYPEHASH() view returns(bytes32)
-func (_IDelegationManager *IDelegationManagerSession) STAKERDELEGATIONTYPEHASH() ([32]byte, error) {
- return _IDelegationManager.Contract.STAKERDELEGATIONTYPEHASH(&_IDelegationManager.CallOpts)
-}
-
-// STAKERDELEGATIONTYPEHASH is a free data retrieval call binding the contract method 0x43377382.
-//
-// Solidity: function STAKER_DELEGATION_TYPEHASH() view returns(bytes32)
-func (_IDelegationManager *IDelegationManagerCallerSession) STAKERDELEGATIONTYPEHASH() ([32]byte, error) {
- return _IDelegationManager.Contract.STAKERDELEGATIONTYPEHASH(&_IDelegationManager.CallOpts)
-}
-
// BeaconChainETHStrategy is a free data retrieval call binding the contract method 0x9104c319.
//
// Solidity: function beaconChainETHStrategy() view returns(address)
@@ -335,37 +266,6 @@ func (_IDelegationManager *IDelegationManagerCallerSession) BeaconChainETHStrate
return _IDelegationManager.Contract.BeaconChainETHStrategy(&_IDelegationManager.CallOpts)
}
-// CalculateCurrentStakerDelegationDigestHash is a free data retrieval call binding the contract method 0x1bbce091.
-//
-// Solidity: function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) view returns(bytes32)
-func (_IDelegationManager *IDelegationManagerCaller) CalculateCurrentStakerDelegationDigestHash(opts *bind.CallOpts, staker common.Address, operator common.Address, expiry *big.Int) ([32]byte, error) {
- var out []interface{}
- err := _IDelegationManager.contract.Call(opts, &out, "calculateCurrentStakerDelegationDigestHash", staker, operator, expiry)
-
- if err != nil {
- return *new([32]byte), err
- }
-
- out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
-
- return out0, err
-
-}
-
-// CalculateCurrentStakerDelegationDigestHash is a free data retrieval call binding the contract method 0x1bbce091.
-//
-// Solidity: function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) view returns(bytes32)
-func (_IDelegationManager *IDelegationManagerSession) CalculateCurrentStakerDelegationDigestHash(staker common.Address, operator common.Address, expiry *big.Int) ([32]byte, error) {
- return _IDelegationManager.Contract.CalculateCurrentStakerDelegationDigestHash(&_IDelegationManager.CallOpts, staker, operator, expiry)
-}
-
-// CalculateCurrentStakerDelegationDigestHash is a free data retrieval call binding the contract method 0x1bbce091.
-//
-// Solidity: function calculateCurrentStakerDelegationDigestHash(address staker, address operator, uint256 expiry) view returns(bytes32)
-func (_IDelegationManager *IDelegationManagerCallerSession) CalculateCurrentStakerDelegationDigestHash(staker common.Address, operator common.Address, expiry *big.Int) ([32]byte, error) {
- return _IDelegationManager.Contract.CalculateCurrentStakerDelegationDigestHash(&_IDelegationManager.CallOpts, staker, operator, expiry)
-}
-
// CalculateDelegationApprovalDigestHash is a free data retrieval call binding the contract method 0x0b9f487a.
//
// Solidity: function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) view returns(bytes32)
@@ -397,12 +297,12 @@ func (_IDelegationManager *IDelegationManagerCallerSession) CalculateDelegationA
return _IDelegationManager.Contract.CalculateDelegationApprovalDigestHash(&_IDelegationManager.CallOpts, staker, operator, _delegationApprover, approverSalt, expiry)
}
-// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111.
+// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da.
//
-// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32)
-func (_IDelegationManager *IDelegationManagerCaller) CalculateStakerDelegationDigestHash(opts *bind.CallOpts, staker common.Address, _stakerNonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) {
+// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32)
+func (_IDelegationManager *IDelegationManagerCaller) CalculateWithdrawalRoot(opts *bind.CallOpts, withdrawal IDelegationManagerTypesWithdrawal) ([32]byte, error) {
var out []interface{}
- err := _IDelegationManager.contract.Call(opts, &out, "calculateStakerDelegationDigestHash", staker, _stakerNonce, operator, expiry)
+ err := _IDelegationManager.contract.Call(opts, &out, "calculateWithdrawalRoot", withdrawal)
if err != nil {
return *new([32]byte), err
@@ -414,49 +314,49 @@ func (_IDelegationManager *IDelegationManagerCaller) CalculateStakerDelegationDi
}
-// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111.
+// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da.
//
-// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32)
-func (_IDelegationManager *IDelegationManagerSession) CalculateStakerDelegationDigestHash(staker common.Address, _stakerNonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) {
- return _IDelegationManager.Contract.CalculateStakerDelegationDigestHash(&_IDelegationManager.CallOpts, staker, _stakerNonce, operator, expiry)
+// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32)
+func (_IDelegationManager *IDelegationManagerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerTypesWithdrawal) ([32]byte, error) {
+ return _IDelegationManager.Contract.CalculateWithdrawalRoot(&_IDelegationManager.CallOpts, withdrawal)
}
-// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111.
+// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da.
//
-// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32)
-func (_IDelegationManager *IDelegationManagerCallerSession) CalculateStakerDelegationDigestHash(staker common.Address, _stakerNonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) {
- return _IDelegationManager.Contract.CalculateStakerDelegationDigestHash(&_IDelegationManager.CallOpts, staker, _stakerNonce, operator, expiry)
+// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32)
+func (_IDelegationManager *IDelegationManagerCallerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerTypesWithdrawal) ([32]byte, error) {
+ return _IDelegationManager.Contract.CalculateWithdrawalRoot(&_IDelegationManager.CallOpts, withdrawal)
}
-// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da.
+// ConvertToDepositShares is a free data retrieval call binding the contract method 0x25df922e.
//
-// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32)
-func (_IDelegationManager *IDelegationManagerCaller) CalculateWithdrawalRoot(opts *bind.CallOpts, withdrawal IDelegationManagerWithdrawal) ([32]byte, error) {
+// Solidity: function convertToDepositShares(address staker, address[] strategies, uint256[] withdrawableShares) view returns(uint256[])
+func (_IDelegationManager *IDelegationManagerCaller) ConvertToDepositShares(opts *bind.CallOpts, staker common.Address, strategies []common.Address, withdrawableShares []*big.Int) ([]*big.Int, error) {
var out []interface{}
- err := _IDelegationManager.contract.Call(opts, &out, "calculateWithdrawalRoot", withdrawal)
+ err := _IDelegationManager.contract.Call(opts, &out, "convertToDepositShares", staker, strategies, withdrawableShares)
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
}
-// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da.
+// ConvertToDepositShares is a free data retrieval call binding the contract method 0x25df922e.
//
-// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32)
-func (_IDelegationManager *IDelegationManagerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerWithdrawal) ([32]byte, error) {
- return _IDelegationManager.Contract.CalculateWithdrawalRoot(&_IDelegationManager.CallOpts, withdrawal)
+// Solidity: function convertToDepositShares(address staker, address[] strategies, uint256[] withdrawableShares) view returns(uint256[])
+func (_IDelegationManager *IDelegationManagerSession) ConvertToDepositShares(staker common.Address, strategies []common.Address, withdrawableShares []*big.Int) ([]*big.Int, error) {
+ return _IDelegationManager.Contract.ConvertToDepositShares(&_IDelegationManager.CallOpts, staker, strategies, withdrawableShares)
}
-// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da.
+// ConvertToDepositShares is a free data retrieval call binding the contract method 0x25df922e.
//
-// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32)
-func (_IDelegationManager *IDelegationManagerCallerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerWithdrawal) ([32]byte, error) {
- return _IDelegationManager.Contract.CalculateWithdrawalRoot(&_IDelegationManager.CallOpts, withdrawal)
+// Solidity: function convertToDepositShares(address staker, address[] strategies, uint256[] withdrawableShares) view returns(uint256[])
+func (_IDelegationManager *IDelegationManagerCallerSession) ConvertToDepositShares(staker common.Address, strategies []common.Address, withdrawableShares []*big.Int) ([]*big.Int, error) {
+ return _IDelegationManager.Contract.ConvertToDepositShares(&_IDelegationManager.CallOpts, staker, strategies, withdrawableShares)
}
// CumulativeWithdrawalsQueued is a free data retrieval call binding the contract method 0xa1788484.
@@ -583,43 +483,43 @@ func (_IDelegationManager *IDelegationManagerCallerSession) DelegationApproverSa
return _IDelegationManager.Contract.DelegationApproverSaltIsSpent(&_IDelegationManager.CallOpts, _delegationApprover, salt)
}
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
+// DepositScalingFactor is a free data retrieval call binding the contract method 0xbfae3fd2.
//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_IDelegationManager *IDelegationManagerCaller) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) {
+// Solidity: function depositScalingFactor(address staker, address strategy) view returns(uint256)
+func (_IDelegationManager *IDelegationManagerCaller) DepositScalingFactor(opts *bind.CallOpts, staker common.Address, strategy common.Address) (*big.Int, error) {
var out []interface{}
- err := _IDelegationManager.contract.Call(opts, &out, "domainSeparator")
+ err := _IDelegationManager.contract.Call(opts, &out, "depositScalingFactor", staker, strategy)
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
}
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
+// DepositScalingFactor is a free data retrieval call binding the contract method 0xbfae3fd2.
//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_IDelegationManager *IDelegationManagerSession) DomainSeparator() ([32]byte, error) {
- return _IDelegationManager.Contract.DomainSeparator(&_IDelegationManager.CallOpts)
+// Solidity: function depositScalingFactor(address staker, address strategy) view returns(uint256)
+func (_IDelegationManager *IDelegationManagerSession) DepositScalingFactor(staker common.Address, strategy common.Address) (*big.Int, error) {
+ return _IDelegationManager.Contract.DepositScalingFactor(&_IDelegationManager.CallOpts, staker, strategy)
}
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
+// DepositScalingFactor is a free data retrieval call binding the contract method 0xbfae3fd2.
//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_IDelegationManager *IDelegationManagerCallerSession) DomainSeparator() ([32]byte, error) {
- return _IDelegationManager.Contract.DomainSeparator(&_IDelegationManager.CallOpts)
+// Solidity: function depositScalingFactor(address staker, address strategy) view returns(uint256)
+func (_IDelegationManager *IDelegationManagerCallerSession) DepositScalingFactor(staker common.Address, strategy common.Address) (*big.Int, error) {
+ return _IDelegationManager.Contract.DepositScalingFactor(&_IDelegationManager.CallOpts, staker, strategy)
}
-// 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 (_IDelegationManager *IDelegationManagerCaller) GetDelegatableShares(opts *bind.CallOpts, staker common.Address) ([]common.Address, []*big.Int, error) {
+// Solidity: function getDepositedShares(address staker) view returns(address[], uint256[])
+func (_IDelegationManager *IDelegationManagerCaller) GetDepositedShares(opts *bind.CallOpts, staker common.Address) ([]common.Address, []*big.Int, error) {
var out []interface{}
- err := _IDelegationManager.contract.Call(opts, &out, "getDelegatableShares", staker)
+ err := _IDelegationManager.contract.Call(opts, &out, "getDepositedShares", staker)
if err != nil {
return *new([]common.Address), *new([]*big.Int), err
@@ -632,18 +532,18 @@ func (_IDelegationManager *IDelegationManagerCaller) GetDelegatableShares(opts *
}
-// 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 (_IDelegationManager *IDelegationManagerSession) GetDelegatableShares(staker common.Address) ([]common.Address, []*big.Int, error) {
- return _IDelegationManager.Contract.GetDelegatableShares(&_IDelegationManager.CallOpts, staker)
+// Solidity: function getDepositedShares(address staker) view returns(address[], uint256[])
+func (_IDelegationManager *IDelegationManagerSession) GetDepositedShares(staker common.Address) ([]common.Address, []*big.Int, error) {
+ return _IDelegationManager.Contract.GetDepositedShares(&_IDelegationManager.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 (_IDelegationManager *IDelegationManagerCallerSession) GetDelegatableShares(staker common.Address) ([]common.Address, []*big.Int, error) {
- return _IDelegationManager.Contract.GetDelegatableShares(&_IDelegationManager.CallOpts, staker)
+// Solidity: function getDepositedShares(address staker) view returns(address[], uint256[])
+func (_IDelegationManager *IDelegationManagerCallerSession) GetDepositedShares(staker common.Address) ([]common.Address, []*big.Int, error) {
+ return _IDelegationManager.Contract.GetDepositedShares(&_IDelegationManager.CallOpts, staker)
}
// GetOperatorShares is a free data retrieval call binding the contract method 0x90041347.
@@ -677,346 +577,374 @@ func (_IDelegationManager *IDelegationManagerCallerSession) GetOperatorShares(op
return _IDelegationManager.Contract.GetOperatorShares(&_IDelegationManager.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 (_IDelegationManager *IDelegationManagerCaller) GetWithdrawalDelay(opts *bind.CallOpts, strategies []common.Address) (*big.Int, error) {
+// Solidity: function getOperatorsShares(address[] operators, address[] strategies) view returns(uint256[][])
+func (_IDelegationManager *IDelegationManagerCaller) GetOperatorsShares(opts *bind.CallOpts, operators []common.Address, strategies []common.Address) ([][]*big.Int, error) {
var out []interface{}
- err := _IDelegationManager.contract.Call(opts, &out, "getWithdrawalDelay", strategies)
+ err := _IDelegationManager.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
}
-// 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 (_IDelegationManager *IDelegationManagerSession) GetWithdrawalDelay(strategies []common.Address) (*big.Int, error) {
- return _IDelegationManager.Contract.GetWithdrawalDelay(&_IDelegationManager.CallOpts, strategies)
+// Solidity: function getOperatorsShares(address[] operators, address[] strategies) view returns(uint256[][])
+func (_IDelegationManager *IDelegationManagerSession) GetOperatorsShares(operators []common.Address, strategies []common.Address) ([][]*big.Int, error) {
+ return _IDelegationManager.Contract.GetOperatorsShares(&_IDelegationManager.CallOpts, operators, 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 (_IDelegationManager *IDelegationManagerCallerSession) GetWithdrawalDelay(strategies []common.Address) (*big.Int, error) {
- return _IDelegationManager.Contract.GetWithdrawalDelay(&_IDelegationManager.CallOpts, strategies)
+// Solidity: function getOperatorsShares(address[] operators, address[] strategies) view returns(uint256[][])
+func (_IDelegationManager *IDelegationManagerCallerSession) GetOperatorsShares(operators []common.Address, strategies []common.Address) ([][]*big.Int, error) {
+ return _IDelegationManager.Contract.GetOperatorsShares(&_IDelegationManager.CallOpts, operators, strategies)
}
-// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d.
+// GetQueuedWithdrawal is a free data retrieval call binding the contract method 0x5d975e88.
//
-// Solidity: function isDelegated(address staker) view returns(bool)
-func (_IDelegationManager *IDelegationManagerCaller) IsDelegated(opts *bind.CallOpts, staker common.Address) (bool, error) {
+// Solidity: function getQueuedWithdrawal(bytes32 withdrawalRoot) view returns((address,address,address,uint256,uint32,address[],uint256[]))
+func (_IDelegationManager *IDelegationManagerCaller) GetQueuedWithdrawal(opts *bind.CallOpts, withdrawalRoot [32]byte) (IDelegationManagerTypesWithdrawal, error) {
var out []interface{}
- err := _IDelegationManager.contract.Call(opts, &out, "isDelegated", staker)
+ err := _IDelegationManager.contract.Call(opts, &out, "getQueuedWithdrawal", withdrawalRoot)
if err != nil {
- return *new(bool), err
+ return *new(IDelegationManagerTypesWithdrawal), err
}
- out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
+ out0 := *abi.ConvertType(out[0], new(IDelegationManagerTypesWithdrawal)).(*IDelegationManagerTypesWithdrawal)
return out0, err
}
-// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d.
+// GetQueuedWithdrawal is a free data retrieval call binding the contract method 0x5d975e88.
//
-// Solidity: function isDelegated(address staker) view returns(bool)
-func (_IDelegationManager *IDelegationManagerSession) IsDelegated(staker common.Address) (bool, error) {
- return _IDelegationManager.Contract.IsDelegated(&_IDelegationManager.CallOpts, staker)
+// Solidity: function getQueuedWithdrawal(bytes32 withdrawalRoot) view returns((address,address,address,uint256,uint32,address[],uint256[]))
+func (_IDelegationManager *IDelegationManagerSession) GetQueuedWithdrawal(withdrawalRoot [32]byte) (IDelegationManagerTypesWithdrawal, error) {
+ return _IDelegationManager.Contract.GetQueuedWithdrawal(&_IDelegationManager.CallOpts, withdrawalRoot)
}
-// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d.
+// GetQueuedWithdrawal is a free data retrieval call binding the contract method 0x5d975e88.
//
-// Solidity: function isDelegated(address staker) view returns(bool)
-func (_IDelegationManager *IDelegationManagerCallerSession) IsDelegated(staker common.Address) (bool, error) {
- return _IDelegationManager.Contract.IsDelegated(&_IDelegationManager.CallOpts, staker)
+// Solidity: function getQueuedWithdrawal(bytes32 withdrawalRoot) view returns((address,address,address,uint256,uint32,address[],uint256[]))
+func (_IDelegationManager *IDelegationManagerCallerSession) GetQueuedWithdrawal(withdrawalRoot [32]byte) (IDelegationManagerTypesWithdrawal, error) {
+ return _IDelegationManager.Contract.GetQueuedWithdrawal(&_IDelegationManager.CallOpts, withdrawalRoot)
}
-// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae.
+// GetQueuedWithdrawalRoots is a free data retrieval call binding the contract method 0xfd8aa88d.
//
-// Solidity: function isOperator(address operator) view returns(bool)
-func (_IDelegationManager *IDelegationManagerCaller) IsOperator(opts *bind.CallOpts, operator common.Address) (bool, error) {
+// Solidity: function getQueuedWithdrawalRoots(address staker) view returns(bytes32[])
+func (_IDelegationManager *IDelegationManagerCaller) GetQueuedWithdrawalRoots(opts *bind.CallOpts, staker common.Address) ([][32]byte, error) {
var out []interface{}
- err := _IDelegationManager.contract.Call(opts, &out, "isOperator", operator)
+ err := _IDelegationManager.contract.Call(opts, &out, "getQueuedWithdrawalRoots", staker)
if err != nil {
- return *new(bool), err
+ return *new([][32]byte), err
}
- out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
+ out0 := *abi.ConvertType(out[0], new([][32]byte)).(*[][32]byte)
return out0, err
}
-// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae.
+// GetQueuedWithdrawalRoots is a free data retrieval call binding the contract method 0xfd8aa88d.
//
-// Solidity: function isOperator(address operator) view returns(bool)
-func (_IDelegationManager *IDelegationManagerSession) IsOperator(operator common.Address) (bool, error) {
- return _IDelegationManager.Contract.IsOperator(&_IDelegationManager.CallOpts, operator)
+// Solidity: function getQueuedWithdrawalRoots(address staker) view returns(bytes32[])
+func (_IDelegationManager *IDelegationManagerSession) GetQueuedWithdrawalRoots(staker common.Address) ([][32]byte, error) {
+ return _IDelegationManager.Contract.GetQueuedWithdrawalRoots(&_IDelegationManager.CallOpts, staker)
}
-// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae.
+// GetQueuedWithdrawalRoots is a free data retrieval call binding the contract method 0xfd8aa88d.
//
-// Solidity: function isOperator(address operator) view returns(bool)
-func (_IDelegationManager *IDelegationManagerCallerSession) IsOperator(operator common.Address) (bool, error) {
- return _IDelegationManager.Contract.IsOperator(&_IDelegationManager.CallOpts, operator)
+// Solidity: function getQueuedWithdrawalRoots(address staker) view returns(bytes32[])
+func (_IDelegationManager *IDelegationManagerCallerSession) GetQueuedWithdrawalRoots(staker common.Address) ([][32]byte, error) {
+ return _IDelegationManager.Contract.GetQueuedWithdrawalRoots(&_IDelegationManager.CallOpts, staker)
}
-// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8.
+// GetQueuedWithdrawals is a free data retrieval call binding the contract method 0x5dd68579.
//
-// Solidity: function minWithdrawalDelayBlocks() view returns(uint256)
-func (_IDelegationManager *IDelegationManagerCaller) MinWithdrawalDelayBlocks(opts *bind.CallOpts) (*big.Int, error) {
+// Solidity: function getQueuedWithdrawals(address staker) view returns((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, uint256[][] shares)
+func (_IDelegationManager *IDelegationManagerCaller) GetQueuedWithdrawals(opts *bind.CallOpts, staker common.Address) (struct {
+ Withdrawals []IDelegationManagerTypesWithdrawal
+ Shares [][]*big.Int
+}, error) {
var out []interface{}
- err := _IDelegationManager.contract.Call(opts, &out, "minWithdrawalDelayBlocks")
+ err := _IDelegationManager.contract.Call(opts, &out, "getQueuedWithdrawals", staker)
+ outstruct := new(struct {
+ Withdrawals []IDelegationManagerTypesWithdrawal
+ Shares [][]*big.Int
+ })
if err != nil {
- return *new(*big.Int), err
+ return *outstruct, err
}
- out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+ outstruct.Withdrawals = *abi.ConvertType(out[0], new([]IDelegationManagerTypesWithdrawal)).(*[]IDelegationManagerTypesWithdrawal)
+ outstruct.Shares = *abi.ConvertType(out[1], new([][]*big.Int)).(*[][]*big.Int)
- return out0, err
+ return *outstruct, err
}
-// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8.
+// GetQueuedWithdrawals is a free data retrieval call binding the contract method 0x5dd68579.
//
-// Solidity: function minWithdrawalDelayBlocks() view returns(uint256)
-func (_IDelegationManager *IDelegationManagerSession) MinWithdrawalDelayBlocks() (*big.Int, error) {
- return _IDelegationManager.Contract.MinWithdrawalDelayBlocks(&_IDelegationManager.CallOpts)
+// Solidity: function getQueuedWithdrawals(address staker) view returns((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, uint256[][] shares)
+func (_IDelegationManager *IDelegationManagerSession) GetQueuedWithdrawals(staker common.Address) (struct {
+ Withdrawals []IDelegationManagerTypesWithdrawal
+ Shares [][]*big.Int
+}, error) {
+ return _IDelegationManager.Contract.GetQueuedWithdrawals(&_IDelegationManager.CallOpts, staker)
}
-// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8.
+// GetQueuedWithdrawals is a free data retrieval call binding the contract method 0x5dd68579.
//
-// Solidity: function minWithdrawalDelayBlocks() view returns(uint256)
-func (_IDelegationManager *IDelegationManagerCallerSession) MinWithdrawalDelayBlocks() (*big.Int, error) {
- return _IDelegationManager.Contract.MinWithdrawalDelayBlocks(&_IDelegationManager.CallOpts)
+// Solidity: function getQueuedWithdrawals(address staker) view returns((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, uint256[][] shares)
+func (_IDelegationManager *IDelegationManagerCallerSession) GetQueuedWithdrawals(staker common.Address) (struct {
+ Withdrawals []IDelegationManagerTypesWithdrawal
+ Shares [][]*big.Int
+}, error) {
+ return _IDelegationManager.Contract.GetQueuedWithdrawals(&_IDelegationManager.CallOpts, staker)
}
-// OperatorDetails is a free data retrieval call binding the contract method 0xc5e480db.
+// GetSlashableSharesInQueue is a free data retrieval call binding the contract method 0x6e174448.
//
-// Solidity: function operatorDetails(address operator) view returns((address,address,uint32))
-func (_IDelegationManager *IDelegationManagerCaller) OperatorDetails(opts *bind.CallOpts, operator common.Address) (IDelegationManagerOperatorDetails, error) {
+// Solidity: function getSlashableSharesInQueue(address operator, address strategy) view returns(uint256)
+func (_IDelegationManager *IDelegationManagerCaller) GetSlashableSharesInQueue(opts *bind.CallOpts, operator common.Address, strategy common.Address) (*big.Int, error) {
var out []interface{}
- err := _IDelegationManager.contract.Call(opts, &out, "operatorDetails", operator)
+ err := _IDelegationManager.contract.Call(opts, &out, "getSlashableSharesInQueue", operator, strategy)
if err != nil {
- return *new(IDelegationManagerOperatorDetails), err
+ return *new(*big.Int), err
}
- out0 := *abi.ConvertType(out[0], new(IDelegationManagerOperatorDetails)).(*IDelegationManagerOperatorDetails)
+ out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
return out0, err
}
-// OperatorDetails is a free data retrieval call binding the contract method 0xc5e480db.
+// GetSlashableSharesInQueue is a free data retrieval call binding the contract method 0x6e174448.
//
-// Solidity: function operatorDetails(address operator) view returns((address,address,uint32))
-func (_IDelegationManager *IDelegationManagerSession) OperatorDetails(operator common.Address) (IDelegationManagerOperatorDetails, error) {
- return _IDelegationManager.Contract.OperatorDetails(&_IDelegationManager.CallOpts, operator)
+// Solidity: function getSlashableSharesInQueue(address operator, address strategy) view returns(uint256)
+func (_IDelegationManager *IDelegationManagerSession) GetSlashableSharesInQueue(operator common.Address, strategy common.Address) (*big.Int, error) {
+ return _IDelegationManager.Contract.GetSlashableSharesInQueue(&_IDelegationManager.CallOpts, operator, strategy)
}
-// OperatorDetails is a free data retrieval call binding the contract method 0xc5e480db.
+// GetSlashableSharesInQueue is a free data retrieval call binding the contract method 0x6e174448.
//
-// Solidity: function operatorDetails(address operator) view returns((address,address,uint32))
-func (_IDelegationManager *IDelegationManagerCallerSession) OperatorDetails(operator common.Address) (IDelegationManagerOperatorDetails, error) {
- return _IDelegationManager.Contract.OperatorDetails(&_IDelegationManager.CallOpts, operator)
+// Solidity: function getSlashableSharesInQueue(address operator, address strategy) view returns(uint256)
+func (_IDelegationManager *IDelegationManagerCallerSession) GetSlashableSharesInQueue(operator common.Address, strategy common.Address) (*big.Int, error) {
+ return _IDelegationManager.Contract.GetSlashableSharesInQueue(&_IDelegationManager.CallOpts, operator, strategy)
}
-// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3.
+// GetWithdrawableShares is a free data retrieval call binding the contract method 0xc978f7ac.
//
-// Solidity: function operatorShares(address operator, address strategy) view returns(uint256)
-func (_IDelegationManager *IDelegationManagerCaller) OperatorShares(opts *bind.CallOpts, operator common.Address, strategy common.Address) (*big.Int, error) {
+// Solidity: function getWithdrawableShares(address staker, address[] strategies) view returns(uint256[] withdrawableShares, uint256[] depositShares)
+func (_IDelegationManager *IDelegationManagerCaller) GetWithdrawableShares(opts *bind.CallOpts, staker common.Address, strategies []common.Address) (struct {
+ WithdrawableShares []*big.Int
+ DepositShares []*big.Int
+}, error) {
var out []interface{}
- err := _IDelegationManager.contract.Call(opts, &out, "operatorShares", operator, strategy)
+ err := _IDelegationManager.contract.Call(opts, &out, "getWithdrawableShares", staker, strategies)
+ outstruct := new(struct {
+ WithdrawableShares []*big.Int
+ DepositShares []*big.Int
+ })
if err != nil {
- return *new(*big.Int), err
+ return *outstruct, err
}
- out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+ outstruct.WithdrawableShares = *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int)
+ outstruct.DepositShares = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int)
- return out0, err
+ return *outstruct, err
}
-// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3.
+// GetWithdrawableShares is a free data retrieval call binding the contract method 0xc978f7ac.
//
-// Solidity: function operatorShares(address operator, address strategy) view returns(uint256)
-func (_IDelegationManager *IDelegationManagerSession) OperatorShares(operator common.Address, strategy common.Address) (*big.Int, error) {
- return _IDelegationManager.Contract.OperatorShares(&_IDelegationManager.CallOpts, operator, strategy)
+// Solidity: function getWithdrawableShares(address staker, address[] strategies) view returns(uint256[] withdrawableShares, uint256[] depositShares)
+func (_IDelegationManager *IDelegationManagerSession) GetWithdrawableShares(staker common.Address, strategies []common.Address) (struct {
+ WithdrawableShares []*big.Int
+ DepositShares []*big.Int
+}, error) {
+ return _IDelegationManager.Contract.GetWithdrawableShares(&_IDelegationManager.CallOpts, staker, strategies)
}
-// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3.
+// GetWithdrawableShares is a free data retrieval call binding the contract method 0xc978f7ac.
//
-// Solidity: function operatorShares(address operator, address strategy) view returns(uint256)
-func (_IDelegationManager *IDelegationManagerCallerSession) OperatorShares(operator common.Address, strategy common.Address) (*big.Int, error) {
- return _IDelegationManager.Contract.OperatorShares(&_IDelegationManager.CallOpts, operator, strategy)
+// Solidity: function getWithdrawableShares(address staker, address[] strategies) view returns(uint256[] withdrawableShares, uint256[] depositShares)
+func (_IDelegationManager *IDelegationManagerCallerSession) GetWithdrawableShares(staker common.Address, strategies []common.Address) (struct {
+ WithdrawableShares []*big.Int
+ DepositShares []*big.Int
+}, error) {
+ return _IDelegationManager.Contract.GetWithdrawableShares(&_IDelegationManager.CallOpts, staker, strategies)
}
-// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f.
+// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d.
//
-// Solidity: function stakerNonce(address staker) view returns(uint256)
-func (_IDelegationManager *IDelegationManagerCaller) StakerNonce(opts *bind.CallOpts, staker common.Address) (*big.Int, error) {
+// Solidity: function isDelegated(address staker) view returns(bool)
+func (_IDelegationManager *IDelegationManagerCaller) IsDelegated(opts *bind.CallOpts, staker common.Address) (bool, error) {
var out []interface{}
- err := _IDelegationManager.contract.Call(opts, &out, "stakerNonce", staker)
+ err := _IDelegationManager.contract.Call(opts, &out, "isDelegated", staker)
if err != nil {
- return *new(*big.Int), err
+ return *new(bool), err
}
- out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+ out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
return out0, err
}
-// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f.
+// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d.
//
-// Solidity: function stakerNonce(address staker) view returns(uint256)
-func (_IDelegationManager *IDelegationManagerSession) StakerNonce(staker common.Address) (*big.Int, error) {
- return _IDelegationManager.Contract.StakerNonce(&_IDelegationManager.CallOpts, staker)
+// Solidity: function isDelegated(address staker) view returns(bool)
+func (_IDelegationManager *IDelegationManagerSession) IsDelegated(staker common.Address) (bool, error) {
+ return _IDelegationManager.Contract.IsDelegated(&_IDelegationManager.CallOpts, staker)
}
-// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f.
+// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d.
//
-// Solidity: function stakerNonce(address staker) view returns(uint256)
-func (_IDelegationManager *IDelegationManagerCallerSession) StakerNonce(staker common.Address) (*big.Int, error) {
- return _IDelegationManager.Contract.StakerNonce(&_IDelegationManager.CallOpts, staker)
+// Solidity: function isDelegated(address staker) view returns(bool)
+func (_IDelegationManager *IDelegationManagerCallerSession) IsDelegated(staker common.Address) (bool, error) {
+ return _IDelegationManager.Contract.IsDelegated(&_IDelegationManager.CallOpts, staker)
}
-// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365.
+// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae.
//
-// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256)
-func (_IDelegationManager *IDelegationManagerCaller) StakerOptOutWindowBlocks(opts *bind.CallOpts, operator common.Address) (*big.Int, error) {
+// Solidity: function isOperator(address operator) view returns(bool)
+func (_IDelegationManager *IDelegationManagerCaller) IsOperator(opts *bind.CallOpts, operator common.Address) (bool, error) {
var out []interface{}
- err := _IDelegationManager.contract.Call(opts, &out, "stakerOptOutWindowBlocks", operator)
+ err := _IDelegationManager.contract.Call(opts, &out, "isOperator", operator)
if err != nil {
- return *new(*big.Int), err
+ return *new(bool), err
}
- out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+ out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
return out0, err
}
-// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365.
+// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae.
//
-// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256)
-func (_IDelegationManager *IDelegationManagerSession) StakerOptOutWindowBlocks(operator common.Address) (*big.Int, error) {
- return _IDelegationManager.Contract.StakerOptOutWindowBlocks(&_IDelegationManager.CallOpts, operator)
+// Solidity: function isOperator(address operator) view returns(bool)
+func (_IDelegationManager *IDelegationManagerSession) IsOperator(operator common.Address) (bool, error) {
+ return _IDelegationManager.Contract.IsOperator(&_IDelegationManager.CallOpts, operator)
}
-// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365.
+// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae.
//
-// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256)
-func (_IDelegationManager *IDelegationManagerCallerSession) StakerOptOutWindowBlocks(operator common.Address) (*big.Int, error) {
- return _IDelegationManager.Contract.StakerOptOutWindowBlocks(&_IDelegationManager.CallOpts, operator)
+// Solidity: function isOperator(address operator) view returns(bool)
+func (_IDelegationManager *IDelegationManagerCallerSession) IsOperator(operator common.Address) (bool, error) {
+ return _IDelegationManager.Contract.IsOperator(&_IDelegationManager.CallOpts, operator)
}
-// StrategyWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc488375a.
+// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8.
//
-// Solidity: function strategyWithdrawalDelayBlocks(address strategy) view returns(uint256)
-func (_IDelegationManager *IDelegationManagerCaller) StrategyWithdrawalDelayBlocks(opts *bind.CallOpts, strategy common.Address) (*big.Int, error) {
+// Solidity: function minWithdrawalDelayBlocks() view returns(uint32)
+func (_IDelegationManager *IDelegationManagerCaller) MinWithdrawalDelayBlocks(opts *bind.CallOpts) (uint32, error) {
var out []interface{}
- err := _IDelegationManager.contract.Call(opts, &out, "strategyWithdrawalDelayBlocks", strategy)
+ err := _IDelegationManager.contract.Call(opts, &out, "minWithdrawalDelayBlocks")
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
}
-// StrategyWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc488375a.
+// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8.
//
-// Solidity: function strategyWithdrawalDelayBlocks(address strategy) view returns(uint256)
-func (_IDelegationManager *IDelegationManagerSession) StrategyWithdrawalDelayBlocks(strategy common.Address) (*big.Int, error) {
- return _IDelegationManager.Contract.StrategyWithdrawalDelayBlocks(&_IDelegationManager.CallOpts, strategy)
+// Solidity: function minWithdrawalDelayBlocks() view returns(uint32)
+func (_IDelegationManager *IDelegationManagerSession) MinWithdrawalDelayBlocks() (uint32, error) {
+ return _IDelegationManager.Contract.MinWithdrawalDelayBlocks(&_IDelegationManager.CallOpts)
}
-// StrategyWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc488375a.
+// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8.
//
-// Solidity: function strategyWithdrawalDelayBlocks(address strategy) view returns(uint256)
-func (_IDelegationManager *IDelegationManagerCallerSession) StrategyWithdrawalDelayBlocks(strategy common.Address) (*big.Int, error) {
- return _IDelegationManager.Contract.StrategyWithdrawalDelayBlocks(&_IDelegationManager.CallOpts, strategy)
+// Solidity: function minWithdrawalDelayBlocks() view returns(uint32)
+func (_IDelegationManager *IDelegationManagerCallerSession) MinWithdrawalDelayBlocks() (uint32, error) {
+ return _IDelegationManager.Contract.MinWithdrawalDelayBlocks(&_IDelegationManager.CallOpts)
}
-// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x60d7faed.
+// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0xe4cc3f90.
//
-// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns()
-func (_IDelegationManager *IDelegationManagerTransactor) CompleteQueuedWithdrawal(opts *bind.TransactOpts, withdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) {
- return _IDelegationManager.contract.Transact(opts, "completeQueuedWithdrawal", withdrawal, tokens, middlewareTimesIndex, receiveAsTokens)
+// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, bool receiveAsTokens) returns()
+func (_IDelegationManager *IDelegationManagerTransactor) CompleteQueuedWithdrawal(opts *bind.TransactOpts, withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) {
+ return _IDelegationManager.contract.Transact(opts, "completeQueuedWithdrawal", withdrawal, tokens, receiveAsTokens)
}
-// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x60d7faed.
+// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0xe4cc3f90.
//
-// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns()
-func (_IDelegationManager *IDelegationManagerSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) {
- return _IDelegationManager.Contract.CompleteQueuedWithdrawal(&_IDelegationManager.TransactOpts, withdrawal, tokens, middlewareTimesIndex, receiveAsTokens)
+// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, bool receiveAsTokens) returns()
+func (_IDelegationManager *IDelegationManagerSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.CompleteQueuedWithdrawal(&_IDelegationManager.TransactOpts, withdrawal, tokens, receiveAsTokens)
}
-// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x60d7faed.
+// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0xe4cc3f90.
//
-// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns()
-func (_IDelegationManager *IDelegationManagerTransactorSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) {
- return _IDelegationManager.Contract.CompleteQueuedWithdrawal(&_IDelegationManager.TransactOpts, withdrawal, tokens, middlewareTimesIndex, receiveAsTokens)
+// Solidity: function completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]) withdrawal, address[] tokens, bool receiveAsTokens) returns()
+func (_IDelegationManager *IDelegationManagerTransactorSession) CompleteQueuedWithdrawal(withdrawal IDelegationManagerTypesWithdrawal, tokens []common.Address, receiveAsTokens bool) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.CompleteQueuedWithdrawal(&_IDelegationManager.TransactOpts, withdrawal, tokens, receiveAsTokens)
}
-// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x33404396.
+// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x9435bb43.
//
-// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, uint256[] middlewareTimesIndexes, bool[] receiveAsTokens) returns()
-func (_IDelegationManager *IDelegationManagerTransactor) CompleteQueuedWithdrawals(opts *bind.TransactOpts, withdrawals []IDelegationManagerWithdrawal, tokens [][]common.Address, middlewareTimesIndexes []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) {
- return _IDelegationManager.contract.Transact(opts, "completeQueuedWithdrawals", withdrawals, tokens, middlewareTimesIndexes, receiveAsTokens)
+// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, bool[] receiveAsTokens) returns()
+func (_IDelegationManager *IDelegationManagerTransactor) CompleteQueuedWithdrawals(opts *bind.TransactOpts, withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) {
+ return _IDelegationManager.contract.Transact(opts, "completeQueuedWithdrawals", withdrawals, tokens, receiveAsTokens)
}
-// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x33404396.
+// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x9435bb43.
//
-// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, uint256[] middlewareTimesIndexes, bool[] receiveAsTokens) returns()
-func (_IDelegationManager *IDelegationManagerSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerWithdrawal, tokens [][]common.Address, middlewareTimesIndexes []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) {
- return _IDelegationManager.Contract.CompleteQueuedWithdrawals(&_IDelegationManager.TransactOpts, withdrawals, tokens, middlewareTimesIndexes, receiveAsTokens)
+// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, bool[] receiveAsTokens) returns()
+func (_IDelegationManager *IDelegationManagerSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.CompleteQueuedWithdrawals(&_IDelegationManager.TransactOpts, withdrawals, tokens, receiveAsTokens)
}
-// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x33404396.
+// CompleteQueuedWithdrawals is a paid mutator transaction binding the contract method 0x9435bb43.
//
-// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, uint256[] middlewareTimesIndexes, bool[] receiveAsTokens) returns()
-func (_IDelegationManager *IDelegationManagerTransactorSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerWithdrawal, tokens [][]common.Address, middlewareTimesIndexes []*big.Int, receiveAsTokens []bool) (*types.Transaction, error) {
- return _IDelegationManager.Contract.CompleteQueuedWithdrawals(&_IDelegationManager.TransactOpts, withdrawals, tokens, middlewareTimesIndexes, receiveAsTokens)
+// Solidity: function completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[] withdrawals, address[][] tokens, bool[] receiveAsTokens) returns()
+func (_IDelegationManager *IDelegationManagerTransactorSession) CompleteQueuedWithdrawals(withdrawals []IDelegationManagerTypesWithdrawal, tokens [][]common.Address, receiveAsTokens []bool) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.CompleteQueuedWithdrawals(&_IDelegationManager.TransactOpts, withdrawals, tokens, receiveAsTokens)
}
-// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967.
+// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x60a0d1ce.
//
-// Solidity: function decreaseDelegatedShares(address staker, address strategy, uint256 shares) returns()
-func (_IDelegationManager *IDelegationManagerTransactor) DecreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IDelegationManager.contract.Transact(opts, "decreaseDelegatedShares", staker, strategy, shares)
+// Solidity: function decreaseDelegatedShares(address staker, uint256 curDepositShares, uint64 beaconChainSlashingFactorDecrease) returns()
+func (_IDelegationManager *IDelegationManagerTransactor) DecreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, curDepositShares *big.Int, beaconChainSlashingFactorDecrease uint64) (*types.Transaction, error) {
+ return _IDelegationManager.contract.Transact(opts, "decreaseDelegatedShares", staker, curDepositShares, beaconChainSlashingFactorDecrease)
}
-// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967.
+// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x60a0d1ce.
//
-// Solidity: function decreaseDelegatedShares(address staker, address strategy, uint256 shares) returns()
-func (_IDelegationManager *IDelegationManagerSession) DecreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IDelegationManager.Contract.DecreaseDelegatedShares(&_IDelegationManager.TransactOpts, staker, strategy, shares)
+// Solidity: function decreaseDelegatedShares(address staker, uint256 curDepositShares, uint64 beaconChainSlashingFactorDecrease) returns()
+func (_IDelegationManager *IDelegationManagerSession) DecreaseDelegatedShares(staker common.Address, curDepositShares *big.Int, beaconChainSlashingFactorDecrease uint64) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.DecreaseDelegatedShares(&_IDelegationManager.TransactOpts, staker, curDepositShares, beaconChainSlashingFactorDecrease)
}
-// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967.
+// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x60a0d1ce.
//
-// Solidity: function decreaseDelegatedShares(address staker, address strategy, uint256 shares) returns()
-func (_IDelegationManager *IDelegationManagerTransactorSession) DecreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IDelegationManager.Contract.DecreaseDelegatedShares(&_IDelegationManager.TransactOpts, staker, strategy, shares)
+// Solidity: function decreaseDelegatedShares(address staker, uint256 curDepositShares, uint64 beaconChainSlashingFactorDecrease) returns()
+func (_IDelegationManager *IDelegationManagerTransactorSession) DecreaseDelegatedShares(staker common.Address, curDepositShares *big.Int, beaconChainSlashingFactorDecrease uint64) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.DecreaseDelegatedShares(&_IDelegationManager.TransactOpts, staker, curDepositShares, beaconChainSlashingFactorDecrease)
}
// DelegateTo is a paid mutator transaction binding the contract method 0xeea9064b.
@@ -1040,198 +968,198 @@ func (_IDelegationManager *IDelegationManagerTransactorSession) DelegateTo(opera
return _IDelegationManager.Contract.DelegateTo(&_IDelegationManager.TransactOpts, operator, approverSignatureAndExpiry, approverSalt)
}
-// DelegateToBySignature is a paid mutator transaction binding the contract method 0x7f548071.
+// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x3c651cf2.
//
-// Solidity: function delegateToBySignature(address staker, address operator, (bytes,uint256) stakerSignatureAndExpiry, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns()
-func (_IDelegationManager *IDelegationManagerTransactor) DelegateToBySignature(opts *bind.TransactOpts, staker common.Address, operator common.Address, stakerSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) {
- return _IDelegationManager.contract.Transact(opts, "delegateToBySignature", staker, operator, stakerSignatureAndExpiry, approverSignatureAndExpiry, approverSalt)
+// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 prevDepositShares, uint256 addedShares) returns()
+func (_IDelegationManager *IDelegationManagerTransactor) IncreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, prevDepositShares *big.Int, addedShares *big.Int) (*types.Transaction, error) {
+ return _IDelegationManager.contract.Transact(opts, "increaseDelegatedShares", staker, strategy, prevDepositShares, addedShares)
}
-// DelegateToBySignature is a paid mutator transaction binding the contract method 0x7f548071.
+// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x3c651cf2.
//
-// Solidity: function delegateToBySignature(address staker, address operator, (bytes,uint256) stakerSignatureAndExpiry, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns()
-func (_IDelegationManager *IDelegationManagerSession) DelegateToBySignature(staker common.Address, operator common.Address, stakerSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) {
- return _IDelegationManager.Contract.DelegateToBySignature(&_IDelegationManager.TransactOpts, staker, operator, stakerSignatureAndExpiry, approverSignatureAndExpiry, approverSalt)
+// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 prevDepositShares, uint256 addedShares) returns()
+func (_IDelegationManager *IDelegationManagerSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, prevDepositShares *big.Int, addedShares *big.Int) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.IncreaseDelegatedShares(&_IDelegationManager.TransactOpts, staker, strategy, prevDepositShares, addedShares)
}
-// DelegateToBySignature is a paid mutator transaction binding the contract method 0x7f548071.
+// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x3c651cf2.
//
-// Solidity: function delegateToBySignature(address staker, address operator, (bytes,uint256) stakerSignatureAndExpiry, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns()
-func (_IDelegationManager *IDelegationManagerTransactorSession) DelegateToBySignature(staker common.Address, operator common.Address, stakerSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) {
- return _IDelegationManager.Contract.DelegateToBySignature(&_IDelegationManager.TransactOpts, staker, operator, stakerSignatureAndExpiry, approverSignatureAndExpiry, approverSalt)
+// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 prevDepositShares, uint256 addedShares) returns()
+func (_IDelegationManager *IDelegationManagerTransactorSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, prevDepositShares *big.Int, addedShares *big.Int) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.IncreaseDelegatedShares(&_IDelegationManager.TransactOpts, staker, strategy, prevDepositShares, addedShares)
}
-// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae.
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
//
-// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 shares) returns()
-func (_IDelegationManager *IDelegationManagerTransactor) IncreaseDelegatedShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IDelegationManager.contract.Transact(opts, "increaseDelegatedShares", staker, strategy, shares)
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_IDelegationManager *IDelegationManagerTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _IDelegationManager.contract.Transact(opts, "initialize", initialOwner, initialPausedStatus)
}
-// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae.
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
//
-// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 shares) returns()
-func (_IDelegationManager *IDelegationManagerSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IDelegationManager.Contract.IncreaseDelegatedShares(&_IDelegationManager.TransactOpts, staker, strategy, shares)
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_IDelegationManager *IDelegationManagerSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.Initialize(&_IDelegationManager.TransactOpts, initialOwner, initialPausedStatus)
}
-// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae.
+// Initialize is a paid mutator transaction binding the contract method 0xcd6dc687.
//
-// Solidity: function increaseDelegatedShares(address staker, address strategy, uint256 shares) returns()
-func (_IDelegationManager *IDelegationManagerTransactorSession) IncreaseDelegatedShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IDelegationManager.Contract.IncreaseDelegatedShares(&_IDelegationManager.TransactOpts, staker, strategy, shares)
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus) returns()
+func (_IDelegationManager *IDelegationManagerTransactorSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.Initialize(&_IDelegationManager.TransactOpts, initialOwner, initialPausedStatus)
}
-// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0.
+// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0x54b7c96c.
//
-// Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns()
-func (_IDelegationManager *IDelegationManagerTransactor) ModifyOperatorDetails(opts *bind.TransactOpts, newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) {
- return _IDelegationManager.contract.Transact(opts, "modifyOperatorDetails", newOperatorDetails)
+// Solidity: function modifyOperatorDetails(address operator, address newDelegationApprover) returns()
+func (_IDelegationManager *IDelegationManagerTransactor) ModifyOperatorDetails(opts *bind.TransactOpts, operator common.Address, newDelegationApprover common.Address) (*types.Transaction, error) {
+ return _IDelegationManager.contract.Transact(opts, "modifyOperatorDetails", operator, newDelegationApprover)
}
-// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0.
+// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0x54b7c96c.
//
-// Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns()
-func (_IDelegationManager *IDelegationManagerSession) ModifyOperatorDetails(newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) {
- return _IDelegationManager.Contract.ModifyOperatorDetails(&_IDelegationManager.TransactOpts, newOperatorDetails)
+// Solidity: function modifyOperatorDetails(address operator, address newDelegationApprover) returns()
+func (_IDelegationManager *IDelegationManagerSession) ModifyOperatorDetails(operator common.Address, newDelegationApprover common.Address) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.ModifyOperatorDetails(&_IDelegationManager.TransactOpts, operator, newDelegationApprover)
}
-// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0.
+// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0x54b7c96c.
//
-// Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns()
-func (_IDelegationManager *IDelegationManagerTransactorSession) ModifyOperatorDetails(newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) {
- return _IDelegationManager.Contract.ModifyOperatorDetails(&_IDelegationManager.TransactOpts, newOperatorDetails)
+// Solidity: function modifyOperatorDetails(address operator, address newDelegationApprover) returns()
+func (_IDelegationManager *IDelegationManagerTransactorSession) ModifyOperatorDetails(operator common.Address, newDelegationApprover common.Address) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.ModifyOperatorDetails(&_IDelegationManager.TransactOpts, operator, newDelegationApprover)
}
// QueueWithdrawals is a paid mutator transaction binding the contract method 0x0dd8dd02.
//
-// Solidity: function queueWithdrawals((address[],uint256[],address)[] queuedWithdrawalParams) returns(bytes32[])
-func (_IDelegationManager *IDelegationManagerTransactor) QueueWithdrawals(opts *bind.TransactOpts, queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) {
- return _IDelegationManager.contract.Transact(opts, "queueWithdrawals", queuedWithdrawalParams)
+// Solidity: function queueWithdrawals((address[],uint256[],address)[] params) returns(bytes32[])
+func (_IDelegationManager *IDelegationManagerTransactor) QueueWithdrawals(opts *bind.TransactOpts, params []IDelegationManagerTypesQueuedWithdrawalParams) (*types.Transaction, error) {
+ return _IDelegationManager.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 (_IDelegationManager *IDelegationManagerSession) QueueWithdrawals(queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) {
- return _IDelegationManager.Contract.QueueWithdrawals(&_IDelegationManager.TransactOpts, queuedWithdrawalParams)
+// Solidity: function queueWithdrawals((address[],uint256[],address)[] params) returns(bytes32[])
+func (_IDelegationManager *IDelegationManagerSession) QueueWithdrawals(params []IDelegationManagerTypesQueuedWithdrawalParams) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.QueueWithdrawals(&_IDelegationManager.TransactOpts, params)
}
// QueueWithdrawals is a paid mutator transaction binding the contract method 0x0dd8dd02.
//
-// Solidity: function queueWithdrawals((address[],uint256[],address)[] queuedWithdrawalParams) returns(bytes32[])
-func (_IDelegationManager *IDelegationManagerTransactorSession) QueueWithdrawals(queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) {
- return _IDelegationManager.Contract.QueueWithdrawals(&_IDelegationManager.TransactOpts, queuedWithdrawalParams)
+// Solidity: function queueWithdrawals((address[],uint256[],address)[] params) returns(bytes32[])
+func (_IDelegationManager *IDelegationManagerTransactorSession) QueueWithdrawals(params []IDelegationManagerTypesQueuedWithdrawalParams) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.QueueWithdrawals(&_IDelegationManager.TransactOpts, params)
}
-// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59.
+// Redelegate is a paid mutator transaction binding the contract method 0xa33a3433.
//
-// Solidity: function registerAsOperator((address,address,uint32) registeringOperatorDetails, string metadataURI) returns()
-func (_IDelegationManager *IDelegationManagerTransactor) RegisterAsOperator(opts *bind.TransactOpts, registeringOperatorDetails IDelegationManagerOperatorDetails, metadataURI string) (*types.Transaction, error) {
- return _IDelegationManager.contract.Transact(opts, "registerAsOperator", registeringOperatorDetails, metadataURI)
+// Solidity: function redelegate(address newOperator, (bytes,uint256) newOperatorApproverSig, bytes32 approverSalt) returns(bytes32[] withdrawalRoots)
+func (_IDelegationManager *IDelegationManagerTransactor) Redelegate(opts *bind.TransactOpts, newOperator common.Address, newOperatorApproverSig ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) {
+ return _IDelegationManager.contract.Transact(opts, "redelegate", newOperator, newOperatorApproverSig, approverSalt)
}
-// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59.
+// Redelegate is a paid mutator transaction binding the contract method 0xa33a3433.
//
-// Solidity: function registerAsOperator((address,address,uint32) registeringOperatorDetails, string metadataURI) returns()
-func (_IDelegationManager *IDelegationManagerSession) RegisterAsOperator(registeringOperatorDetails IDelegationManagerOperatorDetails, metadataURI string) (*types.Transaction, error) {
- return _IDelegationManager.Contract.RegisterAsOperator(&_IDelegationManager.TransactOpts, registeringOperatorDetails, metadataURI)
+// Solidity: function redelegate(address newOperator, (bytes,uint256) newOperatorApproverSig, bytes32 approverSalt) returns(bytes32[] withdrawalRoots)
+func (_IDelegationManager *IDelegationManagerSession) Redelegate(newOperator common.Address, newOperatorApproverSig ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.Redelegate(&_IDelegationManager.TransactOpts, newOperator, newOperatorApproverSig, approverSalt)
}
-// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59.
+// Redelegate is a paid mutator transaction binding the contract method 0xa33a3433.
//
-// Solidity: function registerAsOperator((address,address,uint32) registeringOperatorDetails, string metadataURI) returns()
-func (_IDelegationManager *IDelegationManagerTransactorSession) RegisterAsOperator(registeringOperatorDetails IDelegationManagerOperatorDetails, metadataURI string) (*types.Transaction, error) {
- return _IDelegationManager.Contract.RegisterAsOperator(&_IDelegationManager.TransactOpts, registeringOperatorDetails, metadataURI)
+// Solidity: function redelegate(address newOperator, (bytes,uint256) newOperatorApproverSig, bytes32 approverSalt) returns(bytes32[] withdrawalRoots)
+func (_IDelegationManager *IDelegationManagerTransactorSession) Redelegate(newOperator common.Address, newOperatorApproverSig ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.Redelegate(&_IDelegationManager.TransactOpts, newOperator, newOperatorApproverSig, approverSalt)
}
-// SetMinWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x635bbd10.
+// RegisterAsOperator is a paid mutator transaction binding the contract method 0x2aa6d888.
//
-// Solidity: function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) returns()
-func (_IDelegationManager *IDelegationManagerTransactor) SetMinWithdrawalDelayBlocks(opts *bind.TransactOpts, newMinWithdrawalDelayBlocks *big.Int) (*types.Transaction, error) {
- return _IDelegationManager.contract.Transact(opts, "setMinWithdrawalDelayBlocks", newMinWithdrawalDelayBlocks)
+// Solidity: function registerAsOperator(address initDelegationApprover, uint32 allocationDelay, string metadataURI) returns()
+func (_IDelegationManager *IDelegationManagerTransactor) RegisterAsOperator(opts *bind.TransactOpts, initDelegationApprover common.Address, allocationDelay uint32, metadataURI string) (*types.Transaction, error) {
+ return _IDelegationManager.contract.Transact(opts, "registerAsOperator", initDelegationApprover, allocationDelay, metadataURI)
}
-// SetMinWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x635bbd10.
+// RegisterAsOperator is a paid mutator transaction binding the contract method 0x2aa6d888.
//
-// Solidity: function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) returns()
-func (_IDelegationManager *IDelegationManagerSession) SetMinWithdrawalDelayBlocks(newMinWithdrawalDelayBlocks *big.Int) (*types.Transaction, error) {
- return _IDelegationManager.Contract.SetMinWithdrawalDelayBlocks(&_IDelegationManager.TransactOpts, newMinWithdrawalDelayBlocks)
+// Solidity: function registerAsOperator(address initDelegationApprover, uint32 allocationDelay, string metadataURI) returns()
+func (_IDelegationManager *IDelegationManagerSession) RegisterAsOperator(initDelegationApprover common.Address, allocationDelay uint32, metadataURI string) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.RegisterAsOperator(&_IDelegationManager.TransactOpts, initDelegationApprover, allocationDelay, metadataURI)
}
-// SetMinWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x635bbd10.
+// RegisterAsOperator is a paid mutator transaction binding the contract method 0x2aa6d888.
//
-// Solidity: function setMinWithdrawalDelayBlocks(uint256 newMinWithdrawalDelayBlocks) returns()
-func (_IDelegationManager *IDelegationManagerTransactorSession) SetMinWithdrawalDelayBlocks(newMinWithdrawalDelayBlocks *big.Int) (*types.Transaction, error) {
- return _IDelegationManager.Contract.SetMinWithdrawalDelayBlocks(&_IDelegationManager.TransactOpts, newMinWithdrawalDelayBlocks)
+// Solidity: function registerAsOperator(address initDelegationApprover, uint32 allocationDelay, string metadataURI) returns()
+func (_IDelegationManager *IDelegationManagerTransactorSession) RegisterAsOperator(initDelegationApprover common.Address, allocationDelay uint32, metadataURI string) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.RegisterAsOperator(&_IDelegationManager.TransactOpts, initDelegationApprover, allocationDelay, metadataURI)
}
-// SetStrategyWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x1522bf02.
+// SlashOperatorShares is a paid mutator transaction binding the contract method 0x601bb36f.
//
-// Solidity: function setStrategyWithdrawalDelayBlocks(address[] strategies, uint256[] withdrawalDelayBlocks) returns()
-func (_IDelegationManager *IDelegationManagerTransactor) SetStrategyWithdrawalDelayBlocks(opts *bind.TransactOpts, strategies []common.Address, withdrawalDelayBlocks []*big.Int) (*types.Transaction, error) {
- return _IDelegationManager.contract.Transact(opts, "setStrategyWithdrawalDelayBlocks", strategies, withdrawalDelayBlocks)
+// Solidity: function slashOperatorShares(address operator, address strategy, uint64 prevMaxMagnitude, uint64 newMaxMagnitude) returns()
+func (_IDelegationManager *IDelegationManagerTransactor) SlashOperatorShares(opts *bind.TransactOpts, operator common.Address, strategy common.Address, prevMaxMagnitude uint64, newMaxMagnitude uint64) (*types.Transaction, error) {
+ return _IDelegationManager.contract.Transact(opts, "slashOperatorShares", operator, strategy, prevMaxMagnitude, newMaxMagnitude)
}
-// SetStrategyWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x1522bf02.
+// SlashOperatorShares is a paid mutator transaction binding the contract method 0x601bb36f.
//
-// Solidity: function setStrategyWithdrawalDelayBlocks(address[] strategies, uint256[] withdrawalDelayBlocks) returns()
-func (_IDelegationManager *IDelegationManagerSession) SetStrategyWithdrawalDelayBlocks(strategies []common.Address, withdrawalDelayBlocks []*big.Int) (*types.Transaction, error) {
- return _IDelegationManager.Contract.SetStrategyWithdrawalDelayBlocks(&_IDelegationManager.TransactOpts, strategies, withdrawalDelayBlocks)
+// Solidity: function slashOperatorShares(address operator, address strategy, uint64 prevMaxMagnitude, uint64 newMaxMagnitude) returns()
+func (_IDelegationManager *IDelegationManagerSession) SlashOperatorShares(operator common.Address, strategy common.Address, prevMaxMagnitude uint64, newMaxMagnitude uint64) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.SlashOperatorShares(&_IDelegationManager.TransactOpts, operator, strategy, prevMaxMagnitude, newMaxMagnitude)
}
-// SetStrategyWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x1522bf02.
+// SlashOperatorShares is a paid mutator transaction binding the contract method 0x601bb36f.
//
-// Solidity: function setStrategyWithdrawalDelayBlocks(address[] strategies, uint256[] withdrawalDelayBlocks) returns()
-func (_IDelegationManager *IDelegationManagerTransactorSession) SetStrategyWithdrawalDelayBlocks(strategies []common.Address, withdrawalDelayBlocks []*big.Int) (*types.Transaction, error) {
- return _IDelegationManager.Contract.SetStrategyWithdrawalDelayBlocks(&_IDelegationManager.TransactOpts, strategies, withdrawalDelayBlocks)
+// Solidity: function slashOperatorShares(address operator, address strategy, uint64 prevMaxMagnitude, uint64 newMaxMagnitude) returns()
+func (_IDelegationManager *IDelegationManagerTransactorSession) SlashOperatorShares(operator common.Address, strategy common.Address, prevMaxMagnitude uint64, newMaxMagnitude uint64) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.SlashOperatorShares(&_IDelegationManager.TransactOpts, operator, strategy, prevMaxMagnitude, newMaxMagnitude)
}
// Undelegate is a paid mutator transaction binding the contract method 0xda8be864.
//
-// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoot)
+// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoots)
func (_IDelegationManager *IDelegationManagerTransactor) Undelegate(opts *bind.TransactOpts, staker common.Address) (*types.Transaction, error) {
return _IDelegationManager.contract.Transact(opts, "undelegate", staker)
}
// Undelegate is a paid mutator transaction binding the contract method 0xda8be864.
//
-// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoot)
+// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoots)
func (_IDelegationManager *IDelegationManagerSession) Undelegate(staker common.Address) (*types.Transaction, error) {
return _IDelegationManager.Contract.Undelegate(&_IDelegationManager.TransactOpts, staker)
}
// Undelegate is a paid mutator transaction binding the contract method 0xda8be864.
//
-// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoot)
+// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoots)
func (_IDelegationManager *IDelegationManagerTransactorSession) Undelegate(staker common.Address) (*types.Transaction, error) {
return _IDelegationManager.Contract.Undelegate(&_IDelegationManager.TransactOpts, staker)
}
-// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8.
+// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x78296ec5.
//
-// Solidity: function updateOperatorMetadataURI(string metadataURI) returns()
-func (_IDelegationManager *IDelegationManagerTransactor) UpdateOperatorMetadataURI(opts *bind.TransactOpts, metadataURI string) (*types.Transaction, error) {
- return _IDelegationManager.contract.Transact(opts, "updateOperatorMetadataURI", metadataURI)
+// Solidity: function updateOperatorMetadataURI(address operator, string metadataURI) returns()
+func (_IDelegationManager *IDelegationManagerTransactor) UpdateOperatorMetadataURI(opts *bind.TransactOpts, operator common.Address, metadataURI string) (*types.Transaction, error) {
+ return _IDelegationManager.contract.Transact(opts, "updateOperatorMetadataURI", operator, metadataURI)
}
-// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8.
+// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x78296ec5.
//
-// Solidity: function updateOperatorMetadataURI(string metadataURI) returns()
-func (_IDelegationManager *IDelegationManagerSession) UpdateOperatorMetadataURI(metadataURI string) (*types.Transaction, error) {
- return _IDelegationManager.Contract.UpdateOperatorMetadataURI(&_IDelegationManager.TransactOpts, metadataURI)
+// Solidity: function updateOperatorMetadataURI(address operator, string metadataURI) returns()
+func (_IDelegationManager *IDelegationManagerSession) UpdateOperatorMetadataURI(operator common.Address, metadataURI string) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.UpdateOperatorMetadataURI(&_IDelegationManager.TransactOpts, operator, metadataURI)
}
-// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8.
+// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x78296ec5.
//
-// Solidity: function updateOperatorMetadataURI(string metadataURI) returns()
-func (_IDelegationManager *IDelegationManagerTransactorSession) UpdateOperatorMetadataURI(metadataURI string) (*types.Transaction, error) {
- return _IDelegationManager.Contract.UpdateOperatorMetadataURI(&_IDelegationManager.TransactOpts, metadataURI)
+// Solidity: function updateOperatorMetadataURI(address operator, string metadataURI) returns()
+func (_IDelegationManager *IDelegationManagerTransactorSession) UpdateOperatorMetadataURI(operator common.Address, metadataURI string) (*types.Transaction, error) {
+ return _IDelegationManager.Contract.UpdateOperatorMetadataURI(&_IDelegationManager.TransactOpts, operator, metadataURI)
}
-// IDelegationManagerMinWithdrawalDelayBlocksSetIterator is returned from FilterMinWithdrawalDelayBlocksSet and is used to iterate over the raw logs and unpacked data for MinWithdrawalDelayBlocksSet events raised by the IDelegationManager contract.
-type IDelegationManagerMinWithdrawalDelayBlocksSetIterator struct {
- Event *IDelegationManagerMinWithdrawalDelayBlocksSet // Event containing the contract specifics and raw log
+// IDelegationManagerDelegationApproverUpdatedIterator is returned from FilterDelegationApproverUpdated and is used to iterate over the raw logs and unpacked data for DelegationApproverUpdated events raised by the IDelegationManager contract.
+type IDelegationManagerDelegationApproverUpdatedIterator struct {
+ Event *IDelegationManagerDelegationApproverUpdated // 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
@@ -1245,7 +1173,7 @@ type IDelegationManagerMinWithdrawalDelayBlocksSetIterator 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 *IDelegationManagerMinWithdrawalDelayBlocksSetIterator) Next() bool {
+func (it *IDelegationManagerDelegationApproverUpdatedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -1254,7 +1182,7 @@ func (it *IDelegationManagerMinWithdrawalDelayBlocksSetIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(IDelegationManagerMinWithdrawalDelayBlocksSet)
+ it.Event = new(IDelegationManagerDelegationApproverUpdated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1269,7 +1197,7 @@ func (it *IDelegationManagerMinWithdrawalDelayBlocksSetIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(IDelegationManagerMinWithdrawalDelayBlocksSet)
+ it.Event = new(IDelegationManagerDelegationApproverUpdated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1285,42 +1213,52 @@ func (it *IDelegationManagerMinWithdrawalDelayBlocksSetIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *IDelegationManagerMinWithdrawalDelayBlocksSetIterator) Error() error {
+func (it *IDelegationManagerDelegationApproverUpdatedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *IDelegationManagerMinWithdrawalDelayBlocksSetIterator) Close() error {
+func (it *IDelegationManagerDelegationApproverUpdatedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// IDelegationManagerMinWithdrawalDelayBlocksSet represents a MinWithdrawalDelayBlocksSet event raised by the IDelegationManager contract.
-type IDelegationManagerMinWithdrawalDelayBlocksSet struct {
- PreviousValue *big.Int
- NewValue *big.Int
- Raw types.Log // Blockchain specific contextual infos
+// IDelegationManagerDelegationApproverUpdated represents a DelegationApproverUpdated event raised by the IDelegationManager contract.
+type IDelegationManagerDelegationApproverUpdated struct {
+ Operator common.Address
+ NewDelegationApprover common.Address
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterMinWithdrawalDelayBlocksSet is a free log retrieval operation binding the contract event 0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69.
+// FilterDelegationApproverUpdated is a free log retrieval operation binding the contract event 0x773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6.
//
-// Solidity: event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue)
-func (_IDelegationManager *IDelegationManagerFilterer) FilterMinWithdrawalDelayBlocksSet(opts *bind.FilterOpts) (*IDelegationManagerMinWithdrawalDelayBlocksSetIterator, error) {
+// Solidity: event DelegationApproverUpdated(address indexed operator, address newDelegationApprover)
+func (_IDelegationManager *IDelegationManagerFilterer) FilterDelegationApproverUpdated(opts *bind.FilterOpts, operator []common.Address) (*IDelegationManagerDelegationApproverUpdatedIterator, error) {
+
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
- logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "MinWithdrawalDelayBlocksSet")
+ logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "DelegationApproverUpdated", operatorRule)
if err != nil {
return nil, err
}
- return &IDelegationManagerMinWithdrawalDelayBlocksSetIterator{contract: _IDelegationManager.contract, event: "MinWithdrawalDelayBlocksSet", logs: logs, sub: sub}, nil
+ return &IDelegationManagerDelegationApproverUpdatedIterator{contract: _IDelegationManager.contract, event: "DelegationApproverUpdated", logs: logs, sub: sub}, nil
}
-// WatchMinWithdrawalDelayBlocksSet is a free log subscription operation binding the contract event 0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69.
+// WatchDelegationApproverUpdated is a free log subscription operation binding the contract event 0x773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6.
//
-// Solidity: event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue)
-func (_IDelegationManager *IDelegationManagerFilterer) WatchMinWithdrawalDelayBlocksSet(opts *bind.WatchOpts, sink chan<- *IDelegationManagerMinWithdrawalDelayBlocksSet) (event.Subscription, error) {
+// Solidity: event DelegationApproverUpdated(address indexed operator, address newDelegationApprover)
+func (_IDelegationManager *IDelegationManagerFilterer) WatchDelegationApproverUpdated(opts *bind.WatchOpts, sink chan<- *IDelegationManagerDelegationApproverUpdated, operator []common.Address) (event.Subscription, error) {
+
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
+ }
- logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "MinWithdrawalDelayBlocksSet")
+ logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "DelegationApproverUpdated", operatorRule)
if err != nil {
return nil, err
}
@@ -1330,8 +1268,8 @@ func (_IDelegationManager *IDelegationManagerFilterer) WatchMinWithdrawalDelayBl
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(IDelegationManagerMinWithdrawalDelayBlocksSet)
- if err := _IDelegationManager.contract.UnpackLog(event, "MinWithdrawalDelayBlocksSet", log); err != nil {
+ event := new(IDelegationManagerDelegationApproverUpdated)
+ if err := _IDelegationManager.contract.UnpackLog(event, "DelegationApproverUpdated", log); err != nil {
return err
}
event.Raw = log
@@ -1352,21 +1290,21 @@ func (_IDelegationManager *IDelegationManagerFilterer) WatchMinWithdrawalDelayBl
}), nil
}
-// ParseMinWithdrawalDelayBlocksSet is a log parse operation binding the contract event 0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69.
+// ParseDelegationApproverUpdated is a log parse operation binding the contract event 0x773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6.
//
-// Solidity: event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue)
-func (_IDelegationManager *IDelegationManagerFilterer) ParseMinWithdrawalDelayBlocksSet(log types.Log) (*IDelegationManagerMinWithdrawalDelayBlocksSet, error) {
- event := new(IDelegationManagerMinWithdrawalDelayBlocksSet)
- if err := _IDelegationManager.contract.UnpackLog(event, "MinWithdrawalDelayBlocksSet", log); err != nil {
+// Solidity: event DelegationApproverUpdated(address indexed operator, address newDelegationApprover)
+func (_IDelegationManager *IDelegationManagerFilterer) ParseDelegationApproverUpdated(log types.Log) (*IDelegationManagerDelegationApproverUpdated, error) {
+ event := new(IDelegationManagerDelegationApproverUpdated)
+ if err := _IDelegationManager.contract.UnpackLog(event, "DelegationApproverUpdated", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// IDelegationManagerOperatorDetailsModifiedIterator is returned from FilterOperatorDetailsModified and is used to iterate over the raw logs and unpacked data for OperatorDetailsModified events raised by the IDelegationManager contract.
-type IDelegationManagerOperatorDetailsModifiedIterator struct {
- Event *IDelegationManagerOperatorDetailsModified // Event containing the contract specifics and raw log
+// IDelegationManagerDepositScalingFactorUpdatedIterator is returned from FilterDepositScalingFactorUpdated and is used to iterate over the raw logs and unpacked data for DepositScalingFactorUpdated events raised by the IDelegationManager contract.
+type IDelegationManagerDepositScalingFactorUpdatedIterator struct {
+ Event *IDelegationManagerDepositScalingFactorUpdated // 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
@@ -1380,7 +1318,7 @@ type IDelegationManagerOperatorDetailsModifiedIterator 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 *IDelegationManagerOperatorDetailsModifiedIterator) Next() bool {
+func (it *IDelegationManagerDepositScalingFactorUpdatedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -1389,7 +1327,7 @@ func (it *IDelegationManagerOperatorDetailsModifiedIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(IDelegationManagerOperatorDetailsModified)
+ it.Event = new(IDelegationManagerDepositScalingFactorUpdated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1404,7 +1342,7 @@ func (it *IDelegationManagerOperatorDetailsModifiedIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(IDelegationManagerOperatorDetailsModified)
+ it.Event = new(IDelegationManagerDepositScalingFactorUpdated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1420,52 +1358,43 @@ func (it *IDelegationManagerOperatorDetailsModifiedIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *IDelegationManagerOperatorDetailsModifiedIterator) Error() error {
+func (it *IDelegationManagerDepositScalingFactorUpdatedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *IDelegationManagerOperatorDetailsModifiedIterator) Close() error {
+func (it *IDelegationManagerDepositScalingFactorUpdatedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// IDelegationManagerOperatorDetailsModified represents a OperatorDetailsModified event raised by the IDelegationManager contract.
-type IDelegationManagerOperatorDetailsModified struct {
- Operator common.Address
- NewOperatorDetails IDelegationManagerOperatorDetails
- Raw types.Log // Blockchain specific contextual infos
+// IDelegationManagerDepositScalingFactorUpdated represents a DepositScalingFactorUpdated event raised by the IDelegationManager contract.
+type IDelegationManagerDepositScalingFactorUpdated struct {
+ Staker common.Address
+ Strategy common.Address
+ NewDepositScalingFactor *big.Int
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterOperatorDetailsModified is a free log retrieval operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac.
+// FilterDepositScalingFactorUpdated is a free log retrieval operation binding the contract event 0x8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f.
//
-// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails)
-func (_IDelegationManager *IDelegationManagerFilterer) FilterOperatorDetailsModified(opts *bind.FilterOpts, operator []common.Address) (*IDelegationManagerOperatorDetailsModifiedIterator, error) {
-
- var operatorRule []interface{}
- for _, operatorItem := range operator {
- operatorRule = append(operatorRule, operatorItem)
- }
+// Solidity: event DepositScalingFactorUpdated(address staker, address strategy, uint256 newDepositScalingFactor)
+func (_IDelegationManager *IDelegationManagerFilterer) FilterDepositScalingFactorUpdated(opts *bind.FilterOpts) (*IDelegationManagerDepositScalingFactorUpdatedIterator, error) {
- logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "OperatorDetailsModified", operatorRule)
+ logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "DepositScalingFactorUpdated")
if err != nil {
return nil, err
}
- return &IDelegationManagerOperatorDetailsModifiedIterator{contract: _IDelegationManager.contract, event: "OperatorDetailsModified", logs: logs, sub: sub}, nil
+ return &IDelegationManagerDepositScalingFactorUpdatedIterator{contract: _IDelegationManager.contract, event: "DepositScalingFactorUpdated", logs: logs, sub: sub}, nil
}
-// WatchOperatorDetailsModified is a free log subscription operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac.
+// WatchDepositScalingFactorUpdated is a free log subscription operation binding the contract event 0x8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f.
//
-// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails)
-func (_IDelegationManager *IDelegationManagerFilterer) WatchOperatorDetailsModified(opts *bind.WatchOpts, sink chan<- *IDelegationManagerOperatorDetailsModified, operator []common.Address) (event.Subscription, error) {
-
- var operatorRule []interface{}
- for _, operatorItem := range operator {
- operatorRule = append(operatorRule, operatorItem)
- }
+// Solidity: event DepositScalingFactorUpdated(address staker, address strategy, uint256 newDepositScalingFactor)
+func (_IDelegationManager *IDelegationManagerFilterer) WatchDepositScalingFactorUpdated(opts *bind.WatchOpts, sink chan<- *IDelegationManagerDepositScalingFactorUpdated) (event.Subscription, error) {
- logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "OperatorDetailsModified", operatorRule)
+ logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "DepositScalingFactorUpdated")
if err != nil {
return nil, err
}
@@ -1475,8 +1404,8 @@ func (_IDelegationManager *IDelegationManagerFilterer) WatchOperatorDetailsModif
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(IDelegationManagerOperatorDetailsModified)
- if err := _IDelegationManager.contract.UnpackLog(event, "OperatorDetailsModified", log); err != nil {
+ event := new(IDelegationManagerDepositScalingFactorUpdated)
+ if err := _IDelegationManager.contract.UnpackLog(event, "DepositScalingFactorUpdated", log); err != nil {
return err
}
event.Raw = log
@@ -1497,12 +1426,12 @@ func (_IDelegationManager *IDelegationManagerFilterer) WatchOperatorDetailsModif
}), nil
}
-// ParseOperatorDetailsModified is a log parse operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac.
+// ParseDepositScalingFactorUpdated is a log parse operation binding the contract event 0x8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f.
//
-// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails)
-func (_IDelegationManager *IDelegationManagerFilterer) ParseOperatorDetailsModified(log types.Log) (*IDelegationManagerOperatorDetailsModified, error) {
- event := new(IDelegationManagerOperatorDetailsModified)
- if err := _IDelegationManager.contract.UnpackLog(event, "OperatorDetailsModified", log); err != nil {
+// Solidity: event DepositScalingFactorUpdated(address staker, address strategy, uint256 newDepositScalingFactor)
+func (_IDelegationManager *IDelegationManagerFilterer) ParseDepositScalingFactorUpdated(log types.Log) (*IDelegationManagerDepositScalingFactorUpdated, error) {
+ event := new(IDelegationManagerDepositScalingFactorUpdated)
+ if err := _IDelegationManager.contract.UnpackLog(event, "DepositScalingFactorUpdated", log); err != nil {
return nil, err
}
event.Raw = log
@@ -1723,14 +1652,14 @@ func (it *IDelegationManagerOperatorRegisteredIterator) Close() error {
// IDelegationManagerOperatorRegistered represents a OperatorRegistered event raised by the IDelegationManager contract.
type IDelegationManagerOperatorRegistered struct {
- Operator common.Address
- OperatorDetails IDelegationManagerOperatorDetails
- Raw types.Log // Blockchain specific contextual infos
+ Operator common.Address
+ DelegationApprover common.Address
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2.
+// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0xa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c1.
//
-// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails)
+// Solidity: event OperatorRegistered(address indexed operator, address delegationApprover)
func (_IDelegationManager *IDelegationManagerFilterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address) (*IDelegationManagerOperatorRegisteredIterator, error) {
var operatorRule []interface{}
@@ -1745,9 +1674,9 @@ func (_IDelegationManager *IDelegationManagerFilterer) FilterOperatorRegistered(
return &IDelegationManagerOperatorRegisteredIterator{contract: _IDelegationManager.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil
}
-// WatchOperatorRegistered is a free log subscription operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2.
+// WatchOperatorRegistered is a free log subscription operation binding the contract event 0xa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c1.
//
-// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails)
+// Solidity: event OperatorRegistered(address indexed operator, address delegationApprover)
func (_IDelegationManager *IDelegationManagerFilterer) WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *IDelegationManagerOperatorRegistered, operator []common.Address) (event.Subscription, error) {
var operatorRule []interface{}
@@ -1787,9 +1716,9 @@ func (_IDelegationManager *IDelegationManagerFilterer) WatchOperatorRegistered(o
}), nil
}
-// ParseOperatorRegistered is a log parse operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2.
+// ParseOperatorRegistered is a log parse operation binding the contract event 0xa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c1.
//
-// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails)
+// Solidity: event OperatorRegistered(address indexed operator, address delegationApprover)
func (_IDelegationManager *IDelegationManagerFilterer) ParseOperatorRegistered(log types.Log) (*IDelegationManagerOperatorRegistered, error) {
event := new(IDelegationManagerOperatorRegistered)
if err := _IDelegationManager.contract.UnpackLog(event, "OperatorRegistered", log); err != nil {
@@ -2093,9 +2022,9 @@ func (_IDelegationManager *IDelegationManagerFilterer) ParseOperatorSharesIncrea
return event, nil
}
-// IDelegationManagerStakerDelegatedIterator is returned from FilterStakerDelegated and is used to iterate over the raw logs and unpacked data for StakerDelegated events raised by the IDelegationManager contract.
-type IDelegationManagerStakerDelegatedIterator struct {
- Event *IDelegationManagerStakerDelegated // Event containing the contract specifics and raw log
+// IDelegationManagerSlashingWithdrawalCompletedIterator is returned from FilterSlashingWithdrawalCompleted and is used to iterate over the raw logs and unpacked data for SlashingWithdrawalCompleted events raised by the IDelegationManager contract.
+type IDelegationManagerSlashingWithdrawalCompletedIterator struct {
+ Event *IDelegationManagerSlashingWithdrawalCompleted // 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
@@ -2109,7 +2038,7 @@ type IDelegationManagerStakerDelegatedIterator 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 *IDelegationManagerStakerDelegatedIterator) Next() bool {
+func (it *IDelegationManagerSlashingWithdrawalCompletedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -2118,7 +2047,7 @@ func (it *IDelegationManagerStakerDelegatedIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(IDelegationManagerStakerDelegated)
+ it.Event = new(IDelegationManagerSlashingWithdrawalCompleted)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2133,7 +2062,7 @@ func (it *IDelegationManagerStakerDelegatedIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(IDelegationManagerStakerDelegated)
+ it.Event = new(IDelegationManagerSlashingWithdrawalCompleted)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2149,60 +2078,41 @@ func (it *IDelegationManagerStakerDelegatedIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *IDelegationManagerStakerDelegatedIterator) Error() error {
+func (it *IDelegationManagerSlashingWithdrawalCompletedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *IDelegationManagerStakerDelegatedIterator) Close() error {
+func (it *IDelegationManagerSlashingWithdrawalCompletedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// IDelegationManagerStakerDelegated represents a StakerDelegated event raised by the IDelegationManager contract.
-type IDelegationManagerStakerDelegated struct {
- Staker common.Address
- Operator common.Address
- Raw types.Log // Blockchain specific contextual infos
+// IDelegationManagerSlashingWithdrawalCompleted represents a SlashingWithdrawalCompleted event raised by the IDelegationManager contract.
+type IDelegationManagerSlashingWithdrawalCompleted 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 (_IDelegationManager *IDelegationManagerFilterer) FilterStakerDelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*IDelegationManagerStakerDelegatedIterator, 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 (_IDelegationManager *IDelegationManagerFilterer) FilterSlashingWithdrawalCompleted(opts *bind.FilterOpts) (*IDelegationManagerSlashingWithdrawalCompletedIterator, error) {
- logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "StakerDelegated", stakerRule, operatorRule)
+ logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "SlashingWithdrawalCompleted")
if err != nil {
return nil, err
}
- return &IDelegationManagerStakerDelegatedIterator{contract: _IDelegationManager.contract, event: "StakerDelegated", logs: logs, sub: sub}, nil
+ return &IDelegationManagerSlashingWithdrawalCompletedIterator{contract: _IDelegationManager.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 (_IDelegationManager *IDelegationManagerFilterer) WatchStakerDelegated(opts *bind.WatchOpts, sink chan<- *IDelegationManagerStakerDelegated, 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 SlashingWithdrawalCompleted(bytes32 withdrawalRoot)
+func (_IDelegationManager *IDelegationManagerFilterer) WatchSlashingWithdrawalCompleted(opts *bind.WatchOpts, sink chan<- *IDelegationManagerSlashingWithdrawalCompleted) (event.Subscription, error) {
- logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "StakerDelegated", stakerRule, operatorRule)
+ logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "SlashingWithdrawalCompleted")
if err != nil {
return nil, err
}
@@ -2212,8 +2122,8 @@ func (_IDelegationManager *IDelegationManagerFilterer) WatchStakerDelegated(opts
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(IDelegationManagerStakerDelegated)
- if err := _IDelegationManager.contract.UnpackLog(event, "StakerDelegated", log); err != nil {
+ event := new(IDelegationManagerSlashingWithdrawalCompleted)
+ if err := _IDelegationManager.contract.UnpackLog(event, "SlashingWithdrawalCompleted", log); err != nil {
return err
}
event.Raw = log
@@ -2234,21 +2144,21 @@ func (_IDelegationManager *IDelegationManagerFilterer) WatchStakerDelegated(opts
}), 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 (_IDelegationManager *IDelegationManagerFilterer) ParseStakerDelegated(log types.Log) (*IDelegationManagerStakerDelegated, error) {
- event := new(IDelegationManagerStakerDelegated)
- if err := _IDelegationManager.contract.UnpackLog(event, "StakerDelegated", log); err != nil {
+// Solidity: event SlashingWithdrawalCompleted(bytes32 withdrawalRoot)
+func (_IDelegationManager *IDelegationManagerFilterer) ParseSlashingWithdrawalCompleted(log types.Log) (*IDelegationManagerSlashingWithdrawalCompleted, error) {
+ event := new(IDelegationManagerSlashingWithdrawalCompleted)
+ if err := _IDelegationManager.contract.UnpackLog(event, "SlashingWithdrawalCompleted", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// IDelegationManagerStakerForceUndelegatedIterator is returned from FilterStakerForceUndelegated and is used to iterate over the raw logs and unpacked data for StakerForceUndelegated events raised by the IDelegationManager contract.
-type IDelegationManagerStakerForceUndelegatedIterator struct {
- Event *IDelegationManagerStakerForceUndelegated // Event containing the contract specifics and raw log
+// IDelegationManagerSlashingWithdrawalQueuedIterator is returned from FilterSlashingWithdrawalQueued and is used to iterate over the raw logs and unpacked data for SlashingWithdrawalQueued events raised by the IDelegationManager contract.
+type IDelegationManagerSlashingWithdrawalQueuedIterator struct {
+ Event *IDelegationManagerSlashingWithdrawalQueued // 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
@@ -2262,7 +2172,7 @@ type IDelegationManagerStakerForceUndelegatedIterator 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 *IDelegationManagerStakerForceUndelegatedIterator) Next() bool {
+func (it *IDelegationManagerSlashingWithdrawalQueuedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -2271,7 +2181,7 @@ func (it *IDelegationManagerStakerForceUndelegatedIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(IDelegationManagerStakerForceUndelegated)
+ it.Event = new(IDelegationManagerSlashingWithdrawalQueued)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2286,7 +2196,7 @@ func (it *IDelegationManagerStakerForceUndelegatedIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(IDelegationManagerStakerForceUndelegated)
+ it.Event = new(IDelegationManagerSlashingWithdrawalQueued)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2302,60 +2212,43 @@ func (it *IDelegationManagerStakerForceUndelegatedIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *IDelegationManagerStakerForceUndelegatedIterator) Error() error {
+func (it *IDelegationManagerSlashingWithdrawalQueuedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *IDelegationManagerStakerForceUndelegatedIterator) Close() error {
+func (it *IDelegationManagerSlashingWithdrawalQueuedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// IDelegationManagerStakerForceUndelegated represents a StakerForceUndelegated event raised by the IDelegationManager contract.
-type IDelegationManagerStakerForceUndelegated struct {
- Staker common.Address
- Operator common.Address
- Raw types.Log // Blockchain specific contextual infos
+// IDelegationManagerSlashingWithdrawalQueued represents a SlashingWithdrawalQueued event raised by the IDelegationManager contract.
+type IDelegationManagerSlashingWithdrawalQueued struct {
+ WithdrawalRoot [32]byte
+ Withdrawal IDelegationManagerTypesWithdrawal
+ SharesToWithdraw []*big.Int
+ 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 0x26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30.
//
-// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator)
-func (_IDelegationManager *IDelegationManagerFilterer) FilterStakerForceUndelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*IDelegationManagerStakerForceUndelegatedIterator, 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, uint256[] sharesToWithdraw)
+func (_IDelegationManager *IDelegationManagerFilterer) FilterSlashingWithdrawalQueued(opts *bind.FilterOpts) (*IDelegationManagerSlashingWithdrawalQueuedIterator, error) {
- logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule)
+ logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "SlashingWithdrawalQueued")
if err != nil {
return nil, err
}
- return &IDelegationManagerStakerForceUndelegatedIterator{contract: _IDelegationManager.contract, event: "StakerForceUndelegated", logs: logs, sub: sub}, nil
+ return &IDelegationManagerSlashingWithdrawalQueuedIterator{contract: _IDelegationManager.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 0x26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30.
//
-// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator)
-func (_IDelegationManager *IDelegationManagerFilterer) WatchStakerForceUndelegated(opts *bind.WatchOpts, sink chan<- *IDelegationManagerStakerForceUndelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) {
+// Solidity: event SlashingWithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal, uint256[] sharesToWithdraw)
+func (_IDelegationManager *IDelegationManagerFilterer) WatchSlashingWithdrawalQueued(opts *bind.WatchOpts, sink chan<- *IDelegationManagerSlashingWithdrawalQueued) (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 := _IDelegationManager.contract.WatchLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule)
+ logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "SlashingWithdrawalQueued")
if err != nil {
return nil, err
}
@@ -2365,8 +2258,8 @@ func (_IDelegationManager *IDelegationManagerFilterer) WatchStakerForceUndelegat
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(IDelegationManagerStakerForceUndelegated)
- if err := _IDelegationManager.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil {
+ event := new(IDelegationManagerSlashingWithdrawalQueued)
+ if err := _IDelegationManager.contract.UnpackLog(event, "SlashingWithdrawalQueued", log); err != nil {
return err
}
event.Raw = log
@@ -2387,21 +2280,21 @@ func (_IDelegationManager *IDelegationManagerFilterer) WatchStakerForceUndelegat
}), nil
}
-// ParseStakerForceUndelegated is a log parse operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a.
+// ParseSlashingWithdrawalQueued is a log parse operation binding the contract event 0x26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30.
//
-// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator)
-func (_IDelegationManager *IDelegationManagerFilterer) ParseStakerForceUndelegated(log types.Log) (*IDelegationManagerStakerForceUndelegated, error) {
- event := new(IDelegationManagerStakerForceUndelegated)
- if err := _IDelegationManager.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil {
+// Solidity: event SlashingWithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal, uint256[] sharesToWithdraw)
+func (_IDelegationManager *IDelegationManagerFilterer) ParseSlashingWithdrawalQueued(log types.Log) (*IDelegationManagerSlashingWithdrawalQueued, error) {
+ event := new(IDelegationManagerSlashingWithdrawalQueued)
+ if err := _IDelegationManager.contract.UnpackLog(event, "SlashingWithdrawalQueued", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// IDelegationManagerStakerUndelegatedIterator is returned from FilterStakerUndelegated and is used to iterate over the raw logs and unpacked data for StakerUndelegated events raised by the IDelegationManager contract.
-type IDelegationManagerStakerUndelegatedIterator struct {
- Event *IDelegationManagerStakerUndelegated // Event containing the contract specifics and raw log
+// IDelegationManagerStakerDelegatedIterator is returned from FilterStakerDelegated and is used to iterate over the raw logs and unpacked data for StakerDelegated events raised by the IDelegationManager contract.
+type IDelegationManagerStakerDelegatedIterator struct {
+ Event *IDelegationManagerStakerDelegated // 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
@@ -2415,7 +2308,7 @@ type IDelegationManagerStakerUndelegatedIterator 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 *IDelegationManagerStakerUndelegatedIterator) Next() bool {
+func (it *IDelegationManagerStakerDelegatedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -2424,7 +2317,7 @@ func (it *IDelegationManagerStakerUndelegatedIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(IDelegationManagerStakerUndelegated)
+ it.Event = new(IDelegationManagerStakerDelegated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2439,7 +2332,7 @@ func (it *IDelegationManagerStakerUndelegatedIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(IDelegationManagerStakerUndelegated)
+ it.Event = new(IDelegationManagerStakerDelegated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2455,28 +2348,28 @@ func (it *IDelegationManagerStakerUndelegatedIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *IDelegationManagerStakerUndelegatedIterator) Error() error {
+func (it *IDelegationManagerStakerDelegatedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *IDelegationManagerStakerUndelegatedIterator) Close() error {
+func (it *IDelegationManagerStakerDelegatedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// IDelegationManagerStakerUndelegated represents a StakerUndelegated event raised by the IDelegationManager contract.
-type IDelegationManagerStakerUndelegated struct {
+// IDelegationManagerStakerDelegated represents a StakerDelegated event raised by the IDelegationManager contract.
+type IDelegationManagerStakerDelegated 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 (_IDelegationManager *IDelegationManagerFilterer) FilterStakerUndelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*IDelegationManagerStakerUndelegatedIterator, error) {
+// Solidity: event StakerDelegated(address indexed staker, address indexed operator)
+func (_IDelegationManager *IDelegationManagerFilterer) FilterStakerDelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*IDelegationManagerStakerDelegatedIterator, error) {
var stakerRule []interface{}
for _, stakerItem := range staker {
@@ -2487,17 +2380,17 @@ func (_IDelegationManager *IDelegationManagerFilterer) FilterStakerUndelegated(o
operatorRule = append(operatorRule, operatorItem)
}
- logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "StakerUndelegated", stakerRule, operatorRule)
+ logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "StakerDelegated", stakerRule, operatorRule)
if err != nil {
return nil, err
}
- return &IDelegationManagerStakerUndelegatedIterator{contract: _IDelegationManager.contract, event: "StakerUndelegated", logs: logs, sub: sub}, nil
+ return &IDelegationManagerStakerDelegatedIterator{contract: _IDelegationManager.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 (_IDelegationManager *IDelegationManagerFilterer) WatchStakerUndelegated(opts *bind.WatchOpts, sink chan<- *IDelegationManagerStakerUndelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) {
+// Solidity: event StakerDelegated(address indexed staker, address indexed operator)
+func (_IDelegationManager *IDelegationManagerFilterer) WatchStakerDelegated(opts *bind.WatchOpts, sink chan<- *IDelegationManagerStakerDelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) {
var stakerRule []interface{}
for _, stakerItem := range staker {
@@ -2508,7 +2401,7 @@ func (_IDelegationManager *IDelegationManagerFilterer) WatchStakerUndelegated(op
operatorRule = append(operatorRule, operatorItem)
}
- logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "StakerUndelegated", stakerRule, operatorRule)
+ logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "StakerDelegated", stakerRule, operatorRule)
if err != nil {
return nil, err
}
@@ -2518,8 +2411,8 @@ func (_IDelegationManager *IDelegationManagerFilterer) WatchStakerUndelegated(op
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(IDelegationManagerStakerUndelegated)
- if err := _IDelegationManager.contract.UnpackLog(event, "StakerUndelegated", log); err != nil {
+ event := new(IDelegationManagerStakerDelegated)
+ if err := _IDelegationManager.contract.UnpackLog(event, "StakerDelegated", log); err != nil {
return err
}
event.Raw = log
@@ -2540,21 +2433,21 @@ func (_IDelegationManager *IDelegationManagerFilterer) WatchStakerUndelegated(op
}), 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 (_IDelegationManager *IDelegationManagerFilterer) ParseStakerUndelegated(log types.Log) (*IDelegationManagerStakerUndelegated, error) {
- event := new(IDelegationManagerStakerUndelegated)
- if err := _IDelegationManager.contract.UnpackLog(event, "StakerUndelegated", log); err != nil {
+// Solidity: event StakerDelegated(address indexed staker, address indexed operator)
+func (_IDelegationManager *IDelegationManagerFilterer) ParseStakerDelegated(log types.Log) (*IDelegationManagerStakerDelegated, error) {
+ event := new(IDelegationManagerStakerDelegated)
+ if err := _IDelegationManager.contract.UnpackLog(event, "StakerDelegated", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// IDelegationManagerStrategyWithdrawalDelayBlocksSetIterator is returned from FilterStrategyWithdrawalDelayBlocksSet and is used to iterate over the raw logs and unpacked data for StrategyWithdrawalDelayBlocksSet events raised by the IDelegationManager contract.
-type IDelegationManagerStrategyWithdrawalDelayBlocksSetIterator struct {
- Event *IDelegationManagerStrategyWithdrawalDelayBlocksSet // Event containing the contract specifics and raw log
+// IDelegationManagerStakerForceUndelegatedIterator is returned from FilterStakerForceUndelegated and is used to iterate over the raw logs and unpacked data for StakerForceUndelegated events raised by the IDelegationManager contract.
+type IDelegationManagerStakerForceUndelegatedIterator struct {
+ Event *IDelegationManagerStakerForceUndelegated // 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
@@ -2568,7 +2461,7 @@ type IDelegationManagerStrategyWithdrawalDelayBlocksSetIterator 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 *IDelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Next() bool {
+func (it *IDelegationManagerStakerForceUndelegatedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -2577,7 +2470,7 @@ func (it *IDelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Next() boo
if it.done {
select {
case log := <-it.logs:
- it.Event = new(IDelegationManagerStrategyWithdrawalDelayBlocksSet)
+ it.Event = new(IDelegationManagerStakerForceUndelegated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2592,7 +2485,7 @@ func (it *IDelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Next() boo
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(IDelegationManagerStrategyWithdrawalDelayBlocksSet)
+ it.Event = new(IDelegationManagerStakerForceUndelegated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2608,177 +2501,60 @@ func (it *IDelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Next() boo
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *IDelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Error() error {
+func (it *IDelegationManagerStakerForceUndelegatedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *IDelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Close() error {
+func (it *IDelegationManagerStakerForceUndelegatedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// IDelegationManagerStrategyWithdrawalDelayBlocksSet represents a StrategyWithdrawalDelayBlocksSet event raised by the IDelegationManager contract.
-type IDelegationManagerStrategyWithdrawalDelayBlocksSet struct {
- Strategy common.Address
- PreviousValue *big.Int
- NewValue *big.Int
- Raw types.Log // Blockchain specific contextual infos
+// IDelegationManagerStakerForceUndelegated represents a StakerForceUndelegated event raised by the IDelegationManager contract.
+type IDelegationManagerStakerForceUndelegated 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 (_IDelegationManager *IDelegationManagerFilterer) FilterStrategyWithdrawalDelayBlocksSet(opts *bind.FilterOpts) (*IDelegationManagerStrategyWithdrawalDelayBlocksSetIterator, error) {
+// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator)
+func (_IDelegationManager *IDelegationManagerFilterer) FilterStakerForceUndelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*IDelegationManagerStakerForceUndelegatedIterator, error) {
- logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "StrategyWithdrawalDelayBlocksSet")
- if err != nil {
- return nil, err
+ var stakerRule []interface{}
+ for _, stakerItem := range staker {
+ stakerRule = append(stakerRule, stakerItem)
+ }
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
}
- return &IDelegationManagerStrategyWithdrawalDelayBlocksSetIterator{contract: _IDelegationManager.contract, event: "StrategyWithdrawalDelayBlocksSet", logs: logs, sub: sub}, nil
-}
-
-// WatchStrategyWithdrawalDelayBlocksSet is a free log subscription operation binding the contract event 0x0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d.
-//
-// Solidity: event StrategyWithdrawalDelayBlocksSet(address strategy, uint256 previousValue, uint256 newValue)
-func (_IDelegationManager *IDelegationManagerFilterer) WatchStrategyWithdrawalDelayBlocksSet(opts *bind.WatchOpts, sink chan<- *IDelegationManagerStrategyWithdrawalDelayBlocksSet) (event.Subscription, error) {
- logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "StrategyWithdrawalDelayBlocksSet")
+ logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule)
if err != nil {
return nil, err
}
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(IDelegationManagerStrategyWithdrawalDelayBlocksSet)
- if err := _IDelegationManager.contract.UnpackLog(event, "StrategyWithdrawalDelayBlocksSet", 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
+ return &IDelegationManagerStakerForceUndelegatedIterator{contract: _IDelegationManager.contract, event: "StakerForceUndelegated", logs: logs, sub: sub}, nil
}
-// ParseStrategyWithdrawalDelayBlocksSet is a log parse 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 (_IDelegationManager *IDelegationManagerFilterer) ParseStrategyWithdrawalDelayBlocksSet(log types.Log) (*IDelegationManagerStrategyWithdrawalDelayBlocksSet, error) {
- event := new(IDelegationManagerStrategyWithdrawalDelayBlocksSet)
- if err := _IDelegationManager.contract.UnpackLog(event, "StrategyWithdrawalDelayBlocksSet", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
-// IDelegationManagerWithdrawalCompletedIterator is returned from FilterWithdrawalCompleted and is used to iterate over the raw logs and unpacked data for WithdrawalCompleted events raised by the IDelegationManager contract.
-type IDelegationManagerWithdrawalCompletedIterator struct {
- Event *IDelegationManagerWithdrawalCompleted // 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 *IDelegationManagerWithdrawalCompletedIterator) 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(IDelegationManagerWithdrawalCompleted)
- 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(IDelegationManagerWithdrawalCompleted)
- if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
- it.fail = err
- return false
- }
- it.Event.Raw = log
- return true
+// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator)
+func (_IDelegationManager *IDelegationManagerFilterer) WatchStakerForceUndelegated(opts *bind.WatchOpts, sink chan<- *IDelegationManagerStakerForceUndelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) {
- case err := <-it.sub.Err():
- it.done = true
- it.fail = err
- return it.Next()
+ var stakerRule []interface{}
+ for _, stakerItem := range staker {
+ stakerRule = append(stakerRule, stakerItem)
}
-}
-
-// Error returns any retrieval or parsing error occurred during filtering.
-func (it *IDelegationManagerWithdrawalCompletedIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *IDelegationManagerWithdrawalCompletedIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// IDelegationManagerWithdrawalCompleted represents a WithdrawalCompleted event raised by the IDelegationManager contract.
-type IDelegationManagerWithdrawalCompleted struct {
- WithdrawalRoot [32]byte
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterWithdrawalCompleted is a free log retrieval operation binding the contract event 0xc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d.
-//
-// Solidity: event WithdrawalCompleted(bytes32 withdrawalRoot)
-func (_IDelegationManager *IDelegationManagerFilterer) FilterWithdrawalCompleted(opts *bind.FilterOpts) (*IDelegationManagerWithdrawalCompletedIterator, error) {
-
- logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "WithdrawalCompleted")
- if err != nil {
- return nil, err
+ var operatorRule []interface{}
+ for _, operatorItem := range operator {
+ operatorRule = append(operatorRule, operatorItem)
}
- return &IDelegationManagerWithdrawalCompletedIterator{contract: _IDelegationManager.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 (_IDelegationManager *IDelegationManagerFilterer) WatchWithdrawalCompleted(opts *bind.WatchOpts, sink chan<- *IDelegationManagerWithdrawalCompleted) (event.Subscription, error) {
- logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "WithdrawalCompleted")
+ logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule)
if err != nil {
return nil, err
}
@@ -2788,8 +2564,8 @@ func (_IDelegationManager *IDelegationManagerFilterer) WatchWithdrawalCompleted(
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(IDelegationManagerWithdrawalCompleted)
- if err := _IDelegationManager.contract.UnpackLog(event, "WithdrawalCompleted", log); err != nil {
+ event := new(IDelegationManagerStakerForceUndelegated)
+ if err := _IDelegationManager.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil {
return err
}
event.Raw = log
@@ -2810,21 +2586,21 @@ func (_IDelegationManager *IDelegationManagerFilterer) WatchWithdrawalCompleted(
}), nil
}
-// ParseWithdrawalCompleted is a log parse operation binding the contract event 0xc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d.
+// ParseStakerForceUndelegated is a log parse operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a.
//
-// Solidity: event WithdrawalCompleted(bytes32 withdrawalRoot)
-func (_IDelegationManager *IDelegationManagerFilterer) ParseWithdrawalCompleted(log types.Log) (*IDelegationManagerWithdrawalCompleted, error) {
- event := new(IDelegationManagerWithdrawalCompleted)
- if err := _IDelegationManager.contract.UnpackLog(event, "WithdrawalCompleted", log); err != nil {
+// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator)
+func (_IDelegationManager *IDelegationManagerFilterer) ParseStakerForceUndelegated(log types.Log) (*IDelegationManagerStakerForceUndelegated, error) {
+ event := new(IDelegationManagerStakerForceUndelegated)
+ if err := _IDelegationManager.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// IDelegationManagerWithdrawalQueuedIterator is returned from FilterWithdrawalQueued and is used to iterate over the raw logs and unpacked data for WithdrawalQueued events raised by the IDelegationManager contract.
-type IDelegationManagerWithdrawalQueuedIterator struct {
- Event *IDelegationManagerWithdrawalQueued // Event containing the contract specifics and raw log
+// IDelegationManagerStakerUndelegatedIterator is returned from FilterStakerUndelegated and is used to iterate over the raw logs and unpacked data for StakerUndelegated events raised by the IDelegationManager contract.
+type IDelegationManagerStakerUndelegatedIterator struct {
+ Event *IDelegationManagerStakerUndelegated // 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
@@ -2838,7 +2614,7 @@ type IDelegationManagerWithdrawalQueuedIterator 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 *IDelegationManagerWithdrawalQueuedIterator) Next() bool {
+func (it *IDelegationManagerStakerUndelegatedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -2847,7 +2623,7 @@ func (it *IDelegationManagerWithdrawalQueuedIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(IDelegationManagerWithdrawalQueued)
+ it.Event = new(IDelegationManagerStakerUndelegated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2862,7 +2638,7 @@ func (it *IDelegationManagerWithdrawalQueuedIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(IDelegationManagerWithdrawalQueued)
+ it.Event = new(IDelegationManagerStakerUndelegated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2878,42 +2654,60 @@ func (it *IDelegationManagerWithdrawalQueuedIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *IDelegationManagerWithdrawalQueuedIterator) Error() error {
+func (it *IDelegationManagerStakerUndelegatedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *IDelegationManagerWithdrawalQueuedIterator) Close() error {
+func (it *IDelegationManagerStakerUndelegatedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// IDelegationManagerWithdrawalQueued represents a WithdrawalQueued event raised by the IDelegationManager contract.
-type IDelegationManagerWithdrawalQueued struct {
- WithdrawalRoot [32]byte
- Withdrawal IDelegationManagerWithdrawal
- Raw types.Log // Blockchain specific contextual infos
+// IDelegationManagerStakerUndelegated represents a StakerUndelegated event raised by the IDelegationManager contract.
+type IDelegationManagerStakerUndelegated struct {
+ Staker common.Address
+ Operator common.Address
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterWithdrawalQueued is a free log retrieval operation binding the contract event 0x9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9.
+// FilterStakerUndelegated is a free log retrieval operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676.
//
-// Solidity: event WithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal)
-func (_IDelegationManager *IDelegationManagerFilterer) FilterWithdrawalQueued(opts *bind.FilterOpts) (*IDelegationManagerWithdrawalQueuedIterator, error) {
+// Solidity: event StakerUndelegated(address indexed staker, address indexed operator)
+func (_IDelegationManager *IDelegationManagerFilterer) FilterStakerUndelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*IDelegationManagerStakerUndelegatedIterator, error) {
- logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "WithdrawalQueued")
+ 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 := _IDelegationManager.contract.FilterLogs(opts, "StakerUndelegated", stakerRule, operatorRule)
if err != nil {
return nil, err
}
- return &IDelegationManagerWithdrawalQueuedIterator{contract: _IDelegationManager.contract, event: "WithdrawalQueued", logs: logs, sub: sub}, nil
+ return &IDelegationManagerStakerUndelegatedIterator{contract: _IDelegationManager.contract, event: "StakerUndelegated", logs: logs, sub: sub}, nil
}
-// WatchWithdrawalQueued is a free log subscription operation binding the contract event 0x9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9.
+// WatchStakerUndelegated is a free log subscription operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676.
//
-// Solidity: event WithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal)
-func (_IDelegationManager *IDelegationManagerFilterer) WatchWithdrawalQueued(opts *bind.WatchOpts, sink chan<- *IDelegationManagerWithdrawalQueued) (event.Subscription, error) {
+// Solidity: event StakerUndelegated(address indexed staker, address indexed operator)
+func (_IDelegationManager *IDelegationManagerFilterer) WatchStakerUndelegated(opts *bind.WatchOpts, sink chan<- *IDelegationManagerStakerUndelegated, staker []common.Address, operator []common.Address) (event.Subscription, error) {
- logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "WithdrawalQueued")
+ 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 := _IDelegationManager.contract.WatchLogs(opts, "StakerUndelegated", stakerRule, operatorRule)
if err != nil {
return nil, err
}
@@ -2923,8 +2717,8 @@ func (_IDelegationManager *IDelegationManagerFilterer) WatchWithdrawalQueued(opt
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(IDelegationManagerWithdrawalQueued)
- if err := _IDelegationManager.contract.UnpackLog(event, "WithdrawalQueued", log); err != nil {
+ event := new(IDelegationManagerStakerUndelegated)
+ if err := _IDelegationManager.contract.UnpackLog(event, "StakerUndelegated", log); err != nil {
return err
}
event.Raw = log
@@ -2945,12 +2739,12 @@ func (_IDelegationManager *IDelegationManagerFilterer) WatchWithdrawalQueued(opt
}), nil
}
-// ParseWithdrawalQueued is a log parse operation binding the contract event 0x9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9.
+// ParseStakerUndelegated is a log parse operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676.
//
-// Solidity: event WithdrawalQueued(bytes32 withdrawalRoot, (address,address,address,uint256,uint32,address[],uint256[]) withdrawal)
-func (_IDelegationManager *IDelegationManagerFilterer) ParseWithdrawalQueued(log types.Log) (*IDelegationManagerWithdrawalQueued, error) {
- event := new(IDelegationManagerWithdrawalQueued)
- if err := _IDelegationManager.contract.UnpackLog(event, "WithdrawalQueued", log); err != nil {
+// Solidity: event StakerUndelegated(address indexed staker, address indexed operator)
+func (_IDelegationManager *IDelegationManagerFilterer) ParseStakerUndelegated(log types.Log) (*IDelegationManagerStakerUndelegated, error) {
+ event := new(IDelegationManagerStakerUndelegated)
+ if err := _IDelegationManager.contract.UnpackLog(event, "StakerUndelegated", log); err != nil {
return nil, err
}
event.Raw = log
diff --git a/pkg/bindings/IEigen/binding.go b/pkg/bindings/IEigen/binding.go
index db6e40cee3..a294ccb779 100644
--- a/pkg/bindings/IEigen/binding.go
+++ b/pkg/bindings/IEigen/binding.go
@@ -31,7 +31,7 @@ var (
// IEigenMetaData contains all meta data concerning the IEigen contract.
var IEigenMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"bEIGEN\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burnExtraTokens\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"clock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint48\",\"internalType\":\"uint48\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableTransferRestrictions\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAllowedFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"isAllowedFrom\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAllowedTo\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"isAllowedTo\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unwrap\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"wrap\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]",
+ ABI: "[{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"clock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint48\",\"internalType\":\"uint48\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableTransferRestrictions\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAllowedFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"isAllowedFrom\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAllowedTo\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"isAllowedTo\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unwrap\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"wrap\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]",
}
// IEigenABI is the input ABI used to generate the binding from.
@@ -242,37 +242,6 @@ func (_IEigen *IEigenCallerSession) Allowance(owner common.Address, spender comm
return _IEigen.Contract.Allowance(&_IEigen.CallOpts, owner, spender)
}
-// BEIGEN is a free data retrieval call binding the contract method 0x3f4da4c6.
-//
-// Solidity: function bEIGEN() view returns(address)
-func (_IEigen *IEigenCaller) BEIGEN(opts *bind.CallOpts) (common.Address, error) {
- var out []interface{}
- err := _IEigen.contract.Call(opts, &out, "bEIGEN")
-
- if err != nil {
- return *new(common.Address), err
- }
-
- out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
-
- return out0, err
-
-}
-
-// BEIGEN is a free data retrieval call binding the contract method 0x3f4da4c6.
-//
-// Solidity: function bEIGEN() view returns(address)
-func (_IEigen *IEigenSession) BEIGEN() (common.Address, error) {
- return _IEigen.Contract.BEIGEN(&_IEigen.CallOpts)
-}
-
-// BEIGEN is a free data retrieval call binding the contract method 0x3f4da4c6.
-//
-// Solidity: function bEIGEN() view returns(address)
-func (_IEigen *IEigenCallerSession) BEIGEN() (common.Address, error) {
- return _IEigen.Contract.BEIGEN(&_IEigen.CallOpts)
-}
-
// BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
//
// Solidity: function balanceOf(address account) view returns(uint256)
@@ -387,27 +356,6 @@ func (_IEigen *IEigenTransactorSession) Approve(spender common.Address, amount *
return _IEigen.Contract.Approve(&_IEigen.TransactOpts, spender, amount)
}
-// BurnExtraTokens is a paid mutator transaction binding the contract method 0x68fad504.
-//
-// Solidity: function burnExtraTokens() returns()
-func (_IEigen *IEigenTransactor) BurnExtraTokens(opts *bind.TransactOpts) (*types.Transaction, error) {
- return _IEigen.contract.Transact(opts, "burnExtraTokens")
-}
-
-// BurnExtraTokens is a paid mutator transaction binding the contract method 0x68fad504.
-//
-// Solidity: function burnExtraTokens() returns()
-func (_IEigen *IEigenSession) BurnExtraTokens() (*types.Transaction, error) {
- return _IEigen.Contract.BurnExtraTokens(&_IEigen.TransactOpts)
-}
-
-// BurnExtraTokens is a paid mutator transaction binding the contract method 0x68fad504.
-//
-// Solidity: function burnExtraTokens() returns()
-func (_IEigen *IEigenTransactorSession) BurnExtraTokens() (*types.Transaction, error) {
- return _IEigen.Contract.BurnExtraTokens(&_IEigen.TransactOpts)
-}
-
// DisableTransferRestrictions is a paid mutator transaction binding the contract method 0xeb415f45.
//
// Solidity: function disableTransferRestrictions() returns()
diff --git a/pkg/bindings/IEigenPod/binding.go b/pkg/bindings/IEigenPod/binding.go
index a07b039807..87a33c40bb 100644
--- a/pkg/bindings/IEigenPod/binding.go
+++ b/pkg/bindings/IEigenPod/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
+ PrevBeaconBalanceGwei 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,7 +73,7 @@ type IEigenPodValidatorInfo struct {
// IEigenPodMetaData contains all meta data concerning the IEigenPod contract.
var IEigenPodMetaData = &bind.MetaData{
- ABI: "[{\"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\":\"getParentBlockRoot\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner\",\"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\":\"amount\",\"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\":\"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}]",
+ ABI: "[{\"type\":\"function\",\"name\":\"activeValidatorCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkpointBalanceExitedGwei\",\"inputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentCheckpoint\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIEigenPodTypes.Checkpoint\",\"components\":[{\"name\":\"beaconBlockRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proofsRemaining\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"podBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"balanceDeltasGwei\",\"type\":\"int64\",\"internalType\":\"int64\"},{\"name\":\"prevBeaconBalanceGwei\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currentCheckpointTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getParentBlockRoot\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner\",\"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\":\"amount\",\"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\":\"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\":\"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\":\"InvalidPubKeyLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MsgValueNot32ETH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoActiveCheckpoint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoBalanceToCheckpoint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodOwner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPodOwnerOrProofSubmitter\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TimestampOutOfRange\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorInactiveOnBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorIsExitingBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorNotActiveInPod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorNotSlashedOnBeaconChain\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalCredentialsNotForEigenPod\",\"inputs\":[]}]",
}
// IEigenPodABI is the input ABI used to generate the binding from.
@@ -285,16 +286,16 @@ func (_IEigenPod *IEigenPodCallerSession) CheckpointBalanceExitedGwei(arg0 uint6
// CurrentCheckpoint is a free data retrieval call binding the contract method 0x47d28372.
//
-// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int128))
-func (_IEigenPod *IEigenPodCaller) CurrentCheckpoint(opts *bind.CallOpts) (IEigenPodCheckpoint, error) {
+// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int64,uint64))
+func (_IEigenPod *IEigenPodCaller) CurrentCheckpoint(opts *bind.CallOpts) (IEigenPodTypesCheckpoint, error) {
var out []interface{}
err := _IEigenPod.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
@@ -302,15 +303,15 @@ func (_IEigenPod *IEigenPodCaller) CurrentCheckpoint(opts *bind.CallOpts) (IEige
// CurrentCheckpoint is a free data retrieval call binding the contract method 0x47d28372.
//
-// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int128))
-func (_IEigenPod *IEigenPodSession) CurrentCheckpoint() (IEigenPodCheckpoint, error) {
+// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int64,uint64))
+func (_IEigenPod *IEigenPodSession) CurrentCheckpoint() (IEigenPodTypesCheckpoint, error) {
return _IEigenPod.Contract.CurrentCheckpoint(&_IEigenPod.CallOpts)
}
// CurrentCheckpoint is a free data retrieval call binding the contract method 0x47d28372.
//
-// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int128))
-func (_IEigenPod *IEigenPodCallerSession) CurrentCheckpoint() (IEigenPodCheckpoint, error) {
+// Solidity: function currentCheckpoint() view returns((bytes32,uint24,uint64,int64,uint64))
+func (_IEigenPod *IEigenPodCallerSession) CurrentCheckpoint() (IEigenPodTypesCheckpoint, error) {
return _IEigenPod.Contract.CurrentCheckpoint(&_IEigenPod.CallOpts)
}
@@ -503,15 +504,15 @@ func (_IEigenPod *IEigenPodCallerSession) ProofSubmitter() (common.Address, erro
// ValidatorPubkeyHashToInfo is a free data retrieval call binding the contract method 0x6fcd0e53.
//
// Solidity: function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) view returns((uint64,uint64,uint64,uint8))
-func (_IEigenPod *IEigenPodCaller) ValidatorPubkeyHashToInfo(opts *bind.CallOpts, validatorPubkeyHash [32]byte) (IEigenPodValidatorInfo, error) {
+func (_IEigenPod *IEigenPodCaller) ValidatorPubkeyHashToInfo(opts *bind.CallOpts, validatorPubkeyHash [32]byte) (IEigenPodTypesValidatorInfo, error) {
var out []interface{}
err := _IEigenPod.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
@@ -520,29 +521,29 @@ func (_IEigenPod *IEigenPodCaller) ValidatorPubkeyHashToInfo(opts *bind.CallOpts
// ValidatorPubkeyHashToInfo is a free data retrieval call binding the contract method 0x6fcd0e53.
//
// Solidity: function validatorPubkeyHashToInfo(bytes32 validatorPubkeyHash) view returns((uint64,uint64,uint64,uint8))
-func (_IEigenPod *IEigenPodSession) ValidatorPubkeyHashToInfo(validatorPubkeyHash [32]byte) (IEigenPodValidatorInfo, error) {
+func (_IEigenPod *IEigenPodSession) ValidatorPubkeyHashToInfo(validatorPubkeyHash [32]byte) (IEigenPodTypesValidatorInfo, error) {
return _IEigenPod.Contract.ValidatorPubkeyHashToInfo(&_IEigenPod.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 (_IEigenPod *IEigenPodCallerSession) ValidatorPubkeyHashToInfo(validatorPubkeyHash [32]byte) (IEigenPodValidatorInfo, error) {
+func (_IEigenPod *IEigenPodCallerSession) ValidatorPubkeyHashToInfo(validatorPubkeyHash [32]byte) (IEigenPodTypesValidatorInfo, error) {
return _IEigenPod.Contract.ValidatorPubkeyHashToInfo(&_IEigenPod.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 (_IEigenPod *IEigenPodCaller) ValidatorPubkeyToInfo(opts *bind.CallOpts, validatorPubkey []byte) (IEigenPodValidatorInfo, error) {
+func (_IEigenPod *IEigenPodCaller) ValidatorPubkeyToInfo(opts *bind.CallOpts, validatorPubkey []byte) (IEigenPodTypesValidatorInfo, error) {
var out []interface{}
err := _IEigenPod.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
@@ -551,14 +552,14 @@ func (_IEigenPod *IEigenPodCaller) ValidatorPubkeyToInfo(opts *bind.CallOpts, va
// ValidatorPubkeyToInfo is a free data retrieval call binding the contract method 0xb522538a.
//
// Solidity: function validatorPubkeyToInfo(bytes validatorPubkey) view returns((uint64,uint64,uint64,uint8))
-func (_IEigenPod *IEigenPodSession) ValidatorPubkeyToInfo(validatorPubkey []byte) (IEigenPodValidatorInfo, error) {
+func (_IEigenPod *IEigenPodSession) ValidatorPubkeyToInfo(validatorPubkey []byte) (IEigenPodTypesValidatorInfo, error) {
return _IEigenPod.Contract.ValidatorPubkeyToInfo(&_IEigenPod.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 (_IEigenPod *IEigenPodCallerSession) ValidatorPubkeyToInfo(validatorPubkey []byte) (IEigenPodValidatorInfo, error) {
+func (_IEigenPod *IEigenPodCallerSession) ValidatorPubkeyToInfo(validatorPubkey []byte) (IEigenPodTypesValidatorInfo, error) {
return _IEigenPod.Contract.ValidatorPubkeyToInfo(&_IEigenPod.CallOpts, validatorPubkey)
}
diff --git a/pkg/bindings/IEigenPodManager/binding.go b/pkg/bindings/IEigenPodManager/binding.go
index 8574aafa19..f29e9a0705 100644
--- a/pkg/bindings/IEigenPodManager/binding.go
+++ b/pkg/bindings/IEigenPodManager/binding.go
@@ -31,7 +31,7 @@ var (
// IEigenPodManagerMetaData contains all meta data concerning the IEigenPodManager contract.
var IEigenPodManagerMetaData = &bind.MetaData{
- ABI: "[{\"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\":\"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\":\"numPods\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ownerToPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPod\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"podOwnerShares\",\"inputs\":[{\"name\":\"podOwner\",\"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\":\"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\":\"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\":\"NewTotalShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newTotalShares\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"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}]",
+ ABI: "[{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainSlashingFactor\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burnableETHShares\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createPod\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"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\":\"increaseBurnableShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"addedSharesToBurn\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"numPods\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ownerToPod\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPod\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"podOwnerDepositShares\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recordBeaconChainETHBalanceUpdate\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"prevRestakedBalanceWei\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"balanceDeltaWei\",\"type\":\"int256\",\"internalType\":\"int256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"depositSharesToRemove\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"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\":\"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\":\"BeaconChainETHDeposited\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconChainETHWithdrawalCompleted\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconChainSlashingFactorDecreased\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"prevBeaconChainSlashingFactor\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newBeaconChainSlashingFactor\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BurnableETHSharesIncreased\",\"inputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PodDeployed\",\"inputs\":[{\"name\":\"eigenPod\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PodSharesUpdated\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"sharesDelta\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EigenPodAlreadyExists\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStrategy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LegacyWithdrawalsNotCompleted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyEigenPod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNegative\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesNotMultipleOfGwei\",\"inputs\":[]}]",
}
// IEigenPodManagerABI is the input ABI used to generate the binding from.
@@ -211,6 +211,68 @@ func (_IEigenPodManager *IEigenPodManagerCallerSession) BeaconChainETHStrategy()
return _IEigenPodManager.Contract.BeaconChainETHStrategy(&_IEigenPodManager.CallOpts)
}
+// BeaconChainSlashingFactor is a free data retrieval call binding the contract method 0xa3d75e09.
+//
+// Solidity: function beaconChainSlashingFactor(address staker) view returns(uint64)
+func (_IEigenPodManager *IEigenPodManagerCaller) BeaconChainSlashingFactor(opts *bind.CallOpts, staker common.Address) (uint64, error) {
+ var out []interface{}
+ err := _IEigenPodManager.contract.Call(opts, &out, "beaconChainSlashingFactor", staker)
+
+ if err != nil {
+ return *new(uint64), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64)
+
+ return out0, err
+
+}
+
+// BeaconChainSlashingFactor is a free data retrieval call binding the contract method 0xa3d75e09.
+//
+// Solidity: function beaconChainSlashingFactor(address staker) view returns(uint64)
+func (_IEigenPodManager *IEigenPodManagerSession) BeaconChainSlashingFactor(staker common.Address) (uint64, error) {
+ return _IEigenPodManager.Contract.BeaconChainSlashingFactor(&_IEigenPodManager.CallOpts, staker)
+}
+
+// BeaconChainSlashingFactor is a free data retrieval call binding the contract method 0xa3d75e09.
+//
+// Solidity: function beaconChainSlashingFactor(address staker) view returns(uint64)
+func (_IEigenPodManager *IEigenPodManagerCallerSession) BeaconChainSlashingFactor(staker common.Address) (uint64, error) {
+ return _IEigenPodManager.Contract.BeaconChainSlashingFactor(&_IEigenPodManager.CallOpts, staker)
+}
+
+// BurnableETHShares is a free data retrieval call binding the contract method 0xf5d4fed3.
+//
+// Solidity: function burnableETHShares() view returns(uint256)
+func (_IEigenPodManager *IEigenPodManagerCaller) BurnableETHShares(opts *bind.CallOpts) (*big.Int, error) {
+ var out []interface{}
+ err := _IEigenPodManager.contract.Call(opts, &out, "burnableETHShares")
+
+ if err != nil {
+ return *new(*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+
+ return out0, err
+
+}
+
+// BurnableETHShares is a free data retrieval call binding the contract method 0xf5d4fed3.
+//
+// Solidity: function burnableETHShares() view returns(uint256)
+func (_IEigenPodManager *IEigenPodManagerSession) BurnableETHShares() (*big.Int, error) {
+ return _IEigenPodManager.Contract.BurnableETHShares(&_IEigenPodManager.CallOpts)
+}
+
+// BurnableETHShares is a free data retrieval call binding the contract method 0xf5d4fed3.
+//
+// Solidity: function burnableETHShares() view returns(uint256)
+func (_IEigenPodManager *IEigenPodManagerCallerSession) BurnableETHShares() (*big.Int, error) {
+ return _IEigenPodManager.Contract.BurnableETHShares(&_IEigenPodManager.CallOpts)
+}
+
// EigenPodBeacon is a free data retrieval call binding the contract method 0x292b7b2b.
//
// Solidity: function eigenPodBeacon() view returns(address)
@@ -490,12 +552,12 @@ func (_IEigenPodManager *IEigenPodManagerCallerSession) PauserRegistry() (common
return _IEigenPodManager.Contract.PauserRegistry(&_IEigenPodManager.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 podOwner) view returns(int256)
-func (_IEigenPodManager *IEigenPodManagerCaller) PodOwnerShares(opts *bind.CallOpts, podOwner common.Address) (*big.Int, error) {
+// Solidity: function podOwnerDepositShares(address podOwner) view returns(int256)
+func (_IEigenPodManager *IEigenPodManagerCaller) PodOwnerDepositShares(opts *bind.CallOpts, podOwner common.Address) (*big.Int, error) {
var out []interface{}
- err := _IEigenPodManager.contract.Call(opts, &out, "podOwnerShares", podOwner)
+ err := _IEigenPodManager.contract.Call(opts, &out, "podOwnerDepositShares", podOwner)
if err != nil {
return *new(*big.Int), err
@@ -507,101 +569,70 @@ func (_IEigenPodManager *IEigenPodManagerCaller) PodOwnerShares(opts *bind.CallO
}
-// 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 podOwner) view returns(int256)
-func (_IEigenPodManager *IEigenPodManagerSession) PodOwnerShares(podOwner common.Address) (*big.Int, error) {
- return _IEigenPodManager.Contract.PodOwnerShares(&_IEigenPodManager.CallOpts, podOwner)
+// Solidity: function podOwnerDepositShares(address podOwner) view returns(int256)
+func (_IEigenPodManager *IEigenPodManagerSession) PodOwnerDepositShares(podOwner common.Address) (*big.Int, error) {
+ return _IEigenPodManager.Contract.PodOwnerDepositShares(&_IEigenPodManager.CallOpts, podOwner)
}
-// 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 podOwner) view returns(int256)
-func (_IEigenPodManager *IEigenPodManagerCallerSession) PodOwnerShares(podOwner common.Address) (*big.Int, error) {
- return _IEigenPodManager.Contract.PodOwnerShares(&_IEigenPodManager.CallOpts, podOwner)
+// Solidity: function podOwnerDepositShares(address podOwner) view returns(int256)
+func (_IEigenPodManager *IEigenPodManagerCallerSession) PodOwnerDepositShares(podOwner common.Address) (*big.Int, error) {
+ return _IEigenPodManager.Contract.PodOwnerDepositShares(&_IEigenPodManager.CallOpts, podOwner)
}
-// 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 (_IEigenPodManager *IEigenPodManagerCaller) Slasher(opts *bind.CallOpts) (common.Address, error) {
+// Solidity: function stakerDepositShares(address user, address strategy) view returns(uint256 depositShares)
+func (_IEigenPodManager *IEigenPodManagerCaller) StakerDepositShares(opts *bind.CallOpts, user common.Address, strategy common.Address) (*big.Int, error) {
var out []interface{}
- err := _IEigenPodManager.contract.Call(opts, &out, "slasher")
+ err := _IEigenPodManager.contract.Call(opts, &out, "stakerDepositShares", user, strategy)
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 (_IEigenPodManager *IEigenPodManagerSession) Slasher() (common.Address, error) {
- return _IEigenPodManager.Contract.Slasher(&_IEigenPodManager.CallOpts)
-}
-
-// Slasher is a free data retrieval call binding the contract method 0xb1344271.
-//
-// Solidity: function slasher() view returns(address)
-func (_IEigenPodManager *IEigenPodManagerCallerSession) Slasher() (common.Address, error) {
- return _IEigenPodManager.Contract.Slasher(&_IEigenPodManager.CallOpts)
-}
-
-// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
-//
-// Solidity: function strategyManager() view returns(address)
-func (_IEigenPodManager *IEigenPodManagerCaller) StrategyManager(opts *bind.CallOpts) (common.Address, error) {
- var out []interface{}
- err := _IEigenPodManager.contract.Call(opts, &out, "strategyManager")
-
- if err != nil {
- return *new(common.Address), err
+ return *new(*big.Int), err
}
- out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
+ out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
return out0, err
}
-// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
+// StakerDepositShares is a free data retrieval call binding the contract method 0xfe243a17.
//
-// Solidity: function strategyManager() view returns(address)
-func (_IEigenPodManager *IEigenPodManagerSession) StrategyManager() (common.Address, error) {
- return _IEigenPodManager.Contract.StrategyManager(&_IEigenPodManager.CallOpts)
+// Solidity: function stakerDepositShares(address user, address strategy) view returns(uint256 depositShares)
+func (_IEigenPodManager *IEigenPodManagerSession) StakerDepositShares(user common.Address, strategy common.Address) (*big.Int, error) {
+ return _IEigenPodManager.Contract.StakerDepositShares(&_IEigenPodManager.CallOpts, user, strategy)
}
-// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
+// StakerDepositShares is a free data retrieval call binding the contract method 0xfe243a17.
//
-// Solidity: function strategyManager() view returns(address)
-func (_IEigenPodManager *IEigenPodManagerCallerSession) StrategyManager() (common.Address, error) {
- return _IEigenPodManager.Contract.StrategyManager(&_IEigenPodManager.CallOpts)
+// Solidity: function stakerDepositShares(address user, address strategy) view returns(uint256 depositShares)
+func (_IEigenPodManager *IEigenPodManagerCallerSession) StakerDepositShares(user common.Address, strategy common.Address) (*big.Int, error) {
+ return _IEigenPodManager.Contract.StakerDepositShares(&_IEigenPodManager.CallOpts, user, strategy)
}
-// AddShares is a paid mutator transaction binding the contract method 0x0e81073c.
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
//
-// Solidity: function addShares(address podOwner, uint256 shares) returns(uint256)
-func (_IEigenPodManager *IEigenPodManagerTransactor) AddShares(opts *bind.TransactOpts, podOwner common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IEigenPodManager.contract.Transact(opts, "addShares", podOwner, shares)
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_IEigenPodManager *IEigenPodManagerTransactor) AddShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _IEigenPodManager.contract.Transact(opts, "addShares", staker, strategy, shares)
}
-// AddShares is a paid mutator transaction binding the contract method 0x0e81073c.
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
//
-// Solidity: function addShares(address podOwner, uint256 shares) returns(uint256)
-func (_IEigenPodManager *IEigenPodManagerSession) AddShares(podOwner common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IEigenPodManager.Contract.AddShares(&_IEigenPodManager.TransactOpts, podOwner, shares)
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_IEigenPodManager *IEigenPodManagerSession) AddShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _IEigenPodManager.Contract.AddShares(&_IEigenPodManager.TransactOpts, staker, strategy, shares)
}
-// AddShares is a paid mutator transaction binding the contract method 0x0e81073c.
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
//
-// Solidity: function addShares(address podOwner, uint256 shares) returns(uint256)
-func (_IEigenPodManager *IEigenPodManagerTransactorSession) AddShares(podOwner common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IEigenPodManager.Contract.AddShares(&_IEigenPodManager.TransactOpts, podOwner, shares)
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_IEigenPodManager *IEigenPodManagerTransactorSession) AddShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _IEigenPodManager.Contract.AddShares(&_IEigenPodManager.TransactOpts, staker, strategy, shares)
}
// CreatePod is a paid mutator transaction binding the contract method 0x84d81062.
@@ -625,6 +656,27 @@ func (_IEigenPodManager *IEigenPodManagerTransactorSession) CreatePod() (*types.
return _IEigenPodManager.Contract.CreatePod(&_IEigenPodManager.TransactOpts)
}
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
+//
+// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns()
+func (_IEigenPodManager *IEigenPodManagerTransactor) IncreaseBurnableShares(opts *bind.TransactOpts, strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _IEigenPodManager.contract.Transact(opts, "increaseBurnableShares", strategy, addedSharesToBurn)
+}
+
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
+//
+// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns()
+func (_IEigenPodManager *IEigenPodManagerSession) IncreaseBurnableShares(strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _IEigenPodManager.Contract.IncreaseBurnableShares(&_IEigenPodManager.TransactOpts, strategy, addedSharesToBurn)
+}
+
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
+//
+// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns()
+func (_IEigenPodManager *IEigenPodManagerTransactorSession) IncreaseBurnableShares(strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _IEigenPodManager.Contract.IncreaseBurnableShares(&_IEigenPodManager.TransactOpts, strategy, addedSharesToBurn)
+}
+
// Pause is a paid mutator transaction binding the contract method 0x136439dd.
//
// Solidity: function pause(uint256 newPausedStatus) returns()
@@ -667,67 +719,46 @@ func (_IEigenPodManager *IEigenPodManagerTransactorSession) PauseAll() (*types.T
return _IEigenPodManager.Contract.PauseAll(&_IEigenPodManager.TransactOpts)
}
-// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xc2c51c40.
-//
-// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta) returns()
-func (_IEigenPodManager *IEigenPodManagerTransactor) RecordBeaconChainETHBalanceUpdate(opts *bind.TransactOpts, podOwner common.Address, sharesDelta *big.Int) (*types.Transaction, error) {
- return _IEigenPodManager.contract.Transact(opts, "recordBeaconChainETHBalanceUpdate", podOwner, sharesDelta)
-}
-
-// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xc2c51c40.
+// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xa1ca780b.
//
-// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta) returns()
-func (_IEigenPodManager *IEigenPodManagerSession) RecordBeaconChainETHBalanceUpdate(podOwner common.Address, sharesDelta *big.Int) (*types.Transaction, error) {
- return _IEigenPodManager.Contract.RecordBeaconChainETHBalanceUpdate(&_IEigenPodManager.TransactOpts, podOwner, sharesDelta)
+// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, uint256 prevRestakedBalanceWei, int256 balanceDeltaWei) returns()
+func (_IEigenPodManager *IEigenPodManagerTransactor) RecordBeaconChainETHBalanceUpdate(opts *bind.TransactOpts, podOwner common.Address, prevRestakedBalanceWei *big.Int, balanceDeltaWei *big.Int) (*types.Transaction, error) {
+ return _IEigenPodManager.contract.Transact(opts, "recordBeaconChainETHBalanceUpdate", podOwner, prevRestakedBalanceWei, balanceDeltaWei)
}
-// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xc2c51c40.
+// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xa1ca780b.
//
-// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, int256 sharesDelta) returns()
-func (_IEigenPodManager *IEigenPodManagerTransactorSession) RecordBeaconChainETHBalanceUpdate(podOwner common.Address, sharesDelta *big.Int) (*types.Transaction, error) {
- return _IEigenPodManager.Contract.RecordBeaconChainETHBalanceUpdate(&_IEigenPodManager.TransactOpts, podOwner, sharesDelta)
+// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, uint256 prevRestakedBalanceWei, int256 balanceDeltaWei) returns()
+func (_IEigenPodManager *IEigenPodManagerSession) RecordBeaconChainETHBalanceUpdate(podOwner common.Address, prevRestakedBalanceWei *big.Int, balanceDeltaWei *big.Int) (*types.Transaction, error) {
+ return _IEigenPodManager.Contract.RecordBeaconChainETHBalanceUpdate(&_IEigenPodManager.TransactOpts, podOwner, prevRestakedBalanceWei, balanceDeltaWei)
}
-// RemoveShares is a paid mutator transaction binding the contract method 0xbeffbb89.
+// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xa1ca780b.
//
-// Solidity: function removeShares(address podOwner, uint256 shares) returns()
-func (_IEigenPodManager *IEigenPodManagerTransactor) RemoveShares(opts *bind.TransactOpts, podOwner common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IEigenPodManager.contract.Transact(opts, "removeShares", podOwner, shares)
+// Solidity: function recordBeaconChainETHBalanceUpdate(address podOwner, uint256 prevRestakedBalanceWei, int256 balanceDeltaWei) returns()
+func (_IEigenPodManager *IEigenPodManagerTransactorSession) RecordBeaconChainETHBalanceUpdate(podOwner common.Address, prevRestakedBalanceWei *big.Int, balanceDeltaWei *big.Int) (*types.Transaction, error) {
+ return _IEigenPodManager.Contract.RecordBeaconChainETHBalanceUpdate(&_IEigenPodManager.TransactOpts, podOwner, prevRestakedBalanceWei, balanceDeltaWei)
}
-// 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 (_IEigenPodManager *IEigenPodManagerSession) RemoveShares(podOwner common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IEigenPodManager.Contract.RemoveShares(&_IEigenPodManager.TransactOpts, podOwner, shares)
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_IEigenPodManager *IEigenPodManagerTransactor) RemoveDepositShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _IEigenPodManager.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 (_IEigenPodManager *IEigenPodManagerTransactorSession) RemoveShares(podOwner common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IEigenPodManager.Contract.RemoveShares(&_IEigenPodManager.TransactOpts, podOwner, shares)
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_IEigenPodManager *IEigenPodManagerSession) RemoveDepositShares(staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _IEigenPodManager.Contract.RemoveDepositShares(&_IEigenPodManager.TransactOpts, staker, strategy, depositSharesToRemove)
}
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
+// RemoveDepositShares is a paid mutator transaction binding the contract method 0x724af423.
//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_IEigenPodManager *IEigenPodManagerTransactor) SetPauserRegistry(opts *bind.TransactOpts, newPauserRegistry common.Address) (*types.Transaction, error) {
- return _IEigenPodManager.contract.Transact(opts, "setPauserRegistry", newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_IEigenPodManager *IEigenPodManagerSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _IEigenPodManager.Contract.SetPauserRegistry(&_IEigenPodManager.TransactOpts, newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_IEigenPodManager *IEigenPodManagerTransactorSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _IEigenPodManager.Contract.SetPauserRegistry(&_IEigenPodManager.TransactOpts, newPauserRegistry)
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_IEigenPodManager *IEigenPodManagerTransactorSession) RemoveDepositShares(staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _IEigenPodManager.Contract.RemoveDepositShares(&_IEigenPodManager.TransactOpts, staker, strategy, depositSharesToRemove)
}
// Stake is a paid mutator transaction binding the contract method 0x9b4e4634.
@@ -772,25 +803,25 @@ func (_IEigenPodManager *IEigenPodManagerTransactorSession) Unpause(newPausedSta
return _IEigenPodManager.Contract.Unpause(&_IEigenPodManager.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 (_IEigenPodManager *IEigenPodManagerTransactor) WithdrawSharesAsTokens(opts *bind.TransactOpts, podOwner common.Address, destination common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IEigenPodManager.contract.Transact(opts, "withdrawSharesAsTokens", podOwner, destination, shares)
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns()
+func (_IEigenPodManager *IEigenPodManagerTransactor) WithdrawSharesAsTokens(opts *bind.TransactOpts, staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _IEigenPodManager.contract.Transact(opts, "withdrawSharesAsTokens", staker, strategy, token, 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 (_IEigenPodManager *IEigenPodManagerSession) WithdrawSharesAsTokens(podOwner common.Address, destination common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IEigenPodManager.Contract.WithdrawSharesAsTokens(&_IEigenPodManager.TransactOpts, podOwner, destination, shares)
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns()
+func (_IEigenPodManager *IEigenPodManagerSession) WithdrawSharesAsTokens(staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _IEigenPodManager.Contract.WithdrawSharesAsTokens(&_IEigenPodManager.TransactOpts, staker, strategy, token, 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 (_IEigenPodManager *IEigenPodManagerTransactorSession) WithdrawSharesAsTokens(podOwner common.Address, destination common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IEigenPodManager.Contract.WithdrawSharesAsTokens(&_IEigenPodManager.TransactOpts, podOwner, destination, shares)
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns()
+func (_IEigenPodManager *IEigenPodManagerTransactorSession) WithdrawSharesAsTokens(staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _IEigenPodManager.Contract.WithdrawSharesAsTokens(&_IEigenPodManager.TransactOpts, staker, strategy, token, shares)
}
// IEigenPodManagerBeaconChainETHDepositedIterator is returned from FilterBeaconChainETHDeposited and is used to iterate over the raw logs and unpacked data for BeaconChainETHDeposited events raised by the IEigenPodManager contract.
@@ -1087,9 +1118,9 @@ func (_IEigenPodManager *IEigenPodManagerFilterer) ParseBeaconChainETHWithdrawal
return event, nil
}
-// IEigenPodManagerNewTotalSharesIterator is returned from FilterNewTotalShares and is used to iterate over the raw logs and unpacked data for NewTotalShares events raised by the IEigenPodManager contract.
-type IEigenPodManagerNewTotalSharesIterator struct {
- Event *IEigenPodManagerNewTotalShares // Event containing the contract specifics and raw log
+// IEigenPodManagerBeaconChainSlashingFactorDecreasedIterator is returned from FilterBeaconChainSlashingFactorDecreased and is used to iterate over the raw logs and unpacked data for BeaconChainSlashingFactorDecreased events raised by the IEigenPodManager contract.
+type IEigenPodManagerBeaconChainSlashingFactorDecreasedIterator struct {
+ Event *IEigenPodManagerBeaconChainSlashingFactorDecreased // 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
@@ -1103,7 +1134,7 @@ type IEigenPodManagerNewTotalSharesIterator 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 *IEigenPodManagerNewTotalSharesIterator) Next() bool {
+func (it *IEigenPodManagerBeaconChainSlashingFactorDecreasedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -1112,7 +1143,7 @@ func (it *IEigenPodManagerNewTotalSharesIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(IEigenPodManagerNewTotalShares)
+ it.Event = new(IEigenPodManagerBeaconChainSlashingFactorDecreased)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1127,7 +1158,7 @@ func (it *IEigenPodManagerNewTotalSharesIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(IEigenPodManagerNewTotalShares)
+ it.Event = new(IEigenPodManagerBeaconChainSlashingFactorDecreased)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1143,52 +1174,177 @@ func (it *IEigenPodManagerNewTotalSharesIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *IEigenPodManagerNewTotalSharesIterator) Error() error {
+func (it *IEigenPodManagerBeaconChainSlashingFactorDecreasedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *IEigenPodManagerNewTotalSharesIterator) Close() error {
+func (it *IEigenPodManagerBeaconChainSlashingFactorDecreasedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// IEigenPodManagerNewTotalShares represents a NewTotalShares event raised by the IEigenPodManager contract.
-type IEigenPodManagerNewTotalShares struct {
- PodOwner common.Address
- NewTotalShares *big.Int
- Raw types.Log // Blockchain specific contextual infos
+// IEigenPodManagerBeaconChainSlashingFactorDecreased represents a BeaconChainSlashingFactorDecreased event raised by the IEigenPodManager contract.
+type IEigenPodManagerBeaconChainSlashingFactorDecreased struct {
+ Staker common.Address
+ PrevBeaconChainSlashingFactor uint64
+ NewBeaconChainSlashingFactor uint64
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterNewTotalShares is a free log retrieval operation binding the contract event 0xd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098.
+// FilterBeaconChainSlashingFactorDecreased is a free log retrieval operation binding the contract event 0xb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf.
//
-// Solidity: event NewTotalShares(address indexed podOwner, int256 newTotalShares)
-func (_IEigenPodManager *IEigenPodManagerFilterer) FilterNewTotalShares(opts *bind.FilterOpts, podOwner []common.Address) (*IEigenPodManagerNewTotalSharesIterator, error) {
+// Solidity: event BeaconChainSlashingFactorDecreased(address staker, uint64 prevBeaconChainSlashingFactor, uint64 newBeaconChainSlashingFactor)
+func (_IEigenPodManager *IEigenPodManagerFilterer) FilterBeaconChainSlashingFactorDecreased(opts *bind.FilterOpts) (*IEigenPodManagerBeaconChainSlashingFactorDecreasedIterator, error) {
- var podOwnerRule []interface{}
- for _, podOwnerItem := range podOwner {
- podOwnerRule = append(podOwnerRule, podOwnerItem)
+ logs, sub, err := _IEigenPodManager.contract.FilterLogs(opts, "BeaconChainSlashingFactorDecreased")
+ if err != nil {
+ return nil, err
}
+ return &IEigenPodManagerBeaconChainSlashingFactorDecreasedIterator{contract: _IEigenPodManager.contract, event: "BeaconChainSlashingFactorDecreased", logs: logs, sub: sub}, nil
+}
- logs, sub, err := _IEigenPodManager.contract.FilterLogs(opts, "NewTotalShares", podOwnerRule)
+// WatchBeaconChainSlashingFactorDecreased is a free log subscription operation binding the contract event 0xb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf.
+//
+// Solidity: event BeaconChainSlashingFactorDecreased(address staker, uint64 prevBeaconChainSlashingFactor, uint64 newBeaconChainSlashingFactor)
+func (_IEigenPodManager *IEigenPodManagerFilterer) WatchBeaconChainSlashingFactorDecreased(opts *bind.WatchOpts, sink chan<- *IEigenPodManagerBeaconChainSlashingFactorDecreased) (event.Subscription, error) {
+
+ logs, sub, err := _IEigenPodManager.contract.WatchLogs(opts, "BeaconChainSlashingFactorDecreased")
if err != nil {
return nil, err
}
- return &IEigenPodManagerNewTotalSharesIterator{contract: _IEigenPodManager.contract, event: "NewTotalShares", logs: logs, sub: sub}, nil
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(IEigenPodManagerBeaconChainSlashingFactorDecreased)
+ if err := _IEigenPodManager.contract.UnpackLog(event, "BeaconChainSlashingFactorDecreased", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
}
-// WatchNewTotalShares is a free log subscription operation binding the contract event 0xd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098.
+// ParseBeaconChainSlashingFactorDecreased is a log parse operation binding the contract event 0xb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf.
//
-// Solidity: event NewTotalShares(address indexed podOwner, int256 newTotalShares)
-func (_IEigenPodManager *IEigenPodManagerFilterer) WatchNewTotalShares(opts *bind.WatchOpts, sink chan<- *IEigenPodManagerNewTotalShares, podOwner []common.Address) (event.Subscription, error) {
+// Solidity: event BeaconChainSlashingFactorDecreased(address staker, uint64 prevBeaconChainSlashingFactor, uint64 newBeaconChainSlashingFactor)
+func (_IEigenPodManager *IEigenPodManagerFilterer) ParseBeaconChainSlashingFactorDecreased(log types.Log) (*IEigenPodManagerBeaconChainSlashingFactorDecreased, error) {
+ event := new(IEigenPodManagerBeaconChainSlashingFactorDecreased)
+ if err := _IEigenPodManager.contract.UnpackLog(event, "BeaconChainSlashingFactorDecreased", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
- var podOwnerRule []interface{}
- for _, podOwnerItem := range podOwner {
- podOwnerRule = append(podOwnerRule, podOwnerItem)
+// IEigenPodManagerBurnableETHSharesIncreasedIterator is returned from FilterBurnableETHSharesIncreased and is used to iterate over the raw logs and unpacked data for BurnableETHSharesIncreased events raised by the IEigenPodManager contract.
+type IEigenPodManagerBurnableETHSharesIncreasedIterator struct {
+ Event *IEigenPodManagerBurnableETHSharesIncreased // 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 *IEigenPodManagerBurnableETHSharesIncreasedIterator) 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(IEigenPodManagerBurnableETHSharesIncreased)
+ if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
+ it.fail = err
+ return false
+ }
+ it.Event.Raw = log
+ return true
- logs, sub, err := _IEigenPodManager.contract.WatchLogs(opts, "NewTotalShares", podOwnerRule)
+ default:
+ return false
+ }
+ }
+ // Iterator still in progress, wait for either a data or an error event
+ select {
+ case log := <-it.logs:
+ it.Event = new(IEigenPodManagerBurnableETHSharesIncreased)
+ 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 *IEigenPodManagerBurnableETHSharesIncreasedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IEigenPodManagerBurnableETHSharesIncreasedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IEigenPodManagerBurnableETHSharesIncreased represents a BurnableETHSharesIncreased event raised by the IEigenPodManager contract.
+type IEigenPodManagerBurnableETHSharesIncreased struct {
+ Shares *big.Int
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterBurnableETHSharesIncreased is a free log retrieval operation binding the contract event 0x1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a4.
+//
+// Solidity: event BurnableETHSharesIncreased(uint256 shares)
+func (_IEigenPodManager *IEigenPodManagerFilterer) FilterBurnableETHSharesIncreased(opts *bind.FilterOpts) (*IEigenPodManagerBurnableETHSharesIncreasedIterator, error) {
+
+ logs, sub, err := _IEigenPodManager.contract.FilterLogs(opts, "BurnableETHSharesIncreased")
+ if err != nil {
+ return nil, err
+ }
+ return &IEigenPodManagerBurnableETHSharesIncreasedIterator{contract: _IEigenPodManager.contract, event: "BurnableETHSharesIncreased", logs: logs, sub: sub}, nil
+}
+
+// WatchBurnableETHSharesIncreased is a free log subscription operation binding the contract event 0x1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a4.
+//
+// Solidity: event BurnableETHSharesIncreased(uint256 shares)
+func (_IEigenPodManager *IEigenPodManagerFilterer) WatchBurnableETHSharesIncreased(opts *bind.WatchOpts, sink chan<- *IEigenPodManagerBurnableETHSharesIncreased) (event.Subscription, error) {
+
+ logs, sub, err := _IEigenPodManager.contract.WatchLogs(opts, "BurnableETHSharesIncreased")
if err != nil {
return nil, err
}
@@ -1198,8 +1354,8 @@ func (_IEigenPodManager *IEigenPodManagerFilterer) WatchNewTotalShares(opts *bin
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(IEigenPodManagerNewTotalShares)
- if err := _IEigenPodManager.contract.UnpackLog(event, "NewTotalShares", log); err != nil {
+ event := new(IEigenPodManagerBurnableETHSharesIncreased)
+ if err := _IEigenPodManager.contract.UnpackLog(event, "BurnableETHSharesIncreased", log); err != nil {
return err
}
event.Raw = log
@@ -1220,21 +1376,21 @@ func (_IEigenPodManager *IEigenPodManagerFilterer) WatchNewTotalShares(opts *bin
}), nil
}
-// ParseNewTotalShares is a log parse operation binding the contract event 0xd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098.
+// ParseBurnableETHSharesIncreased is a log parse operation binding the contract event 0x1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a4.
//
-// Solidity: event NewTotalShares(address indexed podOwner, int256 newTotalShares)
-func (_IEigenPodManager *IEigenPodManagerFilterer) ParseNewTotalShares(log types.Log) (*IEigenPodManagerNewTotalShares, error) {
- event := new(IEigenPodManagerNewTotalShares)
- if err := _IEigenPodManager.contract.UnpackLog(event, "NewTotalShares", log); err != nil {
+// Solidity: event BurnableETHSharesIncreased(uint256 shares)
+func (_IEigenPodManager *IEigenPodManagerFilterer) ParseBurnableETHSharesIncreased(log types.Log) (*IEigenPodManagerBurnableETHSharesIncreased, error) {
+ event := new(IEigenPodManagerBurnableETHSharesIncreased)
+ if err := _IEigenPodManager.contract.UnpackLog(event, "BurnableETHSharesIncreased", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// IEigenPodManagerPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the IEigenPodManager contract.
-type IEigenPodManagerPausedIterator struct {
- Event *IEigenPodManagerPaused // Event containing the contract specifics and raw log
+// IEigenPodManagerNewTotalSharesIterator is returned from FilterNewTotalShares and is used to iterate over the raw logs and unpacked data for NewTotalShares events raised by the IEigenPodManager contract.
+type IEigenPodManagerNewTotalSharesIterator struct {
+ Event *IEigenPodManagerNewTotalShares // 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
@@ -1248,7 +1404,7 @@ type IEigenPodManagerPausedIterator 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 *IEigenPodManagerPausedIterator) Next() bool {
+func (it *IEigenPodManagerNewTotalSharesIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -1257,7 +1413,7 @@ func (it *IEigenPodManagerPausedIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(IEigenPodManagerPaused)
+ it.Event = new(IEigenPodManagerNewTotalShares)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1272,7 +1428,7 @@ func (it *IEigenPodManagerPausedIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(IEigenPodManagerPaused)
+ it.Event = new(IEigenPodManagerNewTotalShares)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1288,52 +1444,52 @@ func (it *IEigenPodManagerPausedIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *IEigenPodManagerPausedIterator) Error() error {
+func (it *IEigenPodManagerNewTotalSharesIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *IEigenPodManagerPausedIterator) Close() error {
+func (it *IEigenPodManagerNewTotalSharesIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// IEigenPodManagerPaused represents a Paused event raised by the IEigenPodManager contract.
-type IEigenPodManagerPaused struct {
- Account common.Address
- NewPausedStatus *big.Int
- Raw types.Log // Blockchain specific contextual infos
+// IEigenPodManagerNewTotalShares represents a NewTotalShares event raised by the IEigenPodManager contract.
+type IEigenPodManagerNewTotalShares struct {
+ PodOwner common.Address
+ NewTotalShares *big.Int
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterPaused is a free log retrieval operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d.
+// FilterNewTotalShares is a free log retrieval operation binding the contract event 0xd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098.
//
-// Solidity: event Paused(address indexed account, uint256 newPausedStatus)
-func (_IEigenPodManager *IEigenPodManagerFilterer) FilterPaused(opts *bind.FilterOpts, account []common.Address) (*IEigenPodManagerPausedIterator, error) {
+// Solidity: event NewTotalShares(address indexed podOwner, int256 newTotalShares)
+func (_IEigenPodManager *IEigenPodManagerFilterer) FilterNewTotalShares(opts *bind.FilterOpts, podOwner []common.Address) (*IEigenPodManagerNewTotalSharesIterator, error) {
- var accountRule []interface{}
- for _, accountItem := range account {
- accountRule = append(accountRule, accountItem)
+ var podOwnerRule []interface{}
+ for _, podOwnerItem := range podOwner {
+ podOwnerRule = append(podOwnerRule, podOwnerItem)
}
- logs, sub, err := _IEigenPodManager.contract.FilterLogs(opts, "Paused", accountRule)
+ logs, sub, err := _IEigenPodManager.contract.FilterLogs(opts, "NewTotalShares", podOwnerRule)
if err != nil {
return nil, err
}
- return &IEigenPodManagerPausedIterator{contract: _IEigenPodManager.contract, event: "Paused", logs: logs, sub: sub}, nil
+ return &IEigenPodManagerNewTotalSharesIterator{contract: _IEigenPodManager.contract, event: "NewTotalShares", logs: logs, sub: sub}, nil
}
-// WatchPaused is a free log subscription operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d.
+// WatchNewTotalShares is a free log subscription operation binding the contract event 0xd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098.
//
-// Solidity: event Paused(address indexed account, uint256 newPausedStatus)
-func (_IEigenPodManager *IEigenPodManagerFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *IEigenPodManagerPaused, account []common.Address) (event.Subscription, error) {
+// Solidity: event NewTotalShares(address indexed podOwner, int256 newTotalShares)
+func (_IEigenPodManager *IEigenPodManagerFilterer) WatchNewTotalShares(opts *bind.WatchOpts, sink chan<- *IEigenPodManagerNewTotalShares, podOwner []common.Address) (event.Subscription, error) {
- var accountRule []interface{}
- for _, accountItem := range account {
- accountRule = append(accountRule, accountItem)
+ var podOwnerRule []interface{}
+ for _, podOwnerItem := range podOwner {
+ podOwnerRule = append(podOwnerRule, podOwnerItem)
}
- logs, sub, err := _IEigenPodManager.contract.WatchLogs(opts, "Paused", accountRule)
+ logs, sub, err := _IEigenPodManager.contract.WatchLogs(opts, "NewTotalShares", podOwnerRule)
if err != nil {
return nil, err
}
@@ -1343,8 +1499,8 @@ func (_IEigenPodManager *IEigenPodManagerFilterer) WatchPaused(opts *bind.WatchO
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(IEigenPodManagerPaused)
- if err := _IEigenPodManager.contract.UnpackLog(event, "Paused", log); err != nil {
+ event := new(IEigenPodManagerNewTotalShares)
+ if err := _IEigenPodManager.contract.UnpackLog(event, "NewTotalShares", log); err != nil {
return err
}
event.Raw = log
@@ -1365,21 +1521,21 @@ func (_IEigenPodManager *IEigenPodManagerFilterer) WatchPaused(opts *bind.WatchO
}), nil
}
-// ParsePaused is a log parse operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d.
+// ParseNewTotalShares is a log parse operation binding the contract event 0xd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098.
//
-// Solidity: event Paused(address indexed account, uint256 newPausedStatus)
-func (_IEigenPodManager *IEigenPodManagerFilterer) ParsePaused(log types.Log) (*IEigenPodManagerPaused, error) {
- event := new(IEigenPodManagerPaused)
- if err := _IEigenPodManager.contract.UnpackLog(event, "Paused", log); err != nil {
+// Solidity: event NewTotalShares(address indexed podOwner, int256 newTotalShares)
+func (_IEigenPodManager *IEigenPodManagerFilterer) ParseNewTotalShares(log types.Log) (*IEigenPodManagerNewTotalShares, error) {
+ event := new(IEigenPodManagerNewTotalShares)
+ if err := _IEigenPodManager.contract.UnpackLog(event, "NewTotalShares", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// IEigenPodManagerPauserRegistrySetIterator is returned from FilterPauserRegistrySet and is used to iterate over the raw logs and unpacked data for PauserRegistrySet events raised by the IEigenPodManager contract.
-type IEigenPodManagerPauserRegistrySetIterator struct {
- Event *IEigenPodManagerPauserRegistrySet // Event containing the contract specifics and raw log
+// IEigenPodManagerPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the IEigenPodManager contract.
+type IEigenPodManagerPausedIterator struct {
+ Event *IEigenPodManagerPaused // 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
@@ -1393,7 +1549,7 @@ type IEigenPodManagerPauserRegistrySetIterator 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 *IEigenPodManagerPauserRegistrySetIterator) Next() bool {
+func (it *IEigenPodManagerPausedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -1402,7 +1558,7 @@ func (it *IEigenPodManagerPauserRegistrySetIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(IEigenPodManagerPauserRegistrySet)
+ it.Event = new(IEigenPodManagerPaused)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1417,7 +1573,7 @@ func (it *IEigenPodManagerPauserRegistrySetIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(IEigenPodManagerPauserRegistrySet)
+ it.Event = new(IEigenPodManagerPaused)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1433,42 +1589,52 @@ func (it *IEigenPodManagerPauserRegistrySetIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *IEigenPodManagerPauserRegistrySetIterator) Error() error {
+func (it *IEigenPodManagerPausedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *IEigenPodManagerPauserRegistrySetIterator) Close() error {
+func (it *IEigenPodManagerPausedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// IEigenPodManagerPauserRegistrySet represents a PauserRegistrySet event raised by the IEigenPodManager contract.
-type IEigenPodManagerPauserRegistrySet struct {
- PauserRegistry common.Address
- NewPauserRegistry common.Address
- Raw types.Log // Blockchain specific contextual infos
+// IEigenPodManagerPaused represents a Paused event raised by the IEigenPodManager contract.
+type IEigenPodManagerPaused struct {
+ Account common.Address
+ NewPausedStatus *big.Int
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterPauserRegistrySet is a free log retrieval operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
+// FilterPaused is a free log retrieval operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d.
//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_IEigenPodManager *IEigenPodManagerFilterer) FilterPauserRegistrySet(opts *bind.FilterOpts) (*IEigenPodManagerPauserRegistrySetIterator, error) {
+// Solidity: event Paused(address indexed account, uint256 newPausedStatus)
+func (_IEigenPodManager *IEigenPodManagerFilterer) FilterPaused(opts *bind.FilterOpts, account []common.Address) (*IEigenPodManagerPausedIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
- logs, sub, err := _IEigenPodManager.contract.FilterLogs(opts, "PauserRegistrySet")
+ logs, sub, err := _IEigenPodManager.contract.FilterLogs(opts, "Paused", accountRule)
if err != nil {
return nil, err
}
- return &IEigenPodManagerPauserRegistrySetIterator{contract: _IEigenPodManager.contract, event: "PauserRegistrySet", logs: logs, sub: sub}, nil
+ return &IEigenPodManagerPausedIterator{contract: _IEigenPodManager.contract, event: "Paused", logs: logs, sub: sub}, nil
}
-// WatchPauserRegistrySet is a free log subscription operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
+// WatchPaused is a free log subscription operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d.
//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_IEigenPodManager *IEigenPodManagerFilterer) WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *IEigenPodManagerPauserRegistrySet) (event.Subscription, error) {
+// Solidity: event Paused(address indexed account, uint256 newPausedStatus)
+func (_IEigenPodManager *IEigenPodManagerFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *IEigenPodManagerPaused, account []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
- logs, sub, err := _IEigenPodManager.contract.WatchLogs(opts, "PauserRegistrySet")
+ logs, sub, err := _IEigenPodManager.contract.WatchLogs(opts, "Paused", accountRule)
if err != nil {
return nil, err
}
@@ -1478,8 +1644,8 @@ func (_IEigenPodManager *IEigenPodManagerFilterer) WatchPauserRegistrySet(opts *
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(IEigenPodManagerPauserRegistrySet)
- if err := _IEigenPodManager.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
+ event := new(IEigenPodManagerPaused)
+ if err := _IEigenPodManager.contract.UnpackLog(event, "Paused", log); err != nil {
return err
}
event.Raw = log
@@ -1500,12 +1666,12 @@ func (_IEigenPodManager *IEigenPodManagerFilterer) WatchPauserRegistrySet(opts *
}), nil
}
-// ParsePauserRegistrySet is a log parse operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
+// ParsePaused is a log parse operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d.
//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_IEigenPodManager *IEigenPodManagerFilterer) ParsePauserRegistrySet(log types.Log) (*IEigenPodManagerPauserRegistrySet, error) {
- event := new(IEigenPodManagerPauserRegistrySet)
- if err := _IEigenPodManager.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
+// Solidity: event Paused(address indexed account, uint256 newPausedStatus)
+func (_IEigenPodManager *IEigenPodManagerFilterer) ParsePaused(log types.Log) (*IEigenPodManagerPaused, error) {
+ event := new(IEigenPodManagerPaused)
+ if err := _IEigenPodManager.contract.UnpackLog(event, "Paused", log); err != nil {
return nil, err
}
event.Raw = log
diff --git a/pkg/bindings/IPausable/binding.go b/pkg/bindings/IPausable/binding.go
index 4cef4b112f..445eddd6c5 100644
--- a/pkg/bindings/IPausable/binding.go
+++ b/pkg/bindings/IPausable/binding.go
@@ -31,7 +31,7 @@ var (
// IPausableMetaData contains all meta data concerning the IPausable contract.
var IPausableMetaData = &bind.MetaData{
- ABI: "[{\"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\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]",
+ ABI: "[{\"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\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]}]",
}
// IPausableABI is the input ABI used to generate the binding from.
@@ -315,27 +315,6 @@ func (_IPausable *IPausableTransactorSession) PauseAll() (*types.Transaction, er
return _IPausable.Contract.PauseAll(&_IPausable.TransactOpts)
}
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_IPausable *IPausableTransactor) SetPauserRegistry(opts *bind.TransactOpts, newPauserRegistry common.Address) (*types.Transaction, error) {
- return _IPausable.contract.Transact(opts, "setPauserRegistry", newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_IPausable *IPausableSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _IPausable.Contract.SetPauserRegistry(&_IPausable.TransactOpts, newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_IPausable *IPausableTransactorSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _IPausable.Contract.SetPauserRegistry(&_IPausable.TransactOpts, newPauserRegistry)
-}
-
// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc.
//
// Solidity: function unpause(uint256 newPausedStatus) returns()
@@ -502,141 +481,6 @@ func (_IPausable *IPausableFilterer) ParsePaused(log types.Log) (*IPausablePause
return event, nil
}
-// IPausablePauserRegistrySetIterator is returned from FilterPauserRegistrySet and is used to iterate over the raw logs and unpacked data for PauserRegistrySet events raised by the IPausable contract.
-type IPausablePauserRegistrySetIterator struct {
- Event *IPausablePauserRegistrySet // 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 *IPausablePauserRegistrySetIterator) 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(IPausablePauserRegistrySet)
- 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(IPausablePauserRegistrySet)
- 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 *IPausablePauserRegistrySetIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *IPausablePauserRegistrySetIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// IPausablePauserRegistrySet represents a PauserRegistrySet event raised by the IPausable contract.
-type IPausablePauserRegistrySet struct {
- PauserRegistry common.Address
- NewPauserRegistry common.Address
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterPauserRegistrySet is a free log retrieval operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_IPausable *IPausableFilterer) FilterPauserRegistrySet(opts *bind.FilterOpts) (*IPausablePauserRegistrySetIterator, error) {
-
- logs, sub, err := _IPausable.contract.FilterLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return &IPausablePauserRegistrySetIterator{contract: _IPausable.contract, event: "PauserRegistrySet", logs: logs, sub: sub}, nil
-}
-
-// WatchPauserRegistrySet is a free log subscription operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_IPausable *IPausableFilterer) WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *IPausablePauserRegistrySet) (event.Subscription, error) {
-
- logs, sub, err := _IPausable.contract.WatchLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(IPausablePauserRegistrySet)
- if err := _IPausable.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return err
- }
- event.Raw = log
-
- select {
- case sink <- event:
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- }
- }), nil
-}
-
-// ParsePauserRegistrySet is a log parse operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_IPausable *IPausableFilterer) ParsePauserRegistrySet(log types.Log) (*IPausablePauserRegistrySet, error) {
- event := new(IPausablePauserRegistrySet)
- if err := _IPausable.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
// IPausableUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the IPausable contract.
type IPausableUnpausedIterator struct {
Event *IPausableUnpaused // Event containing the contract specifics and raw log
diff --git a/pkg/bindings/IPauserRegistry/binding.go b/pkg/bindings/IPauserRegistry/binding.go
index 59678ea9ef..aaa464fef8 100644
--- a/pkg/bindings/IPauserRegistry/binding.go
+++ b/pkg/bindings/IPauserRegistry/binding.go
@@ -31,7 +31,7 @@ var (
// IPauserRegistryMetaData contains all meta data concerning the IPauserRegistry contract.
var IPauserRegistryMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"function\",\"name\":\"isPauser\",\"inputs\":[{\"name\":\"pauser\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpauser\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"PauserStatusChanged\",\"inputs\":[{\"name\":\"pauser\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"canPause\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UnpauserChanged\",\"inputs\":[{\"name\":\"previousUnpauser\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newUnpauser\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false}]",
+ ABI: "[{\"type\":\"function\",\"name\":\"isPauser\",\"inputs\":[{\"name\":\"pauser\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpauser\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"PauserStatusChanged\",\"inputs\":[{\"name\":\"pauser\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"canPause\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UnpauserChanged\",\"inputs\":[{\"name\":\"previousUnpauser\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newUnpauser\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]}]",
}
// IPauserRegistryABI is the input ABI used to generate the binding from.
diff --git a/pkg/bindings/IPermissionController/binding.go b/pkg/bindings/IPermissionController/binding.go
new file mode 100644
index 0000000000..cacf476c7f
--- /dev/null
+++ b/pkg/bindings/IPermissionController/binding.go
@@ -0,0 +1,1384 @@
+// Code generated - DO NOT EDIT.
+// This file is a generated binding and any manual changes will be lost.
+
+package IPermissionController
+
+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
+)
+
+// IPermissionControllerMetaData contains all meta data concerning the IPermissionController contract.
+var IPermissionControllerMetaData = &bind.MetaData{
+ ABI: "[{\"type\":\"function\",\"name\":\"acceptAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addPendingAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"canCall\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getAdmins\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAppointeePermissions\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getAppointees\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getPendingAdmins\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isPendingAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"pendingAdmin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeAppointee\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removePendingAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAppointee\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminRemoved\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AdminSet\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AppointeeRemoved\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"indexed\":false,\"internalType\":\"bytes4\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AppointeeSet\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"indexed\":false,\"internalType\":\"bytes4\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PendingAdminAdded\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PendingAdminRemoved\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AdminAlreadyPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AdminAlreadySet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AdminNotPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AdminNotSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AppointeeAlreadySet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AppointeeNotSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotHaveZeroAdmins\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAdmin\",\"inputs\":[]}]",
+}
+
+// IPermissionControllerABI is the input ABI used to generate the binding from.
+// Deprecated: Use IPermissionControllerMetaData.ABI instead.
+var IPermissionControllerABI = IPermissionControllerMetaData.ABI
+
+// IPermissionController is an auto generated Go binding around an Ethereum contract.
+type IPermissionController struct {
+ IPermissionControllerCaller // Read-only binding to the contract
+ IPermissionControllerTransactor // Write-only binding to the contract
+ IPermissionControllerFilterer // Log filterer for contract events
+}
+
+// IPermissionControllerCaller is an auto generated read-only Go binding around an Ethereum contract.
+type IPermissionControllerCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// IPermissionControllerTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type IPermissionControllerTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// IPermissionControllerFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
+type IPermissionControllerFilterer struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// IPermissionControllerSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type IPermissionControllerSession struct {
+ Contract *IPermissionController // 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
+}
+
+// IPermissionControllerCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type IPermissionControllerCallerSession struct {
+ Contract *IPermissionControllerCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// IPermissionControllerTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type IPermissionControllerTransactorSession struct {
+ Contract *IPermissionControllerTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// IPermissionControllerRaw is an auto generated low-level Go binding around an Ethereum contract.
+type IPermissionControllerRaw struct {
+ Contract *IPermissionController // Generic contract binding to access the raw methods on
+}
+
+// IPermissionControllerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type IPermissionControllerCallerRaw struct {
+ Contract *IPermissionControllerCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// IPermissionControllerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type IPermissionControllerTransactorRaw struct {
+ Contract *IPermissionControllerTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewIPermissionController creates a new instance of IPermissionController, bound to a specific deployed contract.
+func NewIPermissionController(address common.Address, backend bind.ContractBackend) (*IPermissionController, error) {
+ contract, err := bindIPermissionController(address, backend, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &IPermissionController{IPermissionControllerCaller: IPermissionControllerCaller{contract: contract}, IPermissionControllerTransactor: IPermissionControllerTransactor{contract: contract}, IPermissionControllerFilterer: IPermissionControllerFilterer{contract: contract}}, nil
+}
+
+// NewIPermissionControllerCaller creates a new read-only instance of IPermissionController, bound to a specific deployed contract.
+func NewIPermissionControllerCaller(address common.Address, caller bind.ContractCaller) (*IPermissionControllerCaller, error) {
+ contract, err := bindIPermissionController(address, caller, nil, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &IPermissionControllerCaller{contract: contract}, nil
+}
+
+// NewIPermissionControllerTransactor creates a new write-only instance of IPermissionController, bound to a specific deployed contract.
+func NewIPermissionControllerTransactor(address common.Address, transactor bind.ContractTransactor) (*IPermissionControllerTransactor, error) {
+ contract, err := bindIPermissionController(address, nil, transactor, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &IPermissionControllerTransactor{contract: contract}, nil
+}
+
+// NewIPermissionControllerFilterer creates a new log filterer instance of IPermissionController, bound to a specific deployed contract.
+func NewIPermissionControllerFilterer(address common.Address, filterer bind.ContractFilterer) (*IPermissionControllerFilterer, error) {
+ contract, err := bindIPermissionController(address, nil, nil, filterer)
+ if err != nil {
+ return nil, err
+ }
+ return &IPermissionControllerFilterer{contract: contract}, nil
+}
+
+// bindIPermissionController binds a generic wrapper to an already deployed contract.
+func bindIPermissionController(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
+ parsed, err := IPermissionControllerMetaData.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 (_IPermissionController *IPermissionControllerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _IPermissionController.Contract.IPermissionControllerCaller.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 (_IPermissionController *IPermissionControllerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _IPermissionController.Contract.IPermissionControllerTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_IPermissionController *IPermissionControllerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _IPermissionController.Contract.IPermissionControllerTransactor.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 (_IPermissionController *IPermissionControllerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _IPermissionController.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 (_IPermissionController *IPermissionControllerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _IPermissionController.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_IPermissionController *IPermissionControllerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _IPermissionController.Contract.contract.Transact(opts, method, params...)
+}
+
+// GetAdmins is a free data retrieval call binding the contract method 0xad5f2210.
+//
+// Solidity: function getAdmins(address account) view returns(address[])
+func (_IPermissionController *IPermissionControllerCaller) GetAdmins(opts *bind.CallOpts, account common.Address) ([]common.Address, error) {
+ var out []interface{}
+ err := _IPermissionController.contract.Call(opts, &out, "getAdmins", account)
+
+ if err != nil {
+ return *new([]common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
+
+ return out0, err
+
+}
+
+// GetAdmins is a free data retrieval call binding the contract method 0xad5f2210.
+//
+// Solidity: function getAdmins(address account) view returns(address[])
+func (_IPermissionController *IPermissionControllerSession) GetAdmins(account common.Address) ([]common.Address, error) {
+ return _IPermissionController.Contract.GetAdmins(&_IPermissionController.CallOpts, account)
+}
+
+// GetAdmins is a free data retrieval call binding the contract method 0xad5f2210.
+//
+// Solidity: function getAdmins(address account) view returns(address[])
+func (_IPermissionController *IPermissionControllerCallerSession) GetAdmins(account common.Address) ([]common.Address, error) {
+ return _IPermissionController.Contract.GetAdmins(&_IPermissionController.CallOpts, account)
+}
+
+// GetPendingAdmins is a free data retrieval call binding the contract method 0x6bddfa1f.
+//
+// Solidity: function getPendingAdmins(address account) view returns(address[])
+func (_IPermissionController *IPermissionControllerCaller) GetPendingAdmins(opts *bind.CallOpts, account common.Address) ([]common.Address, error) {
+ var out []interface{}
+ err := _IPermissionController.contract.Call(opts, &out, "getPendingAdmins", account)
+
+ if err != nil {
+ return *new([]common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
+
+ return out0, err
+
+}
+
+// GetPendingAdmins is a free data retrieval call binding the contract method 0x6bddfa1f.
+//
+// Solidity: function getPendingAdmins(address account) view returns(address[])
+func (_IPermissionController *IPermissionControllerSession) GetPendingAdmins(account common.Address) ([]common.Address, error) {
+ return _IPermissionController.Contract.GetPendingAdmins(&_IPermissionController.CallOpts, account)
+}
+
+// GetPendingAdmins is a free data retrieval call binding the contract method 0x6bddfa1f.
+//
+// Solidity: function getPendingAdmins(address account) view returns(address[])
+func (_IPermissionController *IPermissionControllerCallerSession) GetPendingAdmins(account common.Address) ([]common.Address, error) {
+ return _IPermissionController.Contract.GetPendingAdmins(&_IPermissionController.CallOpts, account)
+}
+
+// IsAdmin is a free data retrieval call binding the contract method 0x91006745.
+//
+// Solidity: function isAdmin(address account, address caller) view returns(bool)
+func (_IPermissionController *IPermissionControllerCaller) IsAdmin(opts *bind.CallOpts, account common.Address, caller common.Address) (bool, error) {
+ var out []interface{}
+ err := _IPermissionController.contract.Call(opts, &out, "isAdmin", account, caller)
+
+ if err != nil {
+ return *new(bool), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
+
+ return out0, err
+
+}
+
+// IsAdmin is a free data retrieval call binding the contract method 0x91006745.
+//
+// Solidity: function isAdmin(address account, address caller) view returns(bool)
+func (_IPermissionController *IPermissionControllerSession) IsAdmin(account common.Address, caller common.Address) (bool, error) {
+ return _IPermissionController.Contract.IsAdmin(&_IPermissionController.CallOpts, account, caller)
+}
+
+// IsAdmin is a free data retrieval call binding the contract method 0x91006745.
+//
+// Solidity: function isAdmin(address account, address caller) view returns(bool)
+func (_IPermissionController *IPermissionControllerCallerSession) IsAdmin(account common.Address, caller common.Address) (bool, error) {
+ return _IPermissionController.Contract.IsAdmin(&_IPermissionController.CallOpts, account, caller)
+}
+
+// IsPendingAdmin is a free data retrieval call binding the contract method 0xad8aca77.
+//
+// Solidity: function isPendingAdmin(address account, address pendingAdmin) view returns(bool)
+func (_IPermissionController *IPermissionControllerCaller) IsPendingAdmin(opts *bind.CallOpts, account common.Address, pendingAdmin common.Address) (bool, error) {
+ var out []interface{}
+ err := _IPermissionController.contract.Call(opts, &out, "isPendingAdmin", account, pendingAdmin)
+
+ if err != nil {
+ return *new(bool), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
+
+ return out0, err
+
+}
+
+// IsPendingAdmin is a free data retrieval call binding the contract method 0xad8aca77.
+//
+// Solidity: function isPendingAdmin(address account, address pendingAdmin) view returns(bool)
+func (_IPermissionController *IPermissionControllerSession) IsPendingAdmin(account common.Address, pendingAdmin common.Address) (bool, error) {
+ return _IPermissionController.Contract.IsPendingAdmin(&_IPermissionController.CallOpts, account, pendingAdmin)
+}
+
+// IsPendingAdmin is a free data retrieval call binding the contract method 0xad8aca77.
+//
+// Solidity: function isPendingAdmin(address account, address pendingAdmin) view returns(bool)
+func (_IPermissionController *IPermissionControllerCallerSession) IsPendingAdmin(account common.Address, pendingAdmin common.Address) (bool, error) {
+ return _IPermissionController.Contract.IsPendingAdmin(&_IPermissionController.CallOpts, account, pendingAdmin)
+}
+
+// AcceptAdmin is a paid mutator transaction binding the contract method 0x628806ef.
+//
+// Solidity: function acceptAdmin(address account) returns()
+func (_IPermissionController *IPermissionControllerTransactor) AcceptAdmin(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
+ return _IPermissionController.contract.Transact(opts, "acceptAdmin", account)
+}
+
+// AcceptAdmin is a paid mutator transaction binding the contract method 0x628806ef.
+//
+// Solidity: function acceptAdmin(address account) returns()
+func (_IPermissionController *IPermissionControllerSession) AcceptAdmin(account common.Address) (*types.Transaction, error) {
+ return _IPermissionController.Contract.AcceptAdmin(&_IPermissionController.TransactOpts, account)
+}
+
+// AcceptAdmin is a paid mutator transaction binding the contract method 0x628806ef.
+//
+// Solidity: function acceptAdmin(address account) returns()
+func (_IPermissionController *IPermissionControllerTransactorSession) AcceptAdmin(account common.Address) (*types.Transaction, error) {
+ return _IPermissionController.Contract.AcceptAdmin(&_IPermissionController.TransactOpts, account)
+}
+
+// AddPendingAdmin is a paid mutator transaction binding the contract method 0xeb5a4e87.
+//
+// Solidity: function addPendingAdmin(address account, address admin) returns()
+func (_IPermissionController *IPermissionControllerTransactor) AddPendingAdmin(opts *bind.TransactOpts, account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _IPermissionController.contract.Transact(opts, "addPendingAdmin", account, admin)
+}
+
+// AddPendingAdmin is a paid mutator transaction binding the contract method 0xeb5a4e87.
+//
+// Solidity: function addPendingAdmin(address account, address admin) returns()
+func (_IPermissionController *IPermissionControllerSession) AddPendingAdmin(account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _IPermissionController.Contract.AddPendingAdmin(&_IPermissionController.TransactOpts, account, admin)
+}
+
+// AddPendingAdmin is a paid mutator transaction binding the contract method 0xeb5a4e87.
+//
+// Solidity: function addPendingAdmin(address account, address admin) returns()
+func (_IPermissionController *IPermissionControllerTransactorSession) AddPendingAdmin(account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _IPermissionController.Contract.AddPendingAdmin(&_IPermissionController.TransactOpts, account, admin)
+}
+
+// CanCall is a paid mutator transaction binding the contract method 0xdf595cb8.
+//
+// Solidity: function canCall(address account, address caller, address target, bytes4 selector) returns(bool)
+func (_IPermissionController *IPermissionControllerTransactor) CanCall(opts *bind.TransactOpts, account common.Address, caller common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _IPermissionController.contract.Transact(opts, "canCall", account, caller, target, selector)
+}
+
+// CanCall is a paid mutator transaction binding the contract method 0xdf595cb8.
+//
+// Solidity: function canCall(address account, address caller, address target, bytes4 selector) returns(bool)
+func (_IPermissionController *IPermissionControllerSession) CanCall(account common.Address, caller common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _IPermissionController.Contract.CanCall(&_IPermissionController.TransactOpts, account, caller, target, selector)
+}
+
+// CanCall is a paid mutator transaction binding the contract method 0xdf595cb8.
+//
+// Solidity: function canCall(address account, address caller, address target, bytes4 selector) returns(bool)
+func (_IPermissionController *IPermissionControllerTransactorSession) CanCall(account common.Address, caller common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _IPermissionController.Contract.CanCall(&_IPermissionController.TransactOpts, account, caller, target, selector)
+}
+
+// GetAppointeePermissions is a paid mutator transaction binding the contract method 0x882a3b38.
+//
+// Solidity: function getAppointeePermissions(address account, address appointee) returns(address[], bytes4[])
+func (_IPermissionController *IPermissionControllerTransactor) GetAppointeePermissions(opts *bind.TransactOpts, account common.Address, appointee common.Address) (*types.Transaction, error) {
+ return _IPermissionController.contract.Transact(opts, "getAppointeePermissions", account, appointee)
+}
+
+// GetAppointeePermissions is a paid mutator transaction binding the contract method 0x882a3b38.
+//
+// Solidity: function getAppointeePermissions(address account, address appointee) returns(address[], bytes4[])
+func (_IPermissionController *IPermissionControllerSession) GetAppointeePermissions(account common.Address, appointee common.Address) (*types.Transaction, error) {
+ return _IPermissionController.Contract.GetAppointeePermissions(&_IPermissionController.TransactOpts, account, appointee)
+}
+
+// GetAppointeePermissions is a paid mutator transaction binding the contract method 0x882a3b38.
+//
+// Solidity: function getAppointeePermissions(address account, address appointee) returns(address[], bytes4[])
+func (_IPermissionController *IPermissionControllerTransactorSession) GetAppointeePermissions(account common.Address, appointee common.Address) (*types.Transaction, error) {
+ return _IPermissionController.Contract.GetAppointeePermissions(&_IPermissionController.TransactOpts, account, appointee)
+}
+
+// GetAppointees is a paid mutator transaction binding the contract method 0xfddbdefd.
+//
+// Solidity: function getAppointees(address account, address target, bytes4 selector) returns(address[])
+func (_IPermissionController *IPermissionControllerTransactor) GetAppointees(opts *bind.TransactOpts, account common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _IPermissionController.contract.Transact(opts, "getAppointees", account, target, selector)
+}
+
+// GetAppointees is a paid mutator transaction binding the contract method 0xfddbdefd.
+//
+// Solidity: function getAppointees(address account, address target, bytes4 selector) returns(address[])
+func (_IPermissionController *IPermissionControllerSession) GetAppointees(account common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _IPermissionController.Contract.GetAppointees(&_IPermissionController.TransactOpts, account, target, selector)
+}
+
+// GetAppointees is a paid mutator transaction binding the contract method 0xfddbdefd.
+//
+// Solidity: function getAppointees(address account, address target, bytes4 selector) returns(address[])
+func (_IPermissionController *IPermissionControllerTransactorSession) GetAppointees(account common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _IPermissionController.Contract.GetAppointees(&_IPermissionController.TransactOpts, account, target, selector)
+}
+
+// RemoveAdmin is a paid mutator transaction binding the contract method 0x268959e5.
+//
+// Solidity: function removeAdmin(address account, address admin) returns()
+func (_IPermissionController *IPermissionControllerTransactor) RemoveAdmin(opts *bind.TransactOpts, account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _IPermissionController.contract.Transact(opts, "removeAdmin", account, admin)
+}
+
+// RemoveAdmin is a paid mutator transaction binding the contract method 0x268959e5.
+//
+// Solidity: function removeAdmin(address account, address admin) returns()
+func (_IPermissionController *IPermissionControllerSession) RemoveAdmin(account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _IPermissionController.Contract.RemoveAdmin(&_IPermissionController.TransactOpts, account, admin)
+}
+
+// RemoveAdmin is a paid mutator transaction binding the contract method 0x268959e5.
+//
+// Solidity: function removeAdmin(address account, address admin) returns()
+func (_IPermissionController *IPermissionControllerTransactorSession) RemoveAdmin(account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _IPermissionController.Contract.RemoveAdmin(&_IPermissionController.TransactOpts, account, admin)
+}
+
+// RemoveAppointee is a paid mutator transaction binding the contract method 0x06641201.
+//
+// Solidity: function removeAppointee(address account, address appointee, address target, bytes4 selector) returns()
+func (_IPermissionController *IPermissionControllerTransactor) RemoveAppointee(opts *bind.TransactOpts, account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _IPermissionController.contract.Transact(opts, "removeAppointee", account, appointee, target, selector)
+}
+
+// RemoveAppointee is a paid mutator transaction binding the contract method 0x06641201.
+//
+// Solidity: function removeAppointee(address account, address appointee, address target, bytes4 selector) returns()
+func (_IPermissionController *IPermissionControllerSession) RemoveAppointee(account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _IPermissionController.Contract.RemoveAppointee(&_IPermissionController.TransactOpts, account, appointee, target, selector)
+}
+
+// RemoveAppointee is a paid mutator transaction binding the contract method 0x06641201.
+//
+// Solidity: function removeAppointee(address account, address appointee, address target, bytes4 selector) returns()
+func (_IPermissionController *IPermissionControllerTransactorSession) RemoveAppointee(account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _IPermissionController.Contract.RemoveAppointee(&_IPermissionController.TransactOpts, account, appointee, target, selector)
+}
+
+// RemovePendingAdmin is a paid mutator transaction binding the contract method 0x4f906cf9.
+//
+// Solidity: function removePendingAdmin(address account, address admin) returns()
+func (_IPermissionController *IPermissionControllerTransactor) RemovePendingAdmin(opts *bind.TransactOpts, account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _IPermissionController.contract.Transact(opts, "removePendingAdmin", account, admin)
+}
+
+// RemovePendingAdmin is a paid mutator transaction binding the contract method 0x4f906cf9.
+//
+// Solidity: function removePendingAdmin(address account, address admin) returns()
+func (_IPermissionController *IPermissionControllerSession) RemovePendingAdmin(account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _IPermissionController.Contract.RemovePendingAdmin(&_IPermissionController.TransactOpts, account, admin)
+}
+
+// RemovePendingAdmin is a paid mutator transaction binding the contract method 0x4f906cf9.
+//
+// Solidity: function removePendingAdmin(address account, address admin) returns()
+func (_IPermissionController *IPermissionControllerTransactorSession) RemovePendingAdmin(account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _IPermissionController.Contract.RemovePendingAdmin(&_IPermissionController.TransactOpts, account, admin)
+}
+
+// SetAppointee is a paid mutator transaction binding the contract method 0x950d806e.
+//
+// Solidity: function setAppointee(address account, address appointee, address target, bytes4 selector) returns()
+func (_IPermissionController *IPermissionControllerTransactor) SetAppointee(opts *bind.TransactOpts, account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _IPermissionController.contract.Transact(opts, "setAppointee", account, appointee, target, selector)
+}
+
+// SetAppointee is a paid mutator transaction binding the contract method 0x950d806e.
+//
+// Solidity: function setAppointee(address account, address appointee, address target, bytes4 selector) returns()
+func (_IPermissionController *IPermissionControllerSession) SetAppointee(account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _IPermissionController.Contract.SetAppointee(&_IPermissionController.TransactOpts, account, appointee, target, selector)
+}
+
+// SetAppointee is a paid mutator transaction binding the contract method 0x950d806e.
+//
+// Solidity: function setAppointee(address account, address appointee, address target, bytes4 selector) returns()
+func (_IPermissionController *IPermissionControllerTransactorSession) SetAppointee(account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _IPermissionController.Contract.SetAppointee(&_IPermissionController.TransactOpts, account, appointee, target, selector)
+}
+
+// IPermissionControllerAdminRemovedIterator is returned from FilterAdminRemoved and is used to iterate over the raw logs and unpacked data for AdminRemoved events raised by the IPermissionController contract.
+type IPermissionControllerAdminRemovedIterator struct {
+ Event *IPermissionControllerAdminRemoved // 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 *IPermissionControllerAdminRemovedIterator) 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(IPermissionControllerAdminRemoved)
+ 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(IPermissionControllerAdminRemoved)
+ 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 *IPermissionControllerAdminRemovedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IPermissionControllerAdminRemovedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IPermissionControllerAdminRemoved represents a AdminRemoved event raised by the IPermissionController contract.
+type IPermissionControllerAdminRemoved struct {
+ Account common.Address
+ Admin common.Address
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAdminRemoved is a free log retrieval operation binding the contract event 0xdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce.
+//
+// Solidity: event AdminRemoved(address indexed account, address admin)
+func (_IPermissionController *IPermissionControllerFilterer) FilterAdminRemoved(opts *bind.FilterOpts, account []common.Address) (*IPermissionControllerAdminRemovedIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _IPermissionController.contract.FilterLogs(opts, "AdminRemoved", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return &IPermissionControllerAdminRemovedIterator{contract: _IPermissionController.contract, event: "AdminRemoved", logs: logs, sub: sub}, nil
+}
+
+// WatchAdminRemoved is a free log subscription operation binding the contract event 0xdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce.
+//
+// Solidity: event AdminRemoved(address indexed account, address admin)
+func (_IPermissionController *IPermissionControllerFilterer) WatchAdminRemoved(opts *bind.WatchOpts, sink chan<- *IPermissionControllerAdminRemoved, account []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _IPermissionController.contract.WatchLogs(opts, "AdminRemoved", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(IPermissionControllerAdminRemoved)
+ if err := _IPermissionController.contract.UnpackLog(event, "AdminRemoved", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParseAdminRemoved is a log parse operation binding the contract event 0xdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce.
+//
+// Solidity: event AdminRemoved(address indexed account, address admin)
+func (_IPermissionController *IPermissionControllerFilterer) ParseAdminRemoved(log types.Log) (*IPermissionControllerAdminRemoved, error) {
+ event := new(IPermissionControllerAdminRemoved)
+ if err := _IPermissionController.contract.UnpackLog(event, "AdminRemoved", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// IPermissionControllerAdminSetIterator is returned from FilterAdminSet and is used to iterate over the raw logs and unpacked data for AdminSet events raised by the IPermissionController contract.
+type IPermissionControllerAdminSetIterator struct {
+ Event *IPermissionControllerAdminSet // 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 *IPermissionControllerAdminSetIterator) 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(IPermissionControllerAdminSet)
+ 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(IPermissionControllerAdminSet)
+ 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 *IPermissionControllerAdminSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IPermissionControllerAdminSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IPermissionControllerAdminSet represents a AdminSet event raised by the IPermissionController contract.
+type IPermissionControllerAdminSet struct {
+ Account common.Address
+ Admin common.Address
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAdminSet is a free log retrieval operation binding the contract event 0xbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff97.
+//
+// Solidity: event AdminSet(address indexed account, address admin)
+func (_IPermissionController *IPermissionControllerFilterer) FilterAdminSet(opts *bind.FilterOpts, account []common.Address) (*IPermissionControllerAdminSetIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _IPermissionController.contract.FilterLogs(opts, "AdminSet", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return &IPermissionControllerAdminSetIterator{contract: _IPermissionController.contract, event: "AdminSet", logs: logs, sub: sub}, nil
+}
+
+// WatchAdminSet is a free log subscription operation binding the contract event 0xbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff97.
+//
+// Solidity: event AdminSet(address indexed account, address admin)
+func (_IPermissionController *IPermissionControllerFilterer) WatchAdminSet(opts *bind.WatchOpts, sink chan<- *IPermissionControllerAdminSet, account []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _IPermissionController.contract.WatchLogs(opts, "AdminSet", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(IPermissionControllerAdminSet)
+ if err := _IPermissionController.contract.UnpackLog(event, "AdminSet", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParseAdminSet is a log parse operation binding the contract event 0xbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff97.
+//
+// Solidity: event AdminSet(address indexed account, address admin)
+func (_IPermissionController *IPermissionControllerFilterer) ParseAdminSet(log types.Log) (*IPermissionControllerAdminSet, error) {
+ event := new(IPermissionControllerAdminSet)
+ if err := _IPermissionController.contract.UnpackLog(event, "AdminSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// IPermissionControllerAppointeeRemovedIterator is returned from FilterAppointeeRemoved and is used to iterate over the raw logs and unpacked data for AppointeeRemoved events raised by the IPermissionController contract.
+type IPermissionControllerAppointeeRemovedIterator struct {
+ Event *IPermissionControllerAppointeeRemoved // 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 *IPermissionControllerAppointeeRemovedIterator) 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(IPermissionControllerAppointeeRemoved)
+ 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(IPermissionControllerAppointeeRemoved)
+ 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 *IPermissionControllerAppointeeRemovedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IPermissionControllerAppointeeRemovedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IPermissionControllerAppointeeRemoved represents a AppointeeRemoved event raised by the IPermissionController contract.
+type IPermissionControllerAppointeeRemoved struct {
+ Account common.Address
+ Appointee common.Address
+ Target common.Address
+ Selector [4]byte
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAppointeeRemoved is a free log retrieval operation binding the contract event 0x18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6.
+//
+// Solidity: event AppointeeRemoved(address indexed account, address indexed appointee, address target, bytes4 selector)
+func (_IPermissionController *IPermissionControllerFilterer) FilterAppointeeRemoved(opts *bind.FilterOpts, account []common.Address, appointee []common.Address) (*IPermissionControllerAppointeeRemovedIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+ var appointeeRule []interface{}
+ for _, appointeeItem := range appointee {
+ appointeeRule = append(appointeeRule, appointeeItem)
+ }
+
+ logs, sub, err := _IPermissionController.contract.FilterLogs(opts, "AppointeeRemoved", accountRule, appointeeRule)
+ if err != nil {
+ return nil, err
+ }
+ return &IPermissionControllerAppointeeRemovedIterator{contract: _IPermissionController.contract, event: "AppointeeRemoved", logs: logs, sub: sub}, nil
+}
+
+// WatchAppointeeRemoved is a free log subscription operation binding the contract event 0x18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6.
+//
+// Solidity: event AppointeeRemoved(address indexed account, address indexed appointee, address target, bytes4 selector)
+func (_IPermissionController *IPermissionControllerFilterer) WatchAppointeeRemoved(opts *bind.WatchOpts, sink chan<- *IPermissionControllerAppointeeRemoved, account []common.Address, appointee []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+ var appointeeRule []interface{}
+ for _, appointeeItem := range appointee {
+ appointeeRule = append(appointeeRule, appointeeItem)
+ }
+
+ logs, sub, err := _IPermissionController.contract.WatchLogs(opts, "AppointeeRemoved", accountRule, appointeeRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(IPermissionControllerAppointeeRemoved)
+ if err := _IPermissionController.contract.UnpackLog(event, "AppointeeRemoved", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParseAppointeeRemoved is a log parse operation binding the contract event 0x18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6.
+//
+// Solidity: event AppointeeRemoved(address indexed account, address indexed appointee, address target, bytes4 selector)
+func (_IPermissionController *IPermissionControllerFilterer) ParseAppointeeRemoved(log types.Log) (*IPermissionControllerAppointeeRemoved, error) {
+ event := new(IPermissionControllerAppointeeRemoved)
+ if err := _IPermissionController.contract.UnpackLog(event, "AppointeeRemoved", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// IPermissionControllerAppointeeSetIterator is returned from FilterAppointeeSet and is used to iterate over the raw logs and unpacked data for AppointeeSet events raised by the IPermissionController contract.
+type IPermissionControllerAppointeeSetIterator struct {
+ Event *IPermissionControllerAppointeeSet // 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 *IPermissionControllerAppointeeSetIterator) 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(IPermissionControllerAppointeeSet)
+ 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(IPermissionControllerAppointeeSet)
+ 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 *IPermissionControllerAppointeeSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IPermissionControllerAppointeeSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IPermissionControllerAppointeeSet represents a AppointeeSet event raised by the IPermissionController contract.
+type IPermissionControllerAppointeeSet struct {
+ Account common.Address
+ Appointee common.Address
+ Target common.Address
+ Selector [4]byte
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAppointeeSet is a free log retrieval operation binding the contract event 0x037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169.
+//
+// Solidity: event AppointeeSet(address indexed account, address indexed appointee, address target, bytes4 selector)
+func (_IPermissionController *IPermissionControllerFilterer) FilterAppointeeSet(opts *bind.FilterOpts, account []common.Address, appointee []common.Address) (*IPermissionControllerAppointeeSetIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+ var appointeeRule []interface{}
+ for _, appointeeItem := range appointee {
+ appointeeRule = append(appointeeRule, appointeeItem)
+ }
+
+ logs, sub, err := _IPermissionController.contract.FilterLogs(opts, "AppointeeSet", accountRule, appointeeRule)
+ if err != nil {
+ return nil, err
+ }
+ return &IPermissionControllerAppointeeSetIterator{contract: _IPermissionController.contract, event: "AppointeeSet", logs: logs, sub: sub}, nil
+}
+
+// WatchAppointeeSet is a free log subscription operation binding the contract event 0x037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169.
+//
+// Solidity: event AppointeeSet(address indexed account, address indexed appointee, address target, bytes4 selector)
+func (_IPermissionController *IPermissionControllerFilterer) WatchAppointeeSet(opts *bind.WatchOpts, sink chan<- *IPermissionControllerAppointeeSet, account []common.Address, appointee []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+ var appointeeRule []interface{}
+ for _, appointeeItem := range appointee {
+ appointeeRule = append(appointeeRule, appointeeItem)
+ }
+
+ logs, sub, err := _IPermissionController.contract.WatchLogs(opts, "AppointeeSet", accountRule, appointeeRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(IPermissionControllerAppointeeSet)
+ if err := _IPermissionController.contract.UnpackLog(event, "AppointeeSet", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParseAppointeeSet is a log parse operation binding the contract event 0x037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169.
+//
+// Solidity: event AppointeeSet(address indexed account, address indexed appointee, address target, bytes4 selector)
+func (_IPermissionController *IPermissionControllerFilterer) ParseAppointeeSet(log types.Log) (*IPermissionControllerAppointeeSet, error) {
+ event := new(IPermissionControllerAppointeeSet)
+ if err := _IPermissionController.contract.UnpackLog(event, "AppointeeSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// IPermissionControllerPendingAdminAddedIterator is returned from FilterPendingAdminAdded and is used to iterate over the raw logs and unpacked data for PendingAdminAdded events raised by the IPermissionController contract.
+type IPermissionControllerPendingAdminAddedIterator struct {
+ Event *IPermissionControllerPendingAdminAdded // 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 *IPermissionControllerPendingAdminAddedIterator) 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(IPermissionControllerPendingAdminAdded)
+ 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(IPermissionControllerPendingAdminAdded)
+ 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 *IPermissionControllerPendingAdminAddedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IPermissionControllerPendingAdminAddedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IPermissionControllerPendingAdminAdded represents a PendingAdminAdded event raised by the IPermissionController contract.
+type IPermissionControllerPendingAdminAdded struct {
+ Account common.Address
+ Admin common.Address
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterPendingAdminAdded is a free log retrieval operation binding the contract event 0xb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c.
+//
+// Solidity: event PendingAdminAdded(address indexed account, address admin)
+func (_IPermissionController *IPermissionControllerFilterer) FilterPendingAdminAdded(opts *bind.FilterOpts, account []common.Address) (*IPermissionControllerPendingAdminAddedIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _IPermissionController.contract.FilterLogs(opts, "PendingAdminAdded", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return &IPermissionControllerPendingAdminAddedIterator{contract: _IPermissionController.contract, event: "PendingAdminAdded", logs: logs, sub: sub}, nil
+}
+
+// WatchPendingAdminAdded is a free log subscription operation binding the contract event 0xb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c.
+//
+// Solidity: event PendingAdminAdded(address indexed account, address admin)
+func (_IPermissionController *IPermissionControllerFilterer) WatchPendingAdminAdded(opts *bind.WatchOpts, sink chan<- *IPermissionControllerPendingAdminAdded, account []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _IPermissionController.contract.WatchLogs(opts, "PendingAdminAdded", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(IPermissionControllerPendingAdminAdded)
+ if err := _IPermissionController.contract.UnpackLog(event, "PendingAdminAdded", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParsePendingAdminAdded is a log parse operation binding the contract event 0xb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c.
+//
+// Solidity: event PendingAdminAdded(address indexed account, address admin)
+func (_IPermissionController *IPermissionControllerFilterer) ParsePendingAdminAdded(log types.Log) (*IPermissionControllerPendingAdminAdded, error) {
+ event := new(IPermissionControllerPendingAdminAdded)
+ if err := _IPermissionController.contract.UnpackLog(event, "PendingAdminAdded", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// IPermissionControllerPendingAdminRemovedIterator is returned from FilterPendingAdminRemoved and is used to iterate over the raw logs and unpacked data for PendingAdminRemoved events raised by the IPermissionController contract.
+type IPermissionControllerPendingAdminRemovedIterator struct {
+ Event *IPermissionControllerPendingAdminRemoved // 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 *IPermissionControllerPendingAdminRemovedIterator) 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(IPermissionControllerPendingAdminRemoved)
+ 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(IPermissionControllerPendingAdminRemoved)
+ 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 *IPermissionControllerPendingAdminRemovedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IPermissionControllerPendingAdminRemovedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IPermissionControllerPendingAdminRemoved represents a PendingAdminRemoved event raised by the IPermissionController contract.
+type IPermissionControllerPendingAdminRemoved struct {
+ Account common.Address
+ Admin common.Address
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterPendingAdminRemoved is a free log retrieval operation binding the contract event 0xd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac7.
+//
+// Solidity: event PendingAdminRemoved(address indexed account, address admin)
+func (_IPermissionController *IPermissionControllerFilterer) FilterPendingAdminRemoved(opts *bind.FilterOpts, account []common.Address) (*IPermissionControllerPendingAdminRemovedIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _IPermissionController.contract.FilterLogs(opts, "PendingAdminRemoved", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return &IPermissionControllerPendingAdminRemovedIterator{contract: _IPermissionController.contract, event: "PendingAdminRemoved", logs: logs, sub: sub}, nil
+}
+
+// WatchPendingAdminRemoved is a free log subscription operation binding the contract event 0xd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac7.
+//
+// Solidity: event PendingAdminRemoved(address indexed account, address admin)
+func (_IPermissionController *IPermissionControllerFilterer) WatchPendingAdminRemoved(opts *bind.WatchOpts, sink chan<- *IPermissionControllerPendingAdminRemoved, account []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _IPermissionController.contract.WatchLogs(opts, "PendingAdminRemoved", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(IPermissionControllerPendingAdminRemoved)
+ if err := _IPermissionController.contract.UnpackLog(event, "PendingAdminRemoved", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParsePendingAdminRemoved is a log parse operation binding the contract event 0xd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac7.
+//
+// Solidity: event PendingAdminRemoved(address indexed account, address admin)
+func (_IPermissionController *IPermissionControllerFilterer) ParsePendingAdminRemoved(log types.Log) (*IPermissionControllerPendingAdminRemoved, error) {
+ event := new(IPermissionControllerPendingAdminRemoved)
+ if err := _IPermissionController.contract.UnpackLog(event, "PendingAdminRemoved", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
diff --git a/pkg/bindings/IRewardsCoordinator/binding.go b/pkg/bindings/IRewardsCoordinator/binding.go
index be0e62f805..5958951158 100644
--- a/pkg/bindings/IRewardsCoordinator/binding.go
+++ b/pkg/bindings/IRewardsCoordinator/binding.go
@@ -29,71 +29,71 @@ var (
_ = abi.ConvertType
)
-// 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
}
-// IRewardsCoordinatorOperatorDirectedRewardsSubmission is an auto generated low-level Go binding around an user-defined struct.
-type IRewardsCoordinatorOperatorDirectedRewardsSubmission struct {
- StrategiesAndMultipliers []IRewardsCoordinatorStrategyAndMultiplier
+// IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission is an auto generated low-level Go binding around an user-defined struct.
+type IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission struct {
+ StrategiesAndMultipliers []IRewardsCoordinatorTypesStrategyAndMultiplier
Token common.Address
- OperatorRewards []IRewardsCoordinatorOperatorReward
+ OperatorRewards []IRewardsCoordinatorTypesOperatorReward
StartTimestamp uint32
Duration uint32
Description string
}
-// IRewardsCoordinatorOperatorReward is an auto generated low-level Go binding around an user-defined struct.
-type IRewardsCoordinatorOperatorReward struct {
+// IRewardsCoordinatorTypesOperatorReward is an auto generated low-level Go binding around an user-defined struct.
+type IRewardsCoordinatorTypesOperatorReward struct {
Operator common.Address
Amount *big.Int
}
-// 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
}
// IRewardsCoordinatorMetaData contains all meta data concerning the IRewardsCoordinator contract.
var IRewardsCoordinatorMetaData = &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\":\"createOperatorDirectedAVSRewardsSubmission\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.OperatorDirectedRewardsSubmission[]\",\"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\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllEarners\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"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\":\"defaultOperatorSplitBips\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"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\":\"getOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRootIndexFromHash\",\"inputs\":[{\"name\":\"rootHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"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\":\"processClaims\",\"inputs\":[{\"name\":\"claims\",\"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\":\"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\":\"setDefaultOperatorSplit\",\"inputs\":[{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsForAllSubmitter\",\"inputs\":[{\"name\":\"_submitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_newValue\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsUpdater\",\"inputs\":[{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitRoot\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"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\":\"DefaultOperatorSplitBipsSet\",\"inputs\":[{\"name\":\"oldDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootDisabled\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootSubmitted\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAVSSplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDirectedAVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorDirectedRewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinator.OperatorDirectedRewardsSubmission\",\"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\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorPISplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsClaimed\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"claimedAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsForAllSubmitterSet\",\"inputs\":[{\"name\":\"rewardsForAllSubmitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"},{\"name\":\"newValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsSubmissionForAllCreated\",\"inputs\":[{\"name\":\"submitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"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\":\"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\":\"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\":\"createOperatorDirectedAVSRewardsSubmission\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllEarners\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cumulativeClaimed\",\"inputs\":[{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currRewardsCalculationEndTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"defaultOperatorSplitBips\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getCurrentClaimableDistributionRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentDistributionRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDistributionRootAtIndex\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDistributionRootsLength\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRootIndexFromHash\",\"inputs\":[{\"name\":\"rootHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_defaultSplitBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"processClaim\",\"inputs\":[{\"name\":\"claim\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"processClaims\",\"inputs\":[{\"name\":\"claims\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim[]\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rewardsUpdater\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setActivationDelay\",\"inputs\":[{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClaimerFor\",\"inputs\":[{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClaimerFor\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setDefaultOperatorSplit\",\"inputs\":[{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsForAllSubmitter\",\"inputs\":[{\"name\":\"_submitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_newValue\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsUpdater\",\"inputs\":[{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"submitRoot\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ActivationDelaySet\",\"inputs\":[{\"name\":\"oldActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"newActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ClaimerForSet\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldClaimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DefaultOperatorSplitBipsSet\",\"inputs\":[{\"name\":\"oldDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootDisabled\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootSubmitted\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAVSSplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDirectedAVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorDirectedRewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorPISplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsClaimed\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"claimedAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsForAllSubmitterSet\",\"inputs\":[{\"name\":\"rewardsForAllSubmitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"},{\"name\":\"newValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsSubmissionForAllCreated\",\"inputs\":[{\"name\":\"submitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsSubmissionForAllEarnersCreated\",\"inputs\":[{\"name\":\"tokenHopper\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsUpdaterSet\",\"inputs\":[{\"name\":\"oldRewardsUpdater\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newRewardsUpdater\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AmountExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AmountIsZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DurationExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EarningsNotGreaterThanClaimed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCalculationIntervalSecondsRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidClaimProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidDurationRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEarner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEarnerLeafIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGenesisRewardsTimestampRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRootIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStartTimestampRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTokenLeafIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewRootMustBeForNewCalculatedPeriod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorsNotInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreviousSplitPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RewardsEndTimestampNotElapsed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootAlreadyActivated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootNotActivated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SplitExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StartTimestampTooFarInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StartTimestampTooFarInPast\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategiesNotInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SubmissionNotRetroactive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnauthorizedCaller\",\"inputs\":[]}]",
}
// IRewardsCoordinatorABI is the input ABI used to generate the binding from.
@@ -431,7 +431,7 @@ func (_IRewardsCoordinator *IRewardsCoordinatorCallerSession) ActivationDelay()
// CalculateEarnerLeafHash is a free data retrieval call binding the contract method 0x149bc872.
//
// Solidity: function calculateEarnerLeafHash((address,bytes32) leaf) pure returns(bytes32)
-func (_IRewardsCoordinator *IRewardsCoordinatorCaller) CalculateEarnerLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorEarnerTreeMerkleLeaf) ([32]byte, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorCaller) CalculateEarnerLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorTypesEarnerTreeMerkleLeaf) ([32]byte, error) {
var out []interface{}
err := _IRewardsCoordinator.contract.Call(opts, &out, "calculateEarnerLeafHash", leaf)
@@ -448,21 +448,21 @@ func (_IRewardsCoordinator *IRewardsCoordinatorCaller) CalculateEarnerLeafHash(o
// CalculateEarnerLeafHash is a free data retrieval call binding the contract method 0x149bc872.
//
// Solidity: function calculateEarnerLeafHash((address,bytes32) leaf) pure returns(bytes32)
-func (_IRewardsCoordinator *IRewardsCoordinatorSession) CalculateEarnerLeafHash(leaf IRewardsCoordinatorEarnerTreeMerkleLeaf) ([32]byte, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorSession) CalculateEarnerLeafHash(leaf IRewardsCoordinatorTypesEarnerTreeMerkleLeaf) ([32]byte, error) {
return _IRewardsCoordinator.Contract.CalculateEarnerLeafHash(&_IRewardsCoordinator.CallOpts, leaf)
}
// CalculateEarnerLeafHash is a free data retrieval call binding the contract method 0x149bc872.
//
// Solidity: function calculateEarnerLeafHash((address,bytes32) leaf) pure returns(bytes32)
-func (_IRewardsCoordinator *IRewardsCoordinatorCallerSession) CalculateEarnerLeafHash(leaf IRewardsCoordinatorEarnerTreeMerkleLeaf) ([32]byte, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorCallerSession) CalculateEarnerLeafHash(leaf IRewardsCoordinatorTypesEarnerTreeMerkleLeaf) ([32]byte, error) {
return _IRewardsCoordinator.Contract.CalculateEarnerLeafHash(&_IRewardsCoordinator.CallOpts, leaf)
}
// CalculateTokenLeafHash is a free data retrieval call binding the contract method 0xf8cd8448.
//
// Solidity: function calculateTokenLeafHash((address,uint256) leaf) pure returns(bytes32)
-func (_IRewardsCoordinator *IRewardsCoordinatorCaller) CalculateTokenLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorTokenTreeMerkleLeaf) ([32]byte, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorCaller) CalculateTokenLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorTypesTokenTreeMerkleLeaf) ([32]byte, error) {
var out []interface{}
err := _IRewardsCoordinator.contract.Call(opts, &out, "calculateTokenLeafHash", leaf)
@@ -479,21 +479,21 @@ func (_IRewardsCoordinator *IRewardsCoordinatorCaller) CalculateTokenLeafHash(op
// CalculateTokenLeafHash is a free data retrieval call binding the contract method 0xf8cd8448.
//
// Solidity: function calculateTokenLeafHash((address,uint256) leaf) pure returns(bytes32)
-func (_IRewardsCoordinator *IRewardsCoordinatorSession) CalculateTokenLeafHash(leaf IRewardsCoordinatorTokenTreeMerkleLeaf) ([32]byte, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorSession) CalculateTokenLeafHash(leaf IRewardsCoordinatorTypesTokenTreeMerkleLeaf) ([32]byte, error) {
return _IRewardsCoordinator.Contract.CalculateTokenLeafHash(&_IRewardsCoordinator.CallOpts, leaf)
}
// CalculateTokenLeafHash is a free data retrieval call binding the contract method 0xf8cd8448.
//
// Solidity: function calculateTokenLeafHash((address,uint256) leaf) pure returns(bytes32)
-func (_IRewardsCoordinator *IRewardsCoordinatorCallerSession) CalculateTokenLeafHash(leaf IRewardsCoordinatorTokenTreeMerkleLeaf) ([32]byte, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorCallerSession) CalculateTokenLeafHash(leaf IRewardsCoordinatorTypesTokenTreeMerkleLeaf) ([32]byte, error) {
return _IRewardsCoordinator.Contract.CalculateTokenLeafHash(&_IRewardsCoordinator.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 (_IRewardsCoordinator *IRewardsCoordinatorCaller) CheckClaim(opts *bind.CallOpts, claim IRewardsCoordinatorRewardsMerkleClaim) (bool, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorCaller) CheckClaim(opts *bind.CallOpts, claim IRewardsCoordinatorTypesRewardsMerkleClaim) (bool, error) {
var out []interface{}
err := _IRewardsCoordinator.contract.Call(opts, &out, "checkClaim", claim)
@@ -510,14 +510,14 @@ func (_IRewardsCoordinator *IRewardsCoordinatorCaller) CheckClaim(opts *bind.Cal
// 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 (_IRewardsCoordinator *IRewardsCoordinatorSession) CheckClaim(claim IRewardsCoordinatorRewardsMerkleClaim) (bool, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorSession) CheckClaim(claim IRewardsCoordinatorTypesRewardsMerkleClaim) (bool, error) {
return _IRewardsCoordinator.Contract.CheckClaim(&_IRewardsCoordinator.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 (_IRewardsCoordinator *IRewardsCoordinatorCallerSession) CheckClaim(claim IRewardsCoordinatorRewardsMerkleClaim) (bool, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorCallerSession) CheckClaim(claim IRewardsCoordinatorTypesRewardsMerkleClaim) (bool, error) {
return _IRewardsCoordinator.Contract.CheckClaim(&_IRewardsCoordinator.CallOpts, claim)
}
@@ -645,49 +645,18 @@ func (_IRewardsCoordinator *IRewardsCoordinatorCallerSession) DefaultOperatorSpl
return _IRewardsCoordinator.Contract.DefaultOperatorSplitBips(&_IRewardsCoordinator.CallOpts)
}
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
-//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_IRewardsCoordinator *IRewardsCoordinatorCaller) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) {
- var out []interface{}
- err := _IRewardsCoordinator.contract.Call(opts, &out, "domainSeparator")
-
- if err != nil {
- return *new([32]byte), err
- }
-
- out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
-
- return out0, err
-
-}
-
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
-//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_IRewardsCoordinator *IRewardsCoordinatorSession) DomainSeparator() ([32]byte, error) {
- return _IRewardsCoordinator.Contract.DomainSeparator(&_IRewardsCoordinator.CallOpts)
-}
-
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
-//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_IRewardsCoordinator *IRewardsCoordinatorCallerSession) DomainSeparator() ([32]byte, error) {
- return _IRewardsCoordinator.Contract.DomainSeparator(&_IRewardsCoordinator.CallOpts)
-}
-
// GetCurrentClaimableDistributionRoot is a free data retrieval call binding the contract method 0x0e9a53cf.
//
// Solidity: function getCurrentClaimableDistributionRoot() view returns((bytes32,uint32,uint32,bool))
-func (_IRewardsCoordinator *IRewardsCoordinatorCaller) GetCurrentClaimableDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorDistributionRoot, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorCaller) GetCurrentClaimableDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorTypesDistributionRoot, error) {
var out []interface{}
err := _IRewardsCoordinator.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
@@ -696,29 +665,29 @@ func (_IRewardsCoordinator *IRewardsCoordinatorCaller) GetCurrentClaimableDistri
// GetCurrentClaimableDistributionRoot is a free data retrieval call binding the contract method 0x0e9a53cf.
//
// Solidity: function getCurrentClaimableDistributionRoot() view returns((bytes32,uint32,uint32,bool))
-func (_IRewardsCoordinator *IRewardsCoordinatorSession) GetCurrentClaimableDistributionRoot() (IRewardsCoordinatorDistributionRoot, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorSession) GetCurrentClaimableDistributionRoot() (IRewardsCoordinatorTypesDistributionRoot, error) {
return _IRewardsCoordinator.Contract.GetCurrentClaimableDistributionRoot(&_IRewardsCoordinator.CallOpts)
}
// GetCurrentClaimableDistributionRoot is a free data retrieval call binding the contract method 0x0e9a53cf.
//
// Solidity: function getCurrentClaimableDistributionRoot() view returns((bytes32,uint32,uint32,bool))
-func (_IRewardsCoordinator *IRewardsCoordinatorCallerSession) GetCurrentClaimableDistributionRoot() (IRewardsCoordinatorDistributionRoot, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorCallerSession) GetCurrentClaimableDistributionRoot() (IRewardsCoordinatorTypesDistributionRoot, error) {
return _IRewardsCoordinator.Contract.GetCurrentClaimableDistributionRoot(&_IRewardsCoordinator.CallOpts)
}
// GetCurrentDistributionRoot is a free data retrieval call binding the contract method 0x9be3d4e4.
//
// Solidity: function getCurrentDistributionRoot() view returns((bytes32,uint32,uint32,bool))
-func (_IRewardsCoordinator *IRewardsCoordinatorCaller) GetCurrentDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorDistributionRoot, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorCaller) GetCurrentDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorTypesDistributionRoot, error) {
var out []interface{}
err := _IRewardsCoordinator.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
@@ -727,29 +696,29 @@ func (_IRewardsCoordinator *IRewardsCoordinatorCaller) GetCurrentDistributionRoo
// GetCurrentDistributionRoot is a free data retrieval call binding the contract method 0x9be3d4e4.
//
// Solidity: function getCurrentDistributionRoot() view returns((bytes32,uint32,uint32,bool))
-func (_IRewardsCoordinator *IRewardsCoordinatorSession) GetCurrentDistributionRoot() (IRewardsCoordinatorDistributionRoot, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorSession) GetCurrentDistributionRoot() (IRewardsCoordinatorTypesDistributionRoot, error) {
return _IRewardsCoordinator.Contract.GetCurrentDistributionRoot(&_IRewardsCoordinator.CallOpts)
}
// GetCurrentDistributionRoot is a free data retrieval call binding the contract method 0x9be3d4e4.
//
// Solidity: function getCurrentDistributionRoot() view returns((bytes32,uint32,uint32,bool))
-func (_IRewardsCoordinator *IRewardsCoordinatorCallerSession) GetCurrentDistributionRoot() (IRewardsCoordinatorDistributionRoot, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorCallerSession) GetCurrentDistributionRoot() (IRewardsCoordinatorTypesDistributionRoot, error) {
return _IRewardsCoordinator.Contract.GetCurrentDistributionRoot(&_IRewardsCoordinator.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 (_IRewardsCoordinator *IRewardsCoordinatorCaller) GetDistributionRootAtIndex(opts *bind.CallOpts, index *big.Int) (IRewardsCoordinatorDistributionRoot, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorCaller) GetDistributionRootAtIndex(opts *bind.CallOpts, index *big.Int) (IRewardsCoordinatorTypesDistributionRoot, error) {
var out []interface{}
err := _IRewardsCoordinator.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
@@ -758,14 +727,14 @@ func (_IRewardsCoordinator *IRewardsCoordinatorCaller) GetDistributionRootAtInde
// GetDistributionRootAtIndex is a free data retrieval call binding the contract method 0xde02e503.
//
// Solidity: function getDistributionRootAtIndex(uint256 index) view returns((bytes32,uint32,uint32,bool))
-func (_IRewardsCoordinator *IRewardsCoordinatorSession) GetDistributionRootAtIndex(index *big.Int) (IRewardsCoordinatorDistributionRoot, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorSession) GetDistributionRootAtIndex(index *big.Int) (IRewardsCoordinatorTypesDistributionRoot, error) {
return _IRewardsCoordinator.Contract.GetDistributionRootAtIndex(&_IRewardsCoordinator.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 (_IRewardsCoordinator *IRewardsCoordinatorCallerSession) GetDistributionRootAtIndex(index *big.Int) (IRewardsCoordinatorDistributionRoot, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorCallerSession) GetDistributionRootAtIndex(index *big.Int) (IRewardsCoordinatorTypesDistributionRoot, error) {
return _IRewardsCoordinator.Contract.GetDistributionRootAtIndex(&_IRewardsCoordinator.CallOpts, index)
}
@@ -927,85 +896,85 @@ func (_IRewardsCoordinator *IRewardsCoordinatorCallerSession) RewardsUpdater() (
// CreateAVSRewardsSubmission is a paid mutator transaction binding the contract method 0xfce36c7d.
//
// Solidity: function createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns()
-func (_IRewardsCoordinator *IRewardsCoordinatorTransactor) CreateAVSRewardsSubmission(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorTransactor) CreateAVSRewardsSubmission(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _IRewardsCoordinator.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 (_IRewardsCoordinator *IRewardsCoordinatorSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _IRewardsCoordinator.Contract.CreateAVSRewardsSubmission(&_IRewardsCoordinator.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 (_IRewardsCoordinator *IRewardsCoordinatorTransactorSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorTransactorSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _IRewardsCoordinator.Contract.CreateAVSRewardsSubmission(&_IRewardsCoordinator.TransactOpts, rewardsSubmissions)
}
// CreateOperatorDirectedAVSRewardsSubmission is a paid mutator transaction binding the contract method 0x9cb9a5fa.
//
// Solidity: function createOperatorDirectedAVSRewardsSubmission(address avs, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[] operatorDirectedRewardsSubmissions) returns()
-func (_IRewardsCoordinator *IRewardsCoordinatorTransactor) CreateOperatorDirectedAVSRewardsSubmission(opts *bind.TransactOpts, avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorOperatorDirectedRewardsSubmission) (*types.Transaction, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorTransactor) CreateOperatorDirectedAVSRewardsSubmission(opts *bind.TransactOpts, avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission) (*types.Transaction, error) {
return _IRewardsCoordinator.contract.Transact(opts, "createOperatorDirectedAVSRewardsSubmission", avs, operatorDirectedRewardsSubmissions)
}
// CreateOperatorDirectedAVSRewardsSubmission is a paid mutator transaction binding the contract method 0x9cb9a5fa.
//
// Solidity: function createOperatorDirectedAVSRewardsSubmission(address avs, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[] operatorDirectedRewardsSubmissions) returns()
-func (_IRewardsCoordinator *IRewardsCoordinatorSession) CreateOperatorDirectedAVSRewardsSubmission(avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorOperatorDirectedRewardsSubmission) (*types.Transaction, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorSession) CreateOperatorDirectedAVSRewardsSubmission(avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission) (*types.Transaction, error) {
return _IRewardsCoordinator.Contract.CreateOperatorDirectedAVSRewardsSubmission(&_IRewardsCoordinator.TransactOpts, avs, operatorDirectedRewardsSubmissions)
}
// CreateOperatorDirectedAVSRewardsSubmission is a paid mutator transaction binding the contract method 0x9cb9a5fa.
//
// Solidity: function createOperatorDirectedAVSRewardsSubmission(address avs, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[] operatorDirectedRewardsSubmissions) returns()
-func (_IRewardsCoordinator *IRewardsCoordinatorTransactorSession) CreateOperatorDirectedAVSRewardsSubmission(avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorOperatorDirectedRewardsSubmission) (*types.Transaction, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorTransactorSession) CreateOperatorDirectedAVSRewardsSubmission(avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission) (*types.Transaction, error) {
return _IRewardsCoordinator.Contract.CreateOperatorDirectedAVSRewardsSubmission(&_IRewardsCoordinator.TransactOpts, avs, operatorDirectedRewardsSubmissions)
}
// CreateRewardsForAllEarners is a paid mutator transaction binding the contract method 0xff9f6cce.
//
// Solidity: function createRewardsForAllEarners(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns()
-func (_IRewardsCoordinator *IRewardsCoordinatorTransactor) CreateRewardsForAllEarners(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorTransactor) CreateRewardsForAllEarners(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _IRewardsCoordinator.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 (_IRewardsCoordinator *IRewardsCoordinatorSession) CreateRewardsForAllEarners(rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorSession) CreateRewardsForAllEarners(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _IRewardsCoordinator.Contract.CreateRewardsForAllEarners(&_IRewardsCoordinator.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 (_IRewardsCoordinator *IRewardsCoordinatorTransactorSession) CreateRewardsForAllEarners(rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorTransactorSession) CreateRewardsForAllEarners(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _IRewardsCoordinator.Contract.CreateRewardsForAllEarners(&_IRewardsCoordinator.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 (_IRewardsCoordinator *IRewardsCoordinatorTransactor) CreateRewardsForAllSubmission(opts *bind.TransactOpts, rewardsSubmission []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
- return _IRewardsCoordinator.contract.Transact(opts, "createRewardsForAllSubmission", rewardsSubmission)
+// Solidity: function createRewardsForAllSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns()
+func (_IRewardsCoordinator *IRewardsCoordinatorTransactor) CreateRewardsForAllSubmission(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
+ return _IRewardsCoordinator.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 (_IRewardsCoordinator *IRewardsCoordinatorSession) CreateRewardsForAllSubmission(rewardsSubmission []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
- return _IRewardsCoordinator.Contract.CreateRewardsForAllSubmission(&_IRewardsCoordinator.TransactOpts, rewardsSubmission)
+// Solidity: function createRewardsForAllSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns()
+func (_IRewardsCoordinator *IRewardsCoordinatorSession) CreateRewardsForAllSubmission(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
+ return _IRewardsCoordinator.Contract.CreateRewardsForAllSubmission(&_IRewardsCoordinator.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 (_IRewardsCoordinator *IRewardsCoordinatorTransactorSession) CreateRewardsForAllSubmission(rewardsSubmission []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
- return _IRewardsCoordinator.Contract.CreateRewardsForAllSubmission(&_IRewardsCoordinator.TransactOpts, rewardsSubmission)
+// Solidity: function createRewardsForAllSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns()
+func (_IRewardsCoordinator *IRewardsCoordinatorTransactorSession) CreateRewardsForAllSubmission(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
+ return _IRewardsCoordinator.Contract.CreateRewardsForAllSubmission(&_IRewardsCoordinator.TransactOpts, rewardsSubmissions)
}
// DisableRoot is a paid mutator transaction binding the contract method 0xf96abf2e.
@@ -1029,45 +998,66 @@ func (_IRewardsCoordinator *IRewardsCoordinatorTransactorSession) DisableRoot(ro
return _IRewardsCoordinator.Contract.DisableRoot(&_IRewardsCoordinator.TransactOpts, rootIndex)
}
+// Initialize is a paid mutator transaction binding the contract method 0xf6efbb59.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _defaultSplitBips) returns()
+func (_IRewardsCoordinator *IRewardsCoordinatorTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _defaultSplitBips uint16) (*types.Transaction, error) {
+ return _IRewardsCoordinator.contract.Transact(opts, "initialize", initialOwner, initialPausedStatus, _rewardsUpdater, _activationDelay, _defaultSplitBips)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0xf6efbb59.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _defaultSplitBips) returns()
+func (_IRewardsCoordinator *IRewardsCoordinatorSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _defaultSplitBips uint16) (*types.Transaction, error) {
+ return _IRewardsCoordinator.Contract.Initialize(&_IRewardsCoordinator.TransactOpts, initialOwner, initialPausedStatus, _rewardsUpdater, _activationDelay, _defaultSplitBips)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0xf6efbb59.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _defaultSplitBips) returns()
+func (_IRewardsCoordinator *IRewardsCoordinatorTransactorSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _defaultSplitBips uint16) (*types.Transaction, error) {
+ return _IRewardsCoordinator.Contract.Initialize(&_IRewardsCoordinator.TransactOpts, initialOwner, initialPausedStatus, _rewardsUpdater, _activationDelay, _defaultSplitBips)
+}
+
// ProcessClaim is a paid mutator transaction binding the contract method 0x3ccc861d.
//
// Solidity: function processClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]) claim, address recipient) returns()
-func (_IRewardsCoordinator *IRewardsCoordinatorTransactor) ProcessClaim(opts *bind.TransactOpts, claim IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorTransactor) ProcessClaim(opts *bind.TransactOpts, claim IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
return _IRewardsCoordinator.contract.Transact(opts, "processClaim", claim, recipient)
}
// ProcessClaim is a paid mutator transaction binding the contract method 0x3ccc861d.
//
// Solidity: function processClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]) claim, address recipient) returns()
-func (_IRewardsCoordinator *IRewardsCoordinatorSession) ProcessClaim(claim IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorSession) ProcessClaim(claim IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
return _IRewardsCoordinator.Contract.ProcessClaim(&_IRewardsCoordinator.TransactOpts, claim, recipient)
}
// ProcessClaim is a paid mutator transaction binding the contract method 0x3ccc861d.
//
// Solidity: function processClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]) claim, address recipient) returns()
-func (_IRewardsCoordinator *IRewardsCoordinatorTransactorSession) ProcessClaim(claim IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorTransactorSession) ProcessClaim(claim IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
return _IRewardsCoordinator.Contract.ProcessClaim(&_IRewardsCoordinator.TransactOpts, claim, recipient)
}
// ProcessClaims is a paid mutator transaction binding the contract method 0x4596021c.
//
// Solidity: function processClaims((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[])[] claims, address recipient) returns()
-func (_IRewardsCoordinator *IRewardsCoordinatorTransactor) ProcessClaims(opts *bind.TransactOpts, claims []IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorTransactor) ProcessClaims(opts *bind.TransactOpts, claims []IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
return _IRewardsCoordinator.contract.Transact(opts, "processClaims", claims, recipient)
}
// ProcessClaims is a paid mutator transaction binding the contract method 0x4596021c.
//
// Solidity: function processClaims((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[])[] claims, address recipient) returns()
-func (_IRewardsCoordinator *IRewardsCoordinatorSession) ProcessClaims(claims []IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorSession) ProcessClaims(claims []IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
return _IRewardsCoordinator.Contract.ProcessClaims(&_IRewardsCoordinator.TransactOpts, claims, recipient)
}
// ProcessClaims is a paid mutator transaction binding the contract method 0x4596021c.
//
// Solidity: function processClaims((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[])[] claims, address recipient) returns()
-func (_IRewardsCoordinator *IRewardsCoordinatorTransactorSession) ProcessClaims(claims []IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
+func (_IRewardsCoordinator *IRewardsCoordinatorTransactorSession) ProcessClaims(claims []IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
return _IRewardsCoordinator.Contract.ProcessClaims(&_IRewardsCoordinator.TransactOpts, claims, recipient)
}
@@ -1113,6 +1103,27 @@ func (_IRewardsCoordinator *IRewardsCoordinatorTransactorSession) SetClaimerFor(
return _IRewardsCoordinator.Contract.SetClaimerFor(&_IRewardsCoordinator.TransactOpts, claimer)
}
+// SetClaimerFor0 is a paid mutator transaction binding the contract method 0xf22cef85.
+//
+// Solidity: function setClaimerFor(address earner, address claimer) returns()
+func (_IRewardsCoordinator *IRewardsCoordinatorTransactor) SetClaimerFor0(opts *bind.TransactOpts, earner common.Address, claimer common.Address) (*types.Transaction, error) {
+ return _IRewardsCoordinator.contract.Transact(opts, "setClaimerFor0", earner, claimer)
+}
+
+// SetClaimerFor0 is a paid mutator transaction binding the contract method 0xf22cef85.
+//
+// Solidity: function setClaimerFor(address earner, address claimer) returns()
+func (_IRewardsCoordinator *IRewardsCoordinatorSession) SetClaimerFor0(earner common.Address, claimer common.Address) (*types.Transaction, error) {
+ return _IRewardsCoordinator.Contract.SetClaimerFor0(&_IRewardsCoordinator.TransactOpts, earner, claimer)
+}
+
+// SetClaimerFor0 is a paid mutator transaction binding the contract method 0xf22cef85.
+//
+// Solidity: function setClaimerFor(address earner, address claimer) returns()
+func (_IRewardsCoordinator *IRewardsCoordinatorTransactorSession) SetClaimerFor0(earner common.Address, claimer common.Address) (*types.Transaction, error) {
+ return _IRewardsCoordinator.Contract.SetClaimerFor0(&_IRewardsCoordinator.TransactOpts, earner, claimer)
+}
+
// SetDefaultOperatorSplit is a paid mutator transaction binding the contract method 0xa50a1d9c.
//
// Solidity: function setDefaultOperatorSplit(uint16 split) returns()
@@ -1311,7 +1322,7 @@ type IRewardsCoordinatorAVSRewardsSubmissionCreated struct {
Avs common.Address
SubmissionNonce *big.Int
RewardsSubmissionHash [32]byte
- RewardsSubmission IRewardsCoordinatorRewardsSubmission
+ RewardsSubmission IRewardsCoordinatorTypesRewardsSubmission
Raw types.Log // Blockchain specific contextual infos
}
@@ -2379,7 +2390,7 @@ type IRewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreated struct {
Avs common.Address
OperatorDirectedRewardsSubmissionHash [32]byte
SubmissionNonce *big.Int
- OperatorDirectedRewardsSubmission IRewardsCoordinatorOperatorDirectedRewardsSubmission
+ OperatorDirectedRewardsSubmission IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission
Raw types.Log // Blockchain specific contextual infos
}
@@ -3025,7 +3036,7 @@ type IRewardsCoordinatorRewardsSubmissionForAllCreated struct {
Submitter common.Address
SubmissionNonce *big.Int
RewardsSubmissionHash [32]byte
- RewardsSubmission IRewardsCoordinatorRewardsSubmission
+ RewardsSubmission IRewardsCoordinatorTypesRewardsSubmission
Raw types.Log // Blockchain specific contextual infos
}
@@ -3188,7 +3199,7 @@ type IRewardsCoordinatorRewardsSubmissionForAllEarnersCreated struct {
TokenHopper common.Address
SubmissionNonce *big.Int
RewardsSubmissionHash [32]byte
- RewardsSubmission IRewardsCoordinatorRewardsSubmission
+ RewardsSubmission IRewardsCoordinatorTypesRewardsSubmission
Raw types.Log // Blockchain specific contextual infos
}
diff --git a/pkg/bindings/IShareManager/binding.go b/pkg/bindings/IShareManager/binding.go
new file mode 100644
index 0000000000..11404066ab
--- /dev/null
+++ b/pkg/bindings/IShareManager/binding.go
@@ -0,0 +1,296 @@
+// Code generated - DO NOT EDIT.
+// This file is a generated binding and any manual changes will be lost.
+
+package IShareManager
+
+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
+)
+
+// IShareManagerMetaData contains all meta data concerning the IShareManager contract.
+var IShareManagerMetaData = &bind.MetaData{
+ ABI: "[{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"increaseBurnableShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"addedSharesToBurn\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"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\":\"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\"}]",
+}
+
+// IShareManagerABI is the input ABI used to generate the binding from.
+// Deprecated: Use IShareManagerMetaData.ABI instead.
+var IShareManagerABI = IShareManagerMetaData.ABI
+
+// IShareManager is an auto generated Go binding around an Ethereum contract.
+type IShareManager struct {
+ IShareManagerCaller // Read-only binding to the contract
+ IShareManagerTransactor // Write-only binding to the contract
+ IShareManagerFilterer // Log filterer for contract events
+}
+
+// IShareManagerCaller is an auto generated read-only Go binding around an Ethereum contract.
+type IShareManagerCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// IShareManagerTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type IShareManagerTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// IShareManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
+type IShareManagerFilterer struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// IShareManagerSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type IShareManagerSession struct {
+ Contract *IShareManager // 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
+}
+
+// IShareManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type IShareManagerCallerSession struct {
+ Contract *IShareManagerCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// IShareManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type IShareManagerTransactorSession struct {
+ Contract *IShareManagerTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// IShareManagerRaw is an auto generated low-level Go binding around an Ethereum contract.
+type IShareManagerRaw struct {
+ Contract *IShareManager // Generic contract binding to access the raw methods on
+}
+
+// IShareManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type IShareManagerCallerRaw struct {
+ Contract *IShareManagerCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// IShareManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type IShareManagerTransactorRaw struct {
+ Contract *IShareManagerTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewIShareManager creates a new instance of IShareManager, bound to a specific deployed contract.
+func NewIShareManager(address common.Address, backend bind.ContractBackend) (*IShareManager, error) {
+ contract, err := bindIShareManager(address, backend, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &IShareManager{IShareManagerCaller: IShareManagerCaller{contract: contract}, IShareManagerTransactor: IShareManagerTransactor{contract: contract}, IShareManagerFilterer: IShareManagerFilterer{contract: contract}}, nil
+}
+
+// NewIShareManagerCaller creates a new read-only instance of IShareManager, bound to a specific deployed contract.
+func NewIShareManagerCaller(address common.Address, caller bind.ContractCaller) (*IShareManagerCaller, error) {
+ contract, err := bindIShareManager(address, caller, nil, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &IShareManagerCaller{contract: contract}, nil
+}
+
+// NewIShareManagerTransactor creates a new write-only instance of IShareManager, bound to a specific deployed contract.
+func NewIShareManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IShareManagerTransactor, error) {
+ contract, err := bindIShareManager(address, nil, transactor, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &IShareManagerTransactor{contract: contract}, nil
+}
+
+// NewIShareManagerFilterer creates a new log filterer instance of IShareManager, bound to a specific deployed contract.
+func NewIShareManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IShareManagerFilterer, error) {
+ contract, err := bindIShareManager(address, nil, nil, filterer)
+ if err != nil {
+ return nil, err
+ }
+ return &IShareManagerFilterer{contract: contract}, nil
+}
+
+// bindIShareManager binds a generic wrapper to an already deployed contract.
+func bindIShareManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
+ parsed, err := IShareManagerMetaData.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 (_IShareManager *IShareManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _IShareManager.Contract.IShareManagerCaller.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 (_IShareManager *IShareManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _IShareManager.Contract.IShareManagerTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_IShareManager *IShareManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _IShareManager.Contract.IShareManagerTransactor.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 (_IShareManager *IShareManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _IShareManager.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 (_IShareManager *IShareManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _IShareManager.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_IShareManager *IShareManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _IShareManager.Contract.contract.Transact(opts, method, params...)
+}
+
+// StakerDepositShares is a free data retrieval call binding the contract method 0xfe243a17.
+//
+// Solidity: function stakerDepositShares(address user, address strategy) view returns(uint256 depositShares)
+func (_IShareManager *IShareManagerCaller) StakerDepositShares(opts *bind.CallOpts, user common.Address, strategy common.Address) (*big.Int, error) {
+ var out []interface{}
+ err := _IShareManager.contract.Call(opts, &out, "stakerDepositShares", user, strategy)
+
+ if err != nil {
+ return *new(*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+
+ return out0, err
+
+}
+
+// StakerDepositShares is a free data retrieval call binding the contract method 0xfe243a17.
+//
+// Solidity: function stakerDepositShares(address user, address strategy) view returns(uint256 depositShares)
+func (_IShareManager *IShareManagerSession) StakerDepositShares(user common.Address, strategy common.Address) (*big.Int, error) {
+ return _IShareManager.Contract.StakerDepositShares(&_IShareManager.CallOpts, user, strategy)
+}
+
+// StakerDepositShares is a free data retrieval call binding the contract method 0xfe243a17.
+//
+// Solidity: function stakerDepositShares(address user, address strategy) view returns(uint256 depositShares)
+func (_IShareManager *IShareManagerCallerSession) StakerDepositShares(user common.Address, strategy common.Address) (*big.Int, error) {
+ return _IShareManager.Contract.StakerDepositShares(&_IShareManager.CallOpts, user, strategy)
+}
+
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
+//
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_IShareManager *IShareManagerTransactor) AddShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _IShareManager.contract.Transact(opts, "addShares", staker, strategy, shares)
+}
+
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
+//
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_IShareManager *IShareManagerSession) AddShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _IShareManager.Contract.AddShares(&_IShareManager.TransactOpts, staker, strategy, shares)
+}
+
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
+//
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_IShareManager *IShareManagerTransactorSession) AddShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _IShareManager.Contract.AddShares(&_IShareManager.TransactOpts, staker, strategy, shares)
+}
+
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
+//
+// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns()
+func (_IShareManager *IShareManagerTransactor) IncreaseBurnableShares(opts *bind.TransactOpts, strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _IShareManager.contract.Transact(opts, "increaseBurnableShares", strategy, addedSharesToBurn)
+}
+
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
+//
+// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns()
+func (_IShareManager *IShareManagerSession) IncreaseBurnableShares(strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _IShareManager.Contract.IncreaseBurnableShares(&_IShareManager.TransactOpts, strategy, addedSharesToBurn)
+}
+
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
+//
+// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns()
+func (_IShareManager *IShareManagerTransactorSession) IncreaseBurnableShares(strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _IShareManager.Contract.IncreaseBurnableShares(&_IShareManager.TransactOpts, strategy, addedSharesToBurn)
+}
+
+// RemoveDepositShares is a paid mutator transaction binding the contract method 0x724af423.
+//
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_IShareManager *IShareManagerTransactor) RemoveDepositShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _IShareManager.contract.Transact(opts, "removeDepositShares", staker, strategy, depositSharesToRemove)
+}
+
+// RemoveDepositShares is a paid mutator transaction binding the contract method 0x724af423.
+//
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_IShareManager *IShareManagerSession) RemoveDepositShares(staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _IShareManager.Contract.RemoveDepositShares(&_IShareManager.TransactOpts, staker, strategy, depositSharesToRemove)
+}
+
+// RemoveDepositShares is a paid mutator transaction binding the contract method 0x724af423.
+//
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_IShareManager *IShareManagerTransactorSession) RemoveDepositShares(staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _IShareManager.Contract.RemoveDepositShares(&_IShareManager.TransactOpts, staker, strategy, depositSharesToRemove)
+}
+
+// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x2eae418c.
+//
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns()
+func (_IShareManager *IShareManagerTransactor) WithdrawSharesAsTokens(opts *bind.TransactOpts, staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _IShareManager.contract.Transact(opts, "withdrawSharesAsTokens", staker, strategy, token, shares)
+}
+
+// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x2eae418c.
+//
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns()
+func (_IShareManager *IShareManagerSession) WithdrawSharesAsTokens(staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _IShareManager.Contract.WithdrawSharesAsTokens(&_IShareManager.TransactOpts, staker, strategy, token, shares)
+}
+
+// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x2eae418c.
+//
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns()
+func (_IShareManager *IShareManagerTransactorSession) WithdrawSharesAsTokens(staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _IShareManager.Contract.WithdrawSharesAsTokens(&_IShareManager.TransactOpts, staker, strategy, token, shares)
+}
diff --git a/pkg/bindings/ISignatureUtils/binding.go b/pkg/bindings/ISignatureUtils/binding.go
index b462b4e5f2..4c5566fb39 100644
--- a/pkg/bindings/ISignatureUtils/binding.go
+++ b/pkg/bindings/ISignatureUtils/binding.go
@@ -31,7 +31,7 @@ var (
// ISignatureUtilsMetaData contains all meta data concerning the ISignatureUtils contract.
var ISignatureUtilsMetaData = &bind.MetaData{
- ABI: "[]",
+ ABI: "[{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]}]",
}
// ISignatureUtilsABI is the input ABI used to generate the binding from.
diff --git a/pkg/bindings/ISlasher/binding.go b/pkg/bindings/ISlasher/binding.go
deleted file mode 100644
index 70f600220f..0000000000
--- a/pkg/bindings/ISlasher/binding.go
+++ /dev/null
@@ -1,1480 +0,0 @@
-// Code generated - DO NOT EDIT.
-// This file is a generated binding and any manual changes will be lost.
-
-package ISlasher
-
-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
-}
-
-// ISlasherMetaData contains all meta data concerning the ISlasher contract.
-var ISlasherMetaData = &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}]",
-}
-
-// ISlasherABI is the input ABI used to generate the binding from.
-// Deprecated: Use ISlasherMetaData.ABI instead.
-var ISlasherABI = ISlasherMetaData.ABI
-
-// ISlasher is an auto generated Go binding around an Ethereum contract.
-type ISlasher struct {
- ISlasherCaller // Read-only binding to the contract
- ISlasherTransactor // Write-only binding to the contract
- ISlasherFilterer // Log filterer for contract events
-}
-
-// ISlasherCaller is an auto generated read-only Go binding around an Ethereum contract.
-type ISlasherCaller struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// ISlasherTransactor is an auto generated write-only Go binding around an Ethereum contract.
-type ISlasherTransactor struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// ISlasherFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
-type ISlasherFilterer struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// ISlasherSession is an auto generated Go binding around an Ethereum contract,
-// with pre-set call and transact options.
-type ISlasherSession struct {
- Contract *ISlasher // 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
-}
-
-// ISlasherCallerSession is an auto generated read-only Go binding around an Ethereum contract,
-// with pre-set call options.
-type ISlasherCallerSession struct {
- Contract *ISlasherCaller // Generic contract caller binding to set the session for
- CallOpts bind.CallOpts // Call options to use throughout this session
-}
-
-// ISlasherTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
-// with pre-set transact options.
-type ISlasherTransactorSession struct {
- Contract *ISlasherTransactor // Generic contract transactor binding to set the session for
- TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
-}
-
-// ISlasherRaw is an auto generated low-level Go binding around an Ethereum contract.
-type ISlasherRaw struct {
- Contract *ISlasher // Generic contract binding to access the raw methods on
-}
-
-// ISlasherCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
-type ISlasherCallerRaw struct {
- Contract *ISlasherCaller // Generic read-only contract binding to access the raw methods on
-}
-
-// ISlasherTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
-type ISlasherTransactorRaw struct {
- Contract *ISlasherTransactor // Generic write-only contract binding to access the raw methods on
-}
-
-// NewISlasher creates a new instance of ISlasher, bound to a specific deployed contract.
-func NewISlasher(address common.Address, backend bind.ContractBackend) (*ISlasher, error) {
- contract, err := bindISlasher(address, backend, backend, backend)
- if err != nil {
- return nil, err
- }
- return &ISlasher{ISlasherCaller: ISlasherCaller{contract: contract}, ISlasherTransactor: ISlasherTransactor{contract: contract}, ISlasherFilterer: ISlasherFilterer{contract: contract}}, nil
-}
-
-// NewISlasherCaller creates a new read-only instance of ISlasher, bound to a specific deployed contract.
-func NewISlasherCaller(address common.Address, caller bind.ContractCaller) (*ISlasherCaller, error) {
- contract, err := bindISlasher(address, caller, nil, nil)
- if err != nil {
- return nil, err
- }
- return &ISlasherCaller{contract: contract}, nil
-}
-
-// NewISlasherTransactor creates a new write-only instance of ISlasher, bound to a specific deployed contract.
-func NewISlasherTransactor(address common.Address, transactor bind.ContractTransactor) (*ISlasherTransactor, error) {
- contract, err := bindISlasher(address, nil, transactor, nil)
- if err != nil {
- return nil, err
- }
- return &ISlasherTransactor{contract: contract}, nil
-}
-
-// NewISlasherFilterer creates a new log filterer instance of ISlasher, bound to a specific deployed contract.
-func NewISlasherFilterer(address common.Address, filterer bind.ContractFilterer) (*ISlasherFilterer, error) {
- contract, err := bindISlasher(address, nil, nil, filterer)
- if err != nil {
- return nil, err
- }
- return &ISlasherFilterer{contract: contract}, nil
-}
-
-// bindISlasher binds a generic wrapper to an already deployed contract.
-func bindISlasher(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
- parsed, err := ISlasherMetaData.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 (_ISlasher *ISlasherRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
- return _ISlasher.Contract.ISlasherCaller.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 (_ISlasher *ISlasherRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
- return _ISlasher.Contract.ISlasherTransactor.contract.Transfer(opts)
-}
-
-// Transact invokes the (paid) contract method with params as input values.
-func (_ISlasher *ISlasherRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
- return _ISlasher.Contract.ISlasherTransactor.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 (_ISlasher *ISlasherCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
- return _ISlasher.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 (_ISlasher *ISlasherTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
- return _ISlasher.Contract.contract.Transfer(opts)
-}
-
-// Transact invokes the (paid) contract method with params as input values.
-func (_ISlasher *ISlasherTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
- return _ISlasher.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 (_ISlasher *ISlasherCaller) CanSlash(opts *bind.CallOpts, toBeSlashed common.Address, slashingContract common.Address) (bool, error) {
- var out []interface{}
- err := _ISlasher.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 (_ISlasher *ISlasherSession) CanSlash(toBeSlashed common.Address, slashingContract common.Address) (bool, error) {
- return _ISlasher.Contract.CanSlash(&_ISlasher.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 (_ISlasher *ISlasherCallerSession) CanSlash(toBeSlashed common.Address, slashingContract common.Address) (bool, error) {
- return _ISlasher.Contract.CanSlash(&_ISlasher.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 (_ISlasher *ISlasherCaller) ContractCanSlashOperatorUntilBlock(opts *bind.CallOpts, operator common.Address, serviceContract common.Address) (uint32, error) {
- var out []interface{}
- err := _ISlasher.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 (_ISlasher *ISlasherSession) ContractCanSlashOperatorUntilBlock(operator common.Address, serviceContract common.Address) (uint32, error) {
- return _ISlasher.Contract.ContractCanSlashOperatorUntilBlock(&_ISlasher.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 (_ISlasher *ISlasherCallerSession) ContractCanSlashOperatorUntilBlock(operator common.Address, serviceContract common.Address) (uint32, error) {
- return _ISlasher.Contract.ContractCanSlashOperatorUntilBlock(&_ISlasher.CallOpts, operator, serviceContract)
-}
-
-// Delegation is a free data retrieval call binding the contract method 0xdf5cf723.
-//
-// Solidity: function delegation() view returns(address)
-func (_ISlasher *ISlasherCaller) Delegation(opts *bind.CallOpts) (common.Address, error) {
- var out []interface{}
- err := _ISlasher.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 (_ISlasher *ISlasherSession) Delegation() (common.Address, error) {
- return _ISlasher.Contract.Delegation(&_ISlasher.CallOpts)
-}
-
-// Delegation is a free data retrieval call binding the contract method 0xdf5cf723.
-//
-// Solidity: function delegation() view returns(address)
-func (_ISlasher *ISlasherCallerSession) Delegation() (common.Address, error) {
- return _ISlasher.Contract.Delegation(&_ISlasher.CallOpts)
-}
-
-// GetCorrectValueForInsertAfter is a free data retrieval call binding the contract method 0x723e59c7.
-//
-// Solidity: function getCorrectValueForInsertAfter(address operator, uint32 updateBlock) view returns(uint256)
-func (_ISlasher *ISlasherCaller) GetCorrectValueForInsertAfter(opts *bind.CallOpts, operator common.Address, updateBlock uint32) (*big.Int, error) {
- var out []interface{}
- err := _ISlasher.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 (_ISlasher *ISlasherSession) GetCorrectValueForInsertAfter(operator common.Address, updateBlock uint32) (*big.Int, error) {
- return _ISlasher.Contract.GetCorrectValueForInsertAfter(&_ISlasher.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 (_ISlasher *ISlasherCallerSession) GetCorrectValueForInsertAfter(operator common.Address, updateBlock uint32) (*big.Int, error) {
- return _ISlasher.Contract.GetCorrectValueForInsertAfter(&_ISlasher.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 (_ISlasher *ISlasherCaller) GetMiddlewareTimesIndexServeUntilBlock(opts *bind.CallOpts, operator common.Address, index uint32) (uint32, error) {
- var out []interface{}
- err := _ISlasher.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 (_ISlasher *ISlasherSession) GetMiddlewareTimesIndexServeUntilBlock(operator common.Address, index uint32) (uint32, error) {
- return _ISlasher.Contract.GetMiddlewareTimesIndexServeUntilBlock(&_ISlasher.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 (_ISlasher *ISlasherCallerSession) GetMiddlewareTimesIndexServeUntilBlock(operator common.Address, index uint32) (uint32, error) {
- return _ISlasher.Contract.GetMiddlewareTimesIndexServeUntilBlock(&_ISlasher.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 (_ISlasher *ISlasherCaller) GetMiddlewareTimesIndexStalestUpdateBlock(opts *bind.CallOpts, operator common.Address, index uint32) (uint32, error) {
- var out []interface{}
- err := _ISlasher.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 (_ISlasher *ISlasherSession) GetMiddlewareTimesIndexStalestUpdateBlock(operator common.Address, index uint32) (uint32, error) {
- return _ISlasher.Contract.GetMiddlewareTimesIndexStalestUpdateBlock(&_ISlasher.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 (_ISlasher *ISlasherCallerSession) GetMiddlewareTimesIndexStalestUpdateBlock(operator common.Address, index uint32) (uint32, error) {
- return _ISlasher.Contract.GetMiddlewareTimesIndexStalestUpdateBlock(&_ISlasher.CallOpts, operator, index)
-}
-
-// IsFrozen is a free data retrieval call binding the contract method 0xe5839836.
-//
-// Solidity: function isFrozen(address staker) view returns(bool)
-func (_ISlasher *ISlasherCaller) IsFrozen(opts *bind.CallOpts, staker common.Address) (bool, error) {
- var out []interface{}
- err := _ISlasher.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 (_ISlasher *ISlasherSession) IsFrozen(staker common.Address) (bool, error) {
- return _ISlasher.Contract.IsFrozen(&_ISlasher.CallOpts, staker)
-}
-
-// IsFrozen is a free data retrieval call binding the contract method 0xe5839836.
-//
-// Solidity: function isFrozen(address staker) view returns(bool)
-func (_ISlasher *ISlasherCallerSession) IsFrozen(staker common.Address) (bool, error) {
- return _ISlasher.Contract.IsFrozen(&_ISlasher.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 (_ISlasher *ISlasherCaller) LatestUpdateBlock(opts *bind.CallOpts, operator common.Address, serviceContract common.Address) (uint32, error) {
- var out []interface{}
- err := _ISlasher.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 (_ISlasher *ISlasherSession) LatestUpdateBlock(operator common.Address, serviceContract common.Address) (uint32, error) {
- return _ISlasher.Contract.LatestUpdateBlock(&_ISlasher.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 (_ISlasher *ISlasherCallerSession) LatestUpdateBlock(operator common.Address, serviceContract common.Address) (uint32, error) {
- return _ISlasher.Contract.LatestUpdateBlock(&_ISlasher.CallOpts, operator, serviceContract)
-}
-
-// MiddlewareTimesLength is a free data retrieval call binding the contract method 0xa49db732.
-//
-// Solidity: function middlewareTimesLength(address operator) view returns(uint256)
-func (_ISlasher *ISlasherCaller) MiddlewareTimesLength(opts *bind.CallOpts, operator common.Address) (*big.Int, error) {
- var out []interface{}
- err := _ISlasher.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 (_ISlasher *ISlasherSession) MiddlewareTimesLength(operator common.Address) (*big.Int, error) {
- return _ISlasher.Contract.MiddlewareTimesLength(&_ISlasher.CallOpts, operator)
-}
-
-// MiddlewareTimesLength is a free data retrieval call binding the contract method 0xa49db732.
-//
-// Solidity: function middlewareTimesLength(address operator) view returns(uint256)
-func (_ISlasher *ISlasherCallerSession) MiddlewareTimesLength(operator common.Address) (*big.Int, error) {
- return _ISlasher.Contract.MiddlewareTimesLength(&_ISlasher.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 (_ISlasher *ISlasherCaller) OperatorToMiddlewareTimes(opts *bind.CallOpts, operator common.Address, arrayIndex *big.Int) (ISlasherMiddlewareTimes, error) {
- var out []interface{}
- err := _ISlasher.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 (_ISlasher *ISlasherSession) OperatorToMiddlewareTimes(operator common.Address, arrayIndex *big.Int) (ISlasherMiddlewareTimes, error) {
- return _ISlasher.Contract.OperatorToMiddlewareTimes(&_ISlasher.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 (_ISlasher *ISlasherCallerSession) OperatorToMiddlewareTimes(operator common.Address, arrayIndex *big.Int) (ISlasherMiddlewareTimes, error) {
- return _ISlasher.Contract.OperatorToMiddlewareTimes(&_ISlasher.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 (_ISlasher *ISlasherCaller) OperatorWhitelistedContractsLinkedListEntry(opts *bind.CallOpts, operator common.Address, node common.Address) (bool, *big.Int, *big.Int, error) {
- var out []interface{}
- err := _ISlasher.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 (_ISlasher *ISlasherSession) OperatorWhitelistedContractsLinkedListEntry(operator common.Address, node common.Address) (bool, *big.Int, *big.Int, error) {
- return _ISlasher.Contract.OperatorWhitelistedContractsLinkedListEntry(&_ISlasher.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 (_ISlasher *ISlasherCallerSession) OperatorWhitelistedContractsLinkedListEntry(operator common.Address, node common.Address) (bool, *big.Int, *big.Int, error) {
- return _ISlasher.Contract.OperatorWhitelistedContractsLinkedListEntry(&_ISlasher.CallOpts, operator, node)
-}
-
-// OperatorWhitelistedContractsLinkedListSize is a free data retrieval call binding the contract method 0xe921d4fa.
-//
-// Solidity: function operatorWhitelistedContractsLinkedListSize(address operator) view returns(uint256)
-func (_ISlasher *ISlasherCaller) OperatorWhitelistedContractsLinkedListSize(opts *bind.CallOpts, operator common.Address) (*big.Int, error) {
- var out []interface{}
- err := _ISlasher.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 (_ISlasher *ISlasherSession) OperatorWhitelistedContractsLinkedListSize(operator common.Address) (*big.Int, error) {
- return _ISlasher.Contract.OperatorWhitelistedContractsLinkedListSize(&_ISlasher.CallOpts, operator)
-}
-
-// OperatorWhitelistedContractsLinkedListSize is a free data retrieval call binding the contract method 0xe921d4fa.
-//
-// Solidity: function operatorWhitelistedContractsLinkedListSize(address operator) view returns(uint256)
-func (_ISlasher *ISlasherCallerSession) OperatorWhitelistedContractsLinkedListSize(operator common.Address) (*big.Int, error) {
- return _ISlasher.Contract.OperatorWhitelistedContractsLinkedListSize(&_ISlasher.CallOpts, operator)
-}
-
-// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
-//
-// Solidity: function strategyManager() view returns(address)
-func (_ISlasher *ISlasherCaller) StrategyManager(opts *bind.CallOpts) (common.Address, error) {
- var out []interface{}
- err := _ISlasher.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 (_ISlasher *ISlasherSession) StrategyManager() (common.Address, error) {
- return _ISlasher.Contract.StrategyManager(&_ISlasher.CallOpts)
-}
-
-// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38.
-//
-// Solidity: function strategyManager() view returns(address)
-func (_ISlasher *ISlasherCallerSession) StrategyManager() (common.Address, error) {
- return _ISlasher.Contract.StrategyManager(&_ISlasher.CallOpts)
-}
-
-// CanWithdraw is a paid mutator transaction binding the contract method 0x8105e043.
-//
-// Solidity: function canWithdraw(address operator, uint32 withdrawalStartBlock, uint256 middlewareTimesIndex) returns(bool)
-func (_ISlasher *ISlasherTransactor) CanWithdraw(opts *bind.TransactOpts, operator common.Address, withdrawalStartBlock uint32, middlewareTimesIndex *big.Int) (*types.Transaction, error) {
- return _ISlasher.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 (_ISlasher *ISlasherSession) CanWithdraw(operator common.Address, withdrawalStartBlock uint32, middlewareTimesIndex *big.Int) (*types.Transaction, error) {
- return _ISlasher.Contract.CanWithdraw(&_ISlasher.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 (_ISlasher *ISlasherTransactorSession) CanWithdraw(operator common.Address, withdrawalStartBlock uint32, middlewareTimesIndex *big.Int) (*types.Transaction, error) {
- return _ISlasher.Contract.CanWithdraw(&_ISlasher.TransactOpts, operator, withdrawalStartBlock, middlewareTimesIndex)
-}
-
-// FreezeOperator is a paid mutator transaction binding the contract method 0x38c8ee64.
-//
-// Solidity: function freezeOperator(address toBeFrozen) returns()
-func (_ISlasher *ISlasherTransactor) FreezeOperator(opts *bind.TransactOpts, toBeFrozen common.Address) (*types.Transaction, error) {
- return _ISlasher.contract.Transact(opts, "freezeOperator", toBeFrozen)
-}
-
-// FreezeOperator is a paid mutator transaction binding the contract method 0x38c8ee64.
-//
-// Solidity: function freezeOperator(address toBeFrozen) returns()
-func (_ISlasher *ISlasherSession) FreezeOperator(toBeFrozen common.Address) (*types.Transaction, error) {
- return _ISlasher.Contract.FreezeOperator(&_ISlasher.TransactOpts, toBeFrozen)
-}
-
-// FreezeOperator is a paid mutator transaction binding the contract method 0x38c8ee64.
-//
-// Solidity: function freezeOperator(address toBeFrozen) returns()
-func (_ISlasher *ISlasherTransactorSession) FreezeOperator(toBeFrozen common.Address) (*types.Transaction, error) {
- return _ISlasher.Contract.FreezeOperator(&_ISlasher.TransactOpts, toBeFrozen)
-}
-
-// OptIntoSlashing is a paid mutator transaction binding the contract method 0xf73b7519.
-//
-// Solidity: function optIntoSlashing(address contractAddress) returns()
-func (_ISlasher *ISlasherTransactor) OptIntoSlashing(opts *bind.TransactOpts, contractAddress common.Address) (*types.Transaction, error) {
- return _ISlasher.contract.Transact(opts, "optIntoSlashing", contractAddress)
-}
-
-// OptIntoSlashing is a paid mutator transaction binding the contract method 0xf73b7519.
-//
-// Solidity: function optIntoSlashing(address contractAddress) returns()
-func (_ISlasher *ISlasherSession) OptIntoSlashing(contractAddress common.Address) (*types.Transaction, error) {
- return _ISlasher.Contract.OptIntoSlashing(&_ISlasher.TransactOpts, contractAddress)
-}
-
-// OptIntoSlashing is a paid mutator transaction binding the contract method 0xf73b7519.
-//
-// Solidity: function optIntoSlashing(address contractAddress) returns()
-func (_ISlasher *ISlasherTransactorSession) OptIntoSlashing(contractAddress common.Address) (*types.Transaction, error) {
- return _ISlasher.Contract.OptIntoSlashing(&_ISlasher.TransactOpts, contractAddress)
-}
-
-// RecordFirstStakeUpdate is a paid mutator transaction binding the contract method 0x175d3205.
-//
-// Solidity: function recordFirstStakeUpdate(address operator, uint32 serveUntilBlock) returns()
-func (_ISlasher *ISlasherTransactor) RecordFirstStakeUpdate(opts *bind.TransactOpts, operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) {
- return _ISlasher.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 (_ISlasher *ISlasherSession) RecordFirstStakeUpdate(operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) {
- return _ISlasher.Contract.RecordFirstStakeUpdate(&_ISlasher.TransactOpts, operator, serveUntilBlock)
-}
-
-// RecordFirstStakeUpdate is a paid mutator transaction binding the contract method 0x175d3205.
-//
-// Solidity: function recordFirstStakeUpdate(address operator, uint32 serveUntilBlock) returns()
-func (_ISlasher *ISlasherTransactorSession) RecordFirstStakeUpdate(operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) {
- return _ISlasher.Contract.RecordFirstStakeUpdate(&_ISlasher.TransactOpts, operator, serveUntilBlock)
-}
-
-// RecordLastStakeUpdateAndRevokeSlashingAbility is a paid mutator transaction binding the contract method 0x0ffabbce.
-//
-// Solidity: function recordLastStakeUpdateAndRevokeSlashingAbility(address operator, uint32 serveUntilBlock) returns()
-func (_ISlasher *ISlasherTransactor) RecordLastStakeUpdateAndRevokeSlashingAbility(opts *bind.TransactOpts, operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) {
- return _ISlasher.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 (_ISlasher *ISlasherSession) RecordLastStakeUpdateAndRevokeSlashingAbility(operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) {
- return _ISlasher.Contract.RecordLastStakeUpdateAndRevokeSlashingAbility(&_ISlasher.TransactOpts, operator, serveUntilBlock)
-}
-
-// RecordLastStakeUpdateAndRevokeSlashingAbility is a paid mutator transaction binding the contract method 0x0ffabbce.
-//
-// Solidity: function recordLastStakeUpdateAndRevokeSlashingAbility(address operator, uint32 serveUntilBlock) returns()
-func (_ISlasher *ISlasherTransactorSession) RecordLastStakeUpdateAndRevokeSlashingAbility(operator common.Address, serveUntilBlock uint32) (*types.Transaction, error) {
- return _ISlasher.Contract.RecordLastStakeUpdateAndRevokeSlashingAbility(&_ISlasher.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 (_ISlasher *ISlasherTransactor) RecordStakeUpdate(opts *bind.TransactOpts, operator common.Address, updateBlock uint32, serveUntilBlock uint32, insertAfter *big.Int) (*types.Transaction, error) {
- return _ISlasher.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 (_ISlasher *ISlasherSession) RecordStakeUpdate(operator common.Address, updateBlock uint32, serveUntilBlock uint32, insertAfter *big.Int) (*types.Transaction, error) {
- return _ISlasher.Contract.RecordStakeUpdate(&_ISlasher.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 (_ISlasher *ISlasherTransactorSession) RecordStakeUpdate(operator common.Address, updateBlock uint32, serveUntilBlock uint32, insertAfter *big.Int) (*types.Transaction, error) {
- return _ISlasher.Contract.RecordStakeUpdate(&_ISlasher.TransactOpts, operator, updateBlock, serveUntilBlock, insertAfter)
-}
-
-// ResetFrozenStatus is a paid mutator transaction binding the contract method 0x7cf72bba.
-//
-// Solidity: function resetFrozenStatus(address[] frozenAddresses) returns()
-func (_ISlasher *ISlasherTransactor) ResetFrozenStatus(opts *bind.TransactOpts, frozenAddresses []common.Address) (*types.Transaction, error) {
- return _ISlasher.contract.Transact(opts, "resetFrozenStatus", frozenAddresses)
-}
-
-// ResetFrozenStatus is a paid mutator transaction binding the contract method 0x7cf72bba.
-//
-// Solidity: function resetFrozenStatus(address[] frozenAddresses) returns()
-func (_ISlasher *ISlasherSession) ResetFrozenStatus(frozenAddresses []common.Address) (*types.Transaction, error) {
- return _ISlasher.Contract.ResetFrozenStatus(&_ISlasher.TransactOpts, frozenAddresses)
-}
-
-// ResetFrozenStatus is a paid mutator transaction binding the contract method 0x7cf72bba.
-//
-// Solidity: function resetFrozenStatus(address[] frozenAddresses) returns()
-func (_ISlasher *ISlasherTransactorSession) ResetFrozenStatus(frozenAddresses []common.Address) (*types.Transaction, error) {
- return _ISlasher.Contract.ResetFrozenStatus(&_ISlasher.TransactOpts, frozenAddresses)
-}
-
-// ISlasherFrozenStatusResetIterator is returned from FilterFrozenStatusReset and is used to iterate over the raw logs and unpacked data for FrozenStatusReset events raised by the ISlasher contract.
-type ISlasherFrozenStatusResetIterator struct {
- Event *ISlasherFrozenStatusReset // 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 *ISlasherFrozenStatusResetIterator) 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(ISlasherFrozenStatusReset)
- 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(ISlasherFrozenStatusReset)
- 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 *ISlasherFrozenStatusResetIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *ISlasherFrozenStatusResetIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// ISlasherFrozenStatusReset represents a FrozenStatusReset event raised by the ISlasher contract.
-type ISlasherFrozenStatusReset 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 (_ISlasher *ISlasherFilterer) FilterFrozenStatusReset(opts *bind.FilterOpts, previouslySlashedAddress []common.Address) (*ISlasherFrozenStatusResetIterator, error) {
-
- var previouslySlashedAddressRule []interface{}
- for _, previouslySlashedAddressItem := range previouslySlashedAddress {
- previouslySlashedAddressRule = append(previouslySlashedAddressRule, previouslySlashedAddressItem)
- }
-
- logs, sub, err := _ISlasher.contract.FilterLogs(opts, "FrozenStatusReset", previouslySlashedAddressRule)
- if err != nil {
- return nil, err
- }
- return &ISlasherFrozenStatusResetIterator{contract: _ISlasher.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 (_ISlasher *ISlasherFilterer) WatchFrozenStatusReset(opts *bind.WatchOpts, sink chan<- *ISlasherFrozenStatusReset, previouslySlashedAddress []common.Address) (event.Subscription, error) {
-
- var previouslySlashedAddressRule []interface{}
- for _, previouslySlashedAddressItem := range previouslySlashedAddress {
- previouslySlashedAddressRule = append(previouslySlashedAddressRule, previouslySlashedAddressItem)
- }
-
- logs, sub, err := _ISlasher.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(ISlasherFrozenStatusReset)
- if err := _ISlasher.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 (_ISlasher *ISlasherFilterer) ParseFrozenStatusReset(log types.Log) (*ISlasherFrozenStatusReset, error) {
- event := new(ISlasherFrozenStatusReset)
- if err := _ISlasher.contract.UnpackLog(event, "FrozenStatusReset", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
-// ISlasherMiddlewareTimesAddedIterator is returned from FilterMiddlewareTimesAdded and is used to iterate over the raw logs and unpacked data for MiddlewareTimesAdded events raised by the ISlasher contract.
-type ISlasherMiddlewareTimesAddedIterator struct {
- Event *ISlasherMiddlewareTimesAdded // 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 *ISlasherMiddlewareTimesAddedIterator) 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(ISlasherMiddlewareTimesAdded)
- 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(ISlasherMiddlewareTimesAdded)
- 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 *ISlasherMiddlewareTimesAddedIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *ISlasherMiddlewareTimesAddedIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// ISlasherMiddlewareTimesAdded represents a MiddlewareTimesAdded event raised by the ISlasher contract.
-type ISlasherMiddlewareTimesAdded 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 (_ISlasher *ISlasherFilterer) FilterMiddlewareTimesAdded(opts *bind.FilterOpts) (*ISlasherMiddlewareTimesAddedIterator, error) {
-
- logs, sub, err := _ISlasher.contract.FilterLogs(opts, "MiddlewareTimesAdded")
- if err != nil {
- return nil, err
- }
- return &ISlasherMiddlewareTimesAddedIterator{contract: _ISlasher.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 (_ISlasher *ISlasherFilterer) WatchMiddlewareTimesAdded(opts *bind.WatchOpts, sink chan<- *ISlasherMiddlewareTimesAdded) (event.Subscription, error) {
-
- logs, sub, err := _ISlasher.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(ISlasherMiddlewareTimesAdded)
- if err := _ISlasher.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 (_ISlasher *ISlasherFilterer) ParseMiddlewareTimesAdded(log types.Log) (*ISlasherMiddlewareTimesAdded, error) {
- event := new(ISlasherMiddlewareTimesAdded)
- if err := _ISlasher.contract.UnpackLog(event, "MiddlewareTimesAdded", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
-// ISlasherOperatorFrozenIterator is returned from FilterOperatorFrozen and is used to iterate over the raw logs and unpacked data for OperatorFrozen events raised by the ISlasher contract.
-type ISlasherOperatorFrozenIterator struct {
- Event *ISlasherOperatorFrozen // 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 *ISlasherOperatorFrozenIterator) 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(ISlasherOperatorFrozen)
- 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(ISlasherOperatorFrozen)
- 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 *ISlasherOperatorFrozenIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *ISlasherOperatorFrozenIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// ISlasherOperatorFrozen represents a OperatorFrozen event raised by the ISlasher contract.
-type ISlasherOperatorFrozen 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 (_ISlasher *ISlasherFilterer) FilterOperatorFrozen(opts *bind.FilterOpts, slashedOperator []common.Address, slashingContract []common.Address) (*ISlasherOperatorFrozenIterator, 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 := _ISlasher.contract.FilterLogs(opts, "OperatorFrozen", slashedOperatorRule, slashingContractRule)
- if err != nil {
- return nil, err
- }
- return &ISlasherOperatorFrozenIterator{contract: _ISlasher.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 (_ISlasher *ISlasherFilterer) WatchOperatorFrozen(opts *bind.WatchOpts, sink chan<- *ISlasherOperatorFrozen, 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 := _ISlasher.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(ISlasherOperatorFrozen)
- if err := _ISlasher.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 (_ISlasher *ISlasherFilterer) ParseOperatorFrozen(log types.Log) (*ISlasherOperatorFrozen, error) {
- event := new(ISlasherOperatorFrozen)
- if err := _ISlasher.contract.UnpackLog(event, "OperatorFrozen", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
-// ISlasherOptedIntoSlashingIterator is returned from FilterOptedIntoSlashing and is used to iterate over the raw logs and unpacked data for OptedIntoSlashing events raised by the ISlasher contract.
-type ISlasherOptedIntoSlashingIterator struct {
- Event *ISlasherOptedIntoSlashing // 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 *ISlasherOptedIntoSlashingIterator) 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(ISlasherOptedIntoSlashing)
- 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(ISlasherOptedIntoSlashing)
- 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 *ISlasherOptedIntoSlashingIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *ISlasherOptedIntoSlashingIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// ISlasherOptedIntoSlashing represents a OptedIntoSlashing event raised by the ISlasher contract.
-type ISlasherOptedIntoSlashing 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 (_ISlasher *ISlasherFilterer) FilterOptedIntoSlashing(opts *bind.FilterOpts, operator []common.Address, contractAddress []common.Address) (*ISlasherOptedIntoSlashingIterator, 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 := _ISlasher.contract.FilterLogs(opts, "OptedIntoSlashing", operatorRule, contractAddressRule)
- if err != nil {
- return nil, err
- }
- return &ISlasherOptedIntoSlashingIterator{contract: _ISlasher.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 (_ISlasher *ISlasherFilterer) WatchOptedIntoSlashing(opts *bind.WatchOpts, sink chan<- *ISlasherOptedIntoSlashing, 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 := _ISlasher.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(ISlasherOptedIntoSlashing)
- if err := _ISlasher.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 (_ISlasher *ISlasherFilterer) ParseOptedIntoSlashing(log types.Log) (*ISlasherOptedIntoSlashing, error) {
- event := new(ISlasherOptedIntoSlashing)
- if err := _ISlasher.contract.UnpackLog(event, "OptedIntoSlashing", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
-// ISlasherSlashingAbilityRevokedIterator is returned from FilterSlashingAbilityRevoked and is used to iterate over the raw logs and unpacked data for SlashingAbilityRevoked events raised by the ISlasher contract.
-type ISlasherSlashingAbilityRevokedIterator struct {
- Event *ISlasherSlashingAbilityRevoked // 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 *ISlasherSlashingAbilityRevokedIterator) 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(ISlasherSlashingAbilityRevoked)
- 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(ISlasherSlashingAbilityRevoked)
- 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 *ISlasherSlashingAbilityRevokedIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *ISlasherSlashingAbilityRevokedIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// ISlasherSlashingAbilityRevoked represents a SlashingAbilityRevoked event raised by the ISlasher contract.
-type ISlasherSlashingAbilityRevoked 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 (_ISlasher *ISlasherFilterer) FilterSlashingAbilityRevoked(opts *bind.FilterOpts, operator []common.Address, contractAddress []common.Address) (*ISlasherSlashingAbilityRevokedIterator, 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 := _ISlasher.contract.FilterLogs(opts, "SlashingAbilityRevoked", operatorRule, contractAddressRule)
- if err != nil {
- return nil, err
- }
- return &ISlasherSlashingAbilityRevokedIterator{contract: _ISlasher.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 (_ISlasher *ISlasherFilterer) WatchSlashingAbilityRevoked(opts *bind.WatchOpts, sink chan<- *ISlasherSlashingAbilityRevoked, 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 := _ISlasher.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(ISlasherSlashingAbilityRevoked)
- if err := _ISlasher.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 (_ISlasher *ISlasherFilterer) ParseSlashingAbilityRevoked(log types.Log) (*ISlasherSlashingAbilityRevoked, error) {
- event := new(ISlasherSlashingAbilityRevoked)
- if err := _ISlasher.contract.UnpackLog(event, "SlashingAbilityRevoked", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
diff --git a/pkg/bindings/ISocketUpdater/binding.go b/pkg/bindings/ISocketUpdater/binding.go
deleted file mode 100644
index 8db40dbb88..0000000000
--- a/pkg/bindings/ISocketUpdater/binding.go
+++ /dev/null
@@ -1,347 +0,0 @@
-// Code generated - DO NOT EDIT.
-// This file is a generated binding and any manual changes will be lost.
-
-package ISocketUpdater
-
-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
-)
-
-// ISocketUpdaterMetaData contains all meta data concerning the ISocketUpdater contract.
-var ISocketUpdaterMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"function\",\"name\":\"updateSocket\",\"inputs\":[{\"name\":\"socket\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"OperatorSocketUpdate\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"socket\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false}]",
-}
-
-// ISocketUpdaterABI is the input ABI used to generate the binding from.
-// Deprecated: Use ISocketUpdaterMetaData.ABI instead.
-var ISocketUpdaterABI = ISocketUpdaterMetaData.ABI
-
-// ISocketUpdater is an auto generated Go binding around an Ethereum contract.
-type ISocketUpdater struct {
- ISocketUpdaterCaller // Read-only binding to the contract
- ISocketUpdaterTransactor // Write-only binding to the contract
- ISocketUpdaterFilterer // Log filterer for contract events
-}
-
-// ISocketUpdaterCaller is an auto generated read-only Go binding around an Ethereum contract.
-type ISocketUpdaterCaller struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// ISocketUpdaterTransactor is an auto generated write-only Go binding around an Ethereum contract.
-type ISocketUpdaterTransactor struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// ISocketUpdaterFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
-type ISocketUpdaterFilterer struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// ISocketUpdaterSession is an auto generated Go binding around an Ethereum contract,
-// with pre-set call and transact options.
-type ISocketUpdaterSession struct {
- Contract *ISocketUpdater // 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
-}
-
-// ISocketUpdaterCallerSession is an auto generated read-only Go binding around an Ethereum contract,
-// with pre-set call options.
-type ISocketUpdaterCallerSession struct {
- Contract *ISocketUpdaterCaller // Generic contract caller binding to set the session for
- CallOpts bind.CallOpts // Call options to use throughout this session
-}
-
-// ISocketUpdaterTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
-// with pre-set transact options.
-type ISocketUpdaterTransactorSession struct {
- Contract *ISocketUpdaterTransactor // Generic contract transactor binding to set the session for
- TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
-}
-
-// ISocketUpdaterRaw is an auto generated low-level Go binding around an Ethereum contract.
-type ISocketUpdaterRaw struct {
- Contract *ISocketUpdater // Generic contract binding to access the raw methods on
-}
-
-// ISocketUpdaterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
-type ISocketUpdaterCallerRaw struct {
- Contract *ISocketUpdaterCaller // Generic read-only contract binding to access the raw methods on
-}
-
-// ISocketUpdaterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
-type ISocketUpdaterTransactorRaw struct {
- Contract *ISocketUpdaterTransactor // Generic write-only contract binding to access the raw methods on
-}
-
-// NewISocketUpdater creates a new instance of ISocketUpdater, bound to a specific deployed contract.
-func NewISocketUpdater(address common.Address, backend bind.ContractBackend) (*ISocketUpdater, error) {
- contract, err := bindISocketUpdater(address, backend, backend, backend)
- if err != nil {
- return nil, err
- }
- return &ISocketUpdater{ISocketUpdaterCaller: ISocketUpdaterCaller{contract: contract}, ISocketUpdaterTransactor: ISocketUpdaterTransactor{contract: contract}, ISocketUpdaterFilterer: ISocketUpdaterFilterer{contract: contract}}, nil
-}
-
-// NewISocketUpdaterCaller creates a new read-only instance of ISocketUpdater, bound to a specific deployed contract.
-func NewISocketUpdaterCaller(address common.Address, caller bind.ContractCaller) (*ISocketUpdaterCaller, error) {
- contract, err := bindISocketUpdater(address, caller, nil, nil)
- if err != nil {
- return nil, err
- }
- return &ISocketUpdaterCaller{contract: contract}, nil
-}
-
-// NewISocketUpdaterTransactor creates a new write-only instance of ISocketUpdater, bound to a specific deployed contract.
-func NewISocketUpdaterTransactor(address common.Address, transactor bind.ContractTransactor) (*ISocketUpdaterTransactor, error) {
- contract, err := bindISocketUpdater(address, nil, transactor, nil)
- if err != nil {
- return nil, err
- }
- return &ISocketUpdaterTransactor{contract: contract}, nil
-}
-
-// NewISocketUpdaterFilterer creates a new log filterer instance of ISocketUpdater, bound to a specific deployed contract.
-func NewISocketUpdaterFilterer(address common.Address, filterer bind.ContractFilterer) (*ISocketUpdaterFilterer, error) {
- contract, err := bindISocketUpdater(address, nil, nil, filterer)
- if err != nil {
- return nil, err
- }
- return &ISocketUpdaterFilterer{contract: contract}, nil
-}
-
-// bindISocketUpdater binds a generic wrapper to an already deployed contract.
-func bindISocketUpdater(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
- parsed, err := ISocketUpdaterMetaData.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 (_ISocketUpdater *ISocketUpdaterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
- return _ISocketUpdater.Contract.ISocketUpdaterCaller.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 (_ISocketUpdater *ISocketUpdaterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
- return _ISocketUpdater.Contract.ISocketUpdaterTransactor.contract.Transfer(opts)
-}
-
-// Transact invokes the (paid) contract method with params as input values.
-func (_ISocketUpdater *ISocketUpdaterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
- return _ISocketUpdater.Contract.ISocketUpdaterTransactor.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 (_ISocketUpdater *ISocketUpdaterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
- return _ISocketUpdater.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 (_ISocketUpdater *ISocketUpdaterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
- return _ISocketUpdater.Contract.contract.Transfer(opts)
-}
-
-// Transact invokes the (paid) contract method with params as input values.
-func (_ISocketUpdater *ISocketUpdaterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
- return _ISocketUpdater.Contract.contract.Transact(opts, method, params...)
-}
-
-// UpdateSocket is a paid mutator transaction binding the contract method 0x0cf4b767.
-//
-// Solidity: function updateSocket(string socket) returns()
-func (_ISocketUpdater *ISocketUpdaterTransactor) UpdateSocket(opts *bind.TransactOpts, socket string) (*types.Transaction, error) {
- return _ISocketUpdater.contract.Transact(opts, "updateSocket", socket)
-}
-
-// UpdateSocket is a paid mutator transaction binding the contract method 0x0cf4b767.
-//
-// Solidity: function updateSocket(string socket) returns()
-func (_ISocketUpdater *ISocketUpdaterSession) UpdateSocket(socket string) (*types.Transaction, error) {
- return _ISocketUpdater.Contract.UpdateSocket(&_ISocketUpdater.TransactOpts, socket)
-}
-
-// UpdateSocket is a paid mutator transaction binding the contract method 0x0cf4b767.
-//
-// Solidity: function updateSocket(string socket) returns()
-func (_ISocketUpdater *ISocketUpdaterTransactorSession) UpdateSocket(socket string) (*types.Transaction, error) {
- return _ISocketUpdater.Contract.UpdateSocket(&_ISocketUpdater.TransactOpts, socket)
-}
-
-// ISocketUpdaterOperatorSocketUpdateIterator is returned from FilterOperatorSocketUpdate and is used to iterate over the raw logs and unpacked data for OperatorSocketUpdate events raised by the ISocketUpdater contract.
-type ISocketUpdaterOperatorSocketUpdateIterator struct {
- Event *ISocketUpdaterOperatorSocketUpdate // 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 *ISocketUpdaterOperatorSocketUpdateIterator) 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(ISocketUpdaterOperatorSocketUpdate)
- 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(ISocketUpdaterOperatorSocketUpdate)
- 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 *ISocketUpdaterOperatorSocketUpdateIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *ISocketUpdaterOperatorSocketUpdateIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// ISocketUpdaterOperatorSocketUpdate represents a OperatorSocketUpdate event raised by the ISocketUpdater contract.
-type ISocketUpdaterOperatorSocketUpdate struct {
- OperatorId [32]byte
- Socket string
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterOperatorSocketUpdate is a free log retrieval operation binding the contract event 0xec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa.
-//
-// Solidity: event OperatorSocketUpdate(bytes32 indexed operatorId, string socket)
-func (_ISocketUpdater *ISocketUpdaterFilterer) FilterOperatorSocketUpdate(opts *bind.FilterOpts, operatorId [][32]byte) (*ISocketUpdaterOperatorSocketUpdateIterator, error) {
-
- var operatorIdRule []interface{}
- for _, operatorIdItem := range operatorId {
- operatorIdRule = append(operatorIdRule, operatorIdItem)
- }
-
- logs, sub, err := _ISocketUpdater.contract.FilterLogs(opts, "OperatorSocketUpdate", operatorIdRule)
- if err != nil {
- return nil, err
- }
- return &ISocketUpdaterOperatorSocketUpdateIterator{contract: _ISocketUpdater.contract, event: "OperatorSocketUpdate", logs: logs, sub: sub}, nil
-}
-
-// WatchOperatorSocketUpdate is a free log subscription operation binding the contract event 0xec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa.
-//
-// Solidity: event OperatorSocketUpdate(bytes32 indexed operatorId, string socket)
-func (_ISocketUpdater *ISocketUpdaterFilterer) WatchOperatorSocketUpdate(opts *bind.WatchOpts, sink chan<- *ISocketUpdaterOperatorSocketUpdate, operatorId [][32]byte) (event.Subscription, error) {
-
- var operatorIdRule []interface{}
- for _, operatorIdItem := range operatorId {
- operatorIdRule = append(operatorIdRule, operatorIdItem)
- }
-
- logs, sub, err := _ISocketUpdater.contract.WatchLogs(opts, "OperatorSocketUpdate", operatorIdRule)
- if err != nil {
- return nil, err
- }
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(ISocketUpdaterOperatorSocketUpdate)
- if err := _ISocketUpdater.contract.UnpackLog(event, "OperatorSocketUpdate", log); err != nil {
- return err
- }
- event.Raw = log
-
- select {
- case sink <- event:
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- }
- }), nil
-}
-
-// ParseOperatorSocketUpdate is a log parse operation binding the contract event 0xec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa.
-//
-// Solidity: event OperatorSocketUpdate(bytes32 indexed operatorId, string socket)
-func (_ISocketUpdater *ISocketUpdaterFilterer) ParseOperatorSocketUpdate(log types.Log) (*ISocketUpdaterOperatorSocketUpdate, error) {
- event := new(ISocketUpdaterOperatorSocketUpdate)
- if err := _ISocketUpdater.contract.UnpackLog(event, "OperatorSocketUpdate", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
diff --git a/pkg/bindings/IStrategy/binding.go b/pkg/bindings/IStrategy/binding.go
index 4d3e0fcae0..fa62821336 100644
--- a/pkg/bindings/IStrategy/binding.go
+++ b/pkg/bindings/IStrategy/binding.go
@@ -31,7 +31,7 @@ var (
// IStrategyMetaData contains all meta data concerning the IStrategy contract.
var IStrategyMetaData = &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\":[]}]",
}
// IStrategyABI is the input ABI used to generate the binding from.
diff --git a/pkg/bindings/IStrategyFactory/binding.go b/pkg/bindings/IStrategyFactory/binding.go
index 70f95fe3ee..47fe1eac8f 100644
--- a/pkg/bindings/IStrategyFactory/binding.go
+++ b/pkg/bindings/IStrategyFactory/binding.go
@@ -31,7 +31,7 @@ var (
// IStrategyFactoryMetaData contains all meta data concerning the IStrategyFactory contract.
var IStrategyFactoryMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"function\",\"name\":\"deployNewStrategy\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"newStrategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deployedStrategies\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromWhitelist\",\"inputs\":[{\"name\":\"strategiesToRemoveFromWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"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\":\"strategyBeacon\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"whitelistStrategies\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"thirdPartyTransfersForbiddenValues\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"StrategyBeaconModified\",\"inputs\":[{\"name\":\"previousBeacon\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIBeacon\"},{\"name\":\"newBeacon\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIBeacon\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategySetForToken\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenBlacklisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"}],\"anonymous\":false}]",
+ ABI: "[{\"type\":\"function\",\"name\":\"deployNewStrategy\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"newStrategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deployedStrategies\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromWhitelist\",\"inputs\":[{\"name\":\"strategiesToRemoveFromWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyBeacon\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"whitelistStrategies\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"StrategyBeaconModified\",\"inputs\":[{\"name\":\"previousBeacon\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIBeacon\"},{\"name\":\"newBeacon\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIBeacon\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategySetForToken\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenBlacklisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AlreadyBlacklisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BlacklistedToken\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyAlreadyExists\",\"inputs\":[]}]",
}
// IStrategyFactoryABI is the input ABI used to generate the binding from.
@@ -284,46 +284,25 @@ func (_IStrategyFactory *IStrategyFactoryTransactorSession) RemoveStrategiesFrom
return _IStrategyFactory.Contract.RemoveStrategiesFromWhitelist(&_IStrategyFactory.TransactOpts, strategiesToRemoveFromWhitelist)
}
-// SetThirdPartyTransfersForbidden is a paid mutator transaction binding the contract method 0x4e5a4263.
+// WhitelistStrategies is a paid mutator transaction binding the contract method 0xb768ebc9.
//
-// Solidity: function setThirdPartyTransfersForbidden(address strategy, bool value) returns()
-func (_IStrategyFactory *IStrategyFactoryTransactor) SetThirdPartyTransfersForbidden(opts *bind.TransactOpts, strategy common.Address, value bool) (*types.Transaction, error) {
- return _IStrategyFactory.contract.Transact(opts, "setThirdPartyTransfersForbidden", strategy, value)
+// Solidity: function whitelistStrategies(address[] strategiesToWhitelist) returns()
+func (_IStrategyFactory *IStrategyFactoryTransactor) WhitelistStrategies(opts *bind.TransactOpts, strategiesToWhitelist []common.Address) (*types.Transaction, error) {
+ return _IStrategyFactory.contract.Transact(opts, "whitelistStrategies", strategiesToWhitelist)
}
-// SetThirdPartyTransfersForbidden is a paid mutator transaction binding the contract method 0x4e5a4263.
+// WhitelistStrategies is a paid mutator transaction binding the contract method 0xb768ebc9.
//
-// Solidity: function setThirdPartyTransfersForbidden(address strategy, bool value) returns()
-func (_IStrategyFactory *IStrategyFactorySession) SetThirdPartyTransfersForbidden(strategy common.Address, value bool) (*types.Transaction, error) {
- return _IStrategyFactory.Contract.SetThirdPartyTransfersForbidden(&_IStrategyFactory.TransactOpts, strategy, value)
+// Solidity: function whitelistStrategies(address[] strategiesToWhitelist) returns()
+func (_IStrategyFactory *IStrategyFactorySession) WhitelistStrategies(strategiesToWhitelist []common.Address) (*types.Transaction, error) {
+ return _IStrategyFactory.Contract.WhitelistStrategies(&_IStrategyFactory.TransactOpts, strategiesToWhitelist)
}
-// SetThirdPartyTransfersForbidden is a paid mutator transaction binding the contract method 0x4e5a4263.
+// WhitelistStrategies is a paid mutator transaction binding the contract method 0xb768ebc9.
//
-// Solidity: function setThirdPartyTransfersForbidden(address strategy, bool value) returns()
-func (_IStrategyFactory *IStrategyFactoryTransactorSession) SetThirdPartyTransfersForbidden(strategy common.Address, value bool) (*types.Transaction, error) {
- return _IStrategyFactory.Contract.SetThirdPartyTransfersForbidden(&_IStrategyFactory.TransactOpts, strategy, value)
-}
-
-// WhitelistStrategies is a paid mutator transaction binding the contract method 0x697d54b4.
-//
-// Solidity: function whitelistStrategies(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns()
-func (_IStrategyFactory *IStrategyFactoryTransactor) WhitelistStrategies(opts *bind.TransactOpts, strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) {
- return _IStrategyFactory.contract.Transact(opts, "whitelistStrategies", strategiesToWhitelist, thirdPartyTransfersForbiddenValues)
-}
-
-// WhitelistStrategies is a paid mutator transaction binding the contract method 0x697d54b4.
-//
-// Solidity: function whitelistStrategies(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns()
-func (_IStrategyFactory *IStrategyFactorySession) WhitelistStrategies(strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) {
- return _IStrategyFactory.Contract.WhitelistStrategies(&_IStrategyFactory.TransactOpts, strategiesToWhitelist, thirdPartyTransfersForbiddenValues)
-}
-
-// WhitelistStrategies is a paid mutator transaction binding the contract method 0x697d54b4.
-//
-// Solidity: function whitelistStrategies(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns()
-func (_IStrategyFactory *IStrategyFactoryTransactorSession) WhitelistStrategies(strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) {
- return _IStrategyFactory.Contract.WhitelistStrategies(&_IStrategyFactory.TransactOpts, strategiesToWhitelist, thirdPartyTransfersForbiddenValues)
+// Solidity: function whitelistStrategies(address[] strategiesToWhitelist) returns()
+func (_IStrategyFactory *IStrategyFactoryTransactorSession) WhitelistStrategies(strategiesToWhitelist []common.Address) (*types.Transaction, error) {
+ return _IStrategyFactory.Contract.WhitelistStrategies(&_IStrategyFactory.TransactOpts, strategiesToWhitelist)
}
// IStrategyFactoryStrategyBeaconModifiedIterator is returned from FilterStrategyBeaconModified and is used to iterate over the raw logs and unpacked data for StrategyBeaconModified events raised by the IStrategyFactory contract.
diff --git a/pkg/bindings/IStrategyManager/binding.go b/pkg/bindings/IStrategyManager/binding.go
index e8f313e7e0..b5d574db7f 100644
--- a/pkg/bindings/IStrategyManager/binding.go
+++ b/pkg/bindings/IStrategyManager/binding.go
@@ -31,7 +31,7 @@ var (
// IStrategyManagerMetaData contains all meta data concerning the IStrategyManager contract.
var IStrategyManagerMetaData = &bind.MetaData{
- ABI: "[{\"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\":\"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\":\"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\":\"stakerStrategyListLength\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyShares\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyIsWhitelistedForDeposit\",\"inputs\":[{\"name\":\"strategy\",\"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\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"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\":\"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\":\"UpdatedThirdPartyTransfersForbidden\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"value\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false}]",
+ ABI: "[{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addStrategiesToDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"burnShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"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\":\"depositShares\",\"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\":\"depositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBurnableShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"getStrategiesWithBurnableShares\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseBurnableShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"addedSharesToBurn\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"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\":\"setStrategyWhitelister\",\"inputs\":[{\"name\":\"newStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakerDepositShares\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyListLength\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyIsWhitelistedForDeposit\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyWhitelister\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"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\":\"BurnableSharesDecreased\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BurnableSharesIncreased\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"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\":\"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\":\"error\",\"name\":\"MaxStrategiesExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyWhitelister\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesAmountTooHigh\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesAmountZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StakerAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotFound\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotWhitelisted\",\"inputs\":[]}]",
}
// IStrategyManagerABI is the input ABI used to generate the binding from.
@@ -180,97 +180,97 @@ func (_IStrategyManager *IStrategyManagerTransactorRaw) Transact(opts *bind.Tran
return _IStrategyManager.Contract.contract.Transact(opts, method, params...)
}
-// Delegation is a free data retrieval call binding the contract method 0xdf5cf723.
+// CalculateStrategyDepositDigestHash is a free data retrieval call binding the contract method 0x9ac01d61.
//
-// Solidity: function delegation() view returns(address)
-func (_IStrategyManager *IStrategyManagerCaller) Delegation(opts *bind.CallOpts) (common.Address, error) {
+// Solidity: function calculateStrategyDepositDigestHash(address staker, address strategy, address token, uint256 amount, uint256 nonce, uint256 expiry) view returns(bytes32)
+func (_IStrategyManager *IStrategyManagerCaller) 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 := _IStrategyManager.contract.Call(opts, &out, "delegation")
+ err := _IStrategyManager.contract.Call(opts, &out, "calculateStrategyDepositDigestHash", staker, strategy, token, amount, nonce, expiry)
if err != nil {
- return *new(common.Address), err
+ return *new([32]byte), err
}
- out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
+ out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
return out0, err
}
-// Delegation is a free data retrieval call binding the contract method 0xdf5cf723.
+// CalculateStrategyDepositDigestHash is a free data retrieval call binding the contract method 0x9ac01d61.
//
-// Solidity: function delegation() view returns(address)
-func (_IStrategyManager *IStrategyManagerSession) Delegation() (common.Address, error) {
- return _IStrategyManager.Contract.Delegation(&_IStrategyManager.CallOpts)
+// Solidity: function calculateStrategyDepositDigestHash(address staker, address strategy, address token, uint256 amount, uint256 nonce, uint256 expiry) view returns(bytes32)
+func (_IStrategyManager *IStrategyManagerSession) CalculateStrategyDepositDigestHash(staker common.Address, strategy common.Address, token common.Address, amount *big.Int, nonce *big.Int, expiry *big.Int) ([32]byte, error) {
+ return _IStrategyManager.Contract.CalculateStrategyDepositDigestHash(&_IStrategyManager.CallOpts, staker, strategy, token, amount, nonce, expiry)
}
-// Delegation is a free data retrieval call binding the contract method 0xdf5cf723.
+// CalculateStrategyDepositDigestHash is a free data retrieval call binding the contract method 0x9ac01d61.
//
-// Solidity: function delegation() view returns(address)
-func (_IStrategyManager *IStrategyManagerCallerSession) Delegation() (common.Address, error) {
- return _IStrategyManager.Contract.Delegation(&_IStrategyManager.CallOpts)
+// Solidity: function calculateStrategyDepositDigestHash(address staker, address strategy, address token, uint256 amount, uint256 nonce, uint256 expiry) view returns(bytes32)
+func (_IStrategyManager *IStrategyManagerCallerSession) CalculateStrategyDepositDigestHash(staker common.Address, strategy common.Address, token common.Address, amount *big.Int, nonce *big.Int, expiry *big.Int) ([32]byte, error) {
+ return _IStrategyManager.Contract.CalculateStrategyDepositDigestHash(&_IStrategyManager.CallOpts, staker, strategy, token, amount, nonce, expiry)
}
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
+// Delegation is a free data retrieval call binding the contract method 0xdf5cf723.
//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_IStrategyManager *IStrategyManagerCaller) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) {
+// Solidity: function delegation() view returns(address)
+func (_IStrategyManager *IStrategyManagerCaller) Delegation(opts *bind.CallOpts) (common.Address, error) {
var out []interface{}
- err := _IStrategyManager.contract.Call(opts, &out, "domainSeparator")
+ err := _IStrategyManager.contract.Call(opts, &out, "delegation")
if err != nil {
- return *new([32]byte), err
+ return *new(common.Address), err
}
- out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
+ out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
return out0, err
}
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
+// Delegation is a free data retrieval call binding the contract method 0xdf5cf723.
//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_IStrategyManager *IStrategyManagerSession) DomainSeparator() ([32]byte, error) {
- return _IStrategyManager.Contract.DomainSeparator(&_IStrategyManager.CallOpts)
+// Solidity: function delegation() view returns(address)
+func (_IStrategyManager *IStrategyManagerSession) Delegation() (common.Address, error) {
+ return _IStrategyManager.Contract.Delegation(&_IStrategyManager.CallOpts)
}
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
+// Delegation is a free data retrieval call binding the contract method 0xdf5cf723.
//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_IStrategyManager *IStrategyManagerCallerSession) DomainSeparator() ([32]byte, error) {
- return _IStrategyManager.Contract.DomainSeparator(&_IStrategyManager.CallOpts)
+// Solidity: function delegation() view returns(address)
+func (_IStrategyManager *IStrategyManagerCallerSession) Delegation() (common.Address, error) {
+ return _IStrategyManager.Contract.Delegation(&_IStrategyManager.CallOpts)
}
-// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda.
+// GetBurnableShares is a free data retrieval call binding the contract method 0xfd980423.
//
-// Solidity: function eigenPodManager() view returns(address)
-func (_IStrategyManager *IStrategyManagerCaller) EigenPodManager(opts *bind.CallOpts) (common.Address, error) {
+// Solidity: function getBurnableShares(address strategy) view returns(uint256)
+func (_IStrategyManager *IStrategyManagerCaller) GetBurnableShares(opts *bind.CallOpts, strategy common.Address) (*big.Int, error) {
var out []interface{}
- err := _IStrategyManager.contract.Call(opts, &out, "eigenPodManager")
+ err := _IStrategyManager.contract.Call(opts, &out, "getBurnableShares", 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
}
-// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda.
+// GetBurnableShares is a free data retrieval call binding the contract method 0xfd980423.
//
-// Solidity: function eigenPodManager() view returns(address)
-func (_IStrategyManager *IStrategyManagerSession) EigenPodManager() (common.Address, error) {
- return _IStrategyManager.Contract.EigenPodManager(&_IStrategyManager.CallOpts)
+// Solidity: function getBurnableShares(address strategy) view returns(uint256)
+func (_IStrategyManager *IStrategyManagerSession) GetBurnableShares(strategy common.Address) (*big.Int, error) {
+ return _IStrategyManager.Contract.GetBurnableShares(&_IStrategyManager.CallOpts, strategy)
}
-// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda.
+// GetBurnableShares is a free data retrieval call binding the contract method 0xfd980423.
//
-// Solidity: function eigenPodManager() view returns(address)
-func (_IStrategyManager *IStrategyManagerCallerSession) EigenPodManager() (common.Address, error) {
- return _IStrategyManager.Contract.EigenPodManager(&_IStrategyManager.CallOpts)
+// Solidity: function getBurnableShares(address strategy) view returns(uint256)
+func (_IStrategyManager *IStrategyManagerCallerSession) GetBurnableShares(strategy common.Address) (*big.Int, error) {
+ return _IStrategyManager.Contract.GetBurnableShares(&_IStrategyManager.CallOpts, strategy)
}
// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd.
@@ -305,43 +305,75 @@ func (_IStrategyManager *IStrategyManagerCallerSession) GetDeposits(staker commo
return _IStrategyManager.Contract.GetDeposits(&_IStrategyManager.CallOpts, staker)
}
-// Slasher is a free data retrieval call binding the contract method 0xb1344271.
+// GetStakerStrategyList is a free data retrieval call binding the contract method 0xde44acb6.
//
-// Solidity: function slasher() view returns(address)
-func (_IStrategyManager *IStrategyManagerCaller) Slasher(opts *bind.CallOpts) (common.Address, error) {
+// Solidity: function getStakerStrategyList(address staker) view returns(address[])
+func (_IStrategyManager *IStrategyManagerCaller) GetStakerStrategyList(opts *bind.CallOpts, staker common.Address) ([]common.Address, error) {
var out []interface{}
- err := _IStrategyManager.contract.Call(opts, &out, "slasher")
+ err := _IStrategyManager.contract.Call(opts, &out, "getStakerStrategyList", staker)
if err != nil {
- return *new(common.Address), err
+ return *new([]common.Address), err
}
- out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
+ out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
return out0, err
}
-// Slasher is a free data retrieval call binding the contract method 0xb1344271.
+// GetStakerStrategyList is a free data retrieval call binding the contract method 0xde44acb6.
//
-// Solidity: function slasher() view returns(address)
-func (_IStrategyManager *IStrategyManagerSession) Slasher() (common.Address, error) {
- return _IStrategyManager.Contract.Slasher(&_IStrategyManager.CallOpts)
+// Solidity: function getStakerStrategyList(address staker) view returns(address[])
+func (_IStrategyManager *IStrategyManagerSession) GetStakerStrategyList(staker common.Address) ([]common.Address, error) {
+ return _IStrategyManager.Contract.GetStakerStrategyList(&_IStrategyManager.CallOpts, staker)
}
-// Slasher is a free data retrieval call binding the contract method 0xb1344271.
+// GetStakerStrategyList is a free data retrieval call binding the contract method 0xde44acb6.
//
-// Solidity: function slasher() view returns(address)
-func (_IStrategyManager *IStrategyManagerCallerSession) Slasher() (common.Address, error) {
- return _IStrategyManager.Contract.Slasher(&_IStrategyManager.CallOpts)
+// Solidity: function getStakerStrategyList(address staker) view returns(address[])
+func (_IStrategyManager *IStrategyManagerCallerSession) GetStakerStrategyList(staker common.Address) ([]common.Address, error) {
+ return _IStrategyManager.Contract.GetStakerStrategyList(&_IStrategyManager.CallOpts, staker)
}
-// StakerStrategyListLength is a free data retrieval call binding the contract method 0x8b8aac3c.
+// GetStrategiesWithBurnableShares is a free data retrieval call binding the contract method 0x36a8c500.
//
-// Solidity: function stakerStrategyListLength(address staker) view returns(uint256)
-func (_IStrategyManager *IStrategyManagerCaller) StakerStrategyListLength(opts *bind.CallOpts, staker common.Address) (*big.Int, error) {
+// Solidity: function getStrategiesWithBurnableShares() view returns(address[], uint256[])
+func (_IStrategyManager *IStrategyManagerCaller) GetStrategiesWithBurnableShares(opts *bind.CallOpts) ([]common.Address, []*big.Int, error) {
var out []interface{}
- err := _IStrategyManager.contract.Call(opts, &out, "stakerStrategyListLength", staker)
+ err := _IStrategyManager.contract.Call(opts, &out, "getStrategiesWithBurnableShares")
+
+ if err != nil {
+ return *new([]common.Address), *new([]*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
+ out1 := *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int)
+
+ return out0, out1, err
+
+}
+
+// GetStrategiesWithBurnableShares is a free data retrieval call binding the contract method 0x36a8c500.
+//
+// Solidity: function getStrategiesWithBurnableShares() view returns(address[], uint256[])
+func (_IStrategyManager *IStrategyManagerSession) GetStrategiesWithBurnableShares() ([]common.Address, []*big.Int, error) {
+ return _IStrategyManager.Contract.GetStrategiesWithBurnableShares(&_IStrategyManager.CallOpts)
+}
+
+// GetStrategiesWithBurnableShares is a free data retrieval call binding the contract method 0x36a8c500.
+//
+// Solidity: function getStrategiesWithBurnableShares() view returns(address[], uint256[])
+func (_IStrategyManager *IStrategyManagerCallerSession) GetStrategiesWithBurnableShares() ([]common.Address, []*big.Int, error) {
+ return _IStrategyManager.Contract.GetStrategiesWithBurnableShares(&_IStrategyManager.CallOpts)
+}
+
+// StakerDepositShares is a free data retrieval call binding the contract method 0xfe243a17.
+//
+// Solidity: function stakerDepositShares(address user, address strategy) view returns(uint256 shares)
+func (_IStrategyManager *IStrategyManagerCaller) StakerDepositShares(opts *bind.CallOpts, user common.Address, strategy common.Address) (*big.Int, error) {
+ var out []interface{}
+ err := _IStrategyManager.contract.Call(opts, &out, "stakerDepositShares", user, strategy)
if err != nil {
return *new(*big.Int), err
@@ -353,26 +385,26 @@ func (_IStrategyManager *IStrategyManagerCaller) StakerStrategyListLength(opts *
}
-// StakerStrategyListLength is a free data retrieval call binding the contract method 0x8b8aac3c.
+// StakerDepositShares is a free data retrieval call binding the contract method 0xfe243a17.
//
-// Solidity: function stakerStrategyListLength(address staker) view returns(uint256)
-func (_IStrategyManager *IStrategyManagerSession) StakerStrategyListLength(staker common.Address) (*big.Int, error) {
- return _IStrategyManager.Contract.StakerStrategyListLength(&_IStrategyManager.CallOpts, staker)
+// Solidity: function stakerDepositShares(address user, address strategy) view returns(uint256 shares)
+func (_IStrategyManager *IStrategyManagerSession) StakerDepositShares(user common.Address, strategy common.Address) (*big.Int, error) {
+ return _IStrategyManager.Contract.StakerDepositShares(&_IStrategyManager.CallOpts, user, strategy)
}
-// StakerStrategyListLength is a free data retrieval call binding the contract method 0x8b8aac3c.
+// StakerDepositShares is a free data retrieval call binding the contract method 0xfe243a17.
//
-// Solidity: function stakerStrategyListLength(address staker) view returns(uint256)
-func (_IStrategyManager *IStrategyManagerCallerSession) StakerStrategyListLength(staker common.Address) (*big.Int, error) {
- return _IStrategyManager.Contract.StakerStrategyListLength(&_IStrategyManager.CallOpts, staker)
+// Solidity: function stakerDepositShares(address user, address strategy) view returns(uint256 shares)
+func (_IStrategyManager *IStrategyManagerCallerSession) StakerDepositShares(user common.Address, strategy common.Address) (*big.Int, error) {
+ return _IStrategyManager.Contract.StakerDepositShares(&_IStrategyManager.CallOpts, user, strategy)
}
-// StakerStrategyShares is a free data retrieval call binding the contract method 0x7a7e0d92.
+// StakerStrategyListLength is a free data retrieval call binding the contract method 0x8b8aac3c.
//
-// Solidity: function stakerStrategyShares(address user, address strategy) view returns(uint256 shares)
-func (_IStrategyManager *IStrategyManagerCaller) StakerStrategyShares(opts *bind.CallOpts, user common.Address, strategy common.Address) (*big.Int, error) {
+// Solidity: function stakerStrategyListLength(address staker) view returns(uint256)
+func (_IStrategyManager *IStrategyManagerCaller) StakerStrategyListLength(opts *bind.CallOpts, staker common.Address) (*big.Int, error) {
var out []interface{}
- err := _IStrategyManager.contract.Call(opts, &out, "stakerStrategyShares", user, strategy)
+ err := _IStrategyManager.contract.Call(opts, &out, "stakerStrategyListLength", staker)
if err != nil {
return *new(*big.Int), err
@@ -384,18 +416,18 @@ func (_IStrategyManager *IStrategyManagerCaller) StakerStrategyShares(opts *bind
}
-// StakerStrategyShares is a free data retrieval call binding the contract method 0x7a7e0d92.
+// StakerStrategyListLength is a free data retrieval call binding the contract method 0x8b8aac3c.
//
-// Solidity: function stakerStrategyShares(address user, address strategy) view returns(uint256 shares)
-func (_IStrategyManager *IStrategyManagerSession) StakerStrategyShares(user common.Address, strategy common.Address) (*big.Int, error) {
- return _IStrategyManager.Contract.StakerStrategyShares(&_IStrategyManager.CallOpts, user, strategy)
+// Solidity: function stakerStrategyListLength(address staker) view returns(uint256)
+func (_IStrategyManager *IStrategyManagerSession) StakerStrategyListLength(staker common.Address) (*big.Int, error) {
+ return _IStrategyManager.Contract.StakerStrategyListLength(&_IStrategyManager.CallOpts, staker)
}
-// StakerStrategyShares is a free data retrieval call binding the contract method 0x7a7e0d92.
+// StakerStrategyListLength is a free data retrieval call binding the contract method 0x8b8aac3c.
//
-// Solidity: function stakerStrategyShares(address user, address strategy) view returns(uint256 shares)
-func (_IStrategyManager *IStrategyManagerCallerSession) StakerStrategyShares(user common.Address, strategy common.Address) (*big.Int, error) {
- return _IStrategyManager.Contract.StakerStrategyShares(&_IStrategyManager.CallOpts, user, strategy)
+// Solidity: function stakerStrategyListLength(address staker) view returns(uint256)
+func (_IStrategyManager *IStrategyManagerCallerSession) StakerStrategyListLength(staker common.Address) (*big.Int, error) {
+ return _IStrategyManager.Contract.StakerStrategyListLength(&_IStrategyManager.CallOpts, staker)
}
// StrategyIsWhitelistedForDeposit is a free data retrieval call binding the contract method 0x663c1de4.
@@ -460,140 +492,172 @@ func (_IStrategyManager *IStrategyManagerCallerSession) StrategyWhitelister() (c
return _IStrategyManager.Contract.StrategyWhitelister(&_IStrategyManager.CallOpts)
}
-// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d.
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
//
-// Solidity: function thirdPartyTransfersForbidden(address strategy) view returns(bool)
-func (_IStrategyManager *IStrategyManagerCaller) ThirdPartyTransfersForbidden(opts *bind.CallOpts, strategy common.Address) (bool, error) {
- var out []interface{}
- err := _IStrategyManager.contract.Call(opts, &out, "thirdPartyTransfersForbidden", strategy)
-
- if err != nil {
- return *new(bool), err
- }
-
- out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
-
- return out0, err
-
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_IStrategyManager *IStrategyManagerTransactor) AddShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _IStrategyManager.contract.Transact(opts, "addShares", staker, strategy, shares)
}
-// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d.
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
//
-// Solidity: function thirdPartyTransfersForbidden(address strategy) view returns(bool)
-func (_IStrategyManager *IStrategyManagerSession) ThirdPartyTransfersForbidden(strategy common.Address) (bool, error) {
- return _IStrategyManager.Contract.ThirdPartyTransfersForbidden(&_IStrategyManager.CallOpts, strategy)
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_IStrategyManager *IStrategyManagerSession) AddShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _IStrategyManager.Contract.AddShares(&_IStrategyManager.TransactOpts, staker, strategy, shares)
}
-// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d.
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
//
-// Solidity: function thirdPartyTransfersForbidden(address strategy) view returns(bool)
-func (_IStrategyManager *IStrategyManagerCallerSession) ThirdPartyTransfersForbidden(strategy common.Address) (bool, error) {
- return _IStrategyManager.Contract.ThirdPartyTransfersForbidden(&_IStrategyManager.CallOpts, strategy)
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_IStrategyManager *IStrategyManagerTransactorSession) AddShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _IStrategyManager.Contract.AddShares(&_IStrategyManager.TransactOpts, staker, strategy, shares)
}
-// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1.
+// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0x5de08ff2.
//
-// Solidity: function addShares(address staker, address token, address strategy, uint256 shares) returns()
-func (_IStrategyManager *IStrategyManagerTransactor) AddShares(opts *bind.TransactOpts, staker common.Address, token common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IStrategyManager.contract.Transact(opts, "addShares", staker, token, strategy, shares)
+// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist) returns()
+func (_IStrategyManager *IStrategyManagerTransactor) AddStrategiesToDepositWhitelist(opts *bind.TransactOpts, strategiesToWhitelist []common.Address) (*types.Transaction, error) {
+ return _IStrategyManager.contract.Transact(opts, "addStrategiesToDepositWhitelist", strategiesToWhitelist)
}
-// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1.
+// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0x5de08ff2.
//
-// Solidity: function addShares(address staker, address token, address strategy, uint256 shares) returns()
-func (_IStrategyManager *IStrategyManagerSession) AddShares(staker common.Address, token common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IStrategyManager.Contract.AddShares(&_IStrategyManager.TransactOpts, staker, token, strategy, shares)
+// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist) returns()
+func (_IStrategyManager *IStrategyManagerSession) AddStrategiesToDepositWhitelist(strategiesToWhitelist []common.Address) (*types.Transaction, error) {
+ return _IStrategyManager.Contract.AddStrategiesToDepositWhitelist(&_IStrategyManager.TransactOpts, strategiesToWhitelist)
}
-// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1.
+// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0x5de08ff2.
//
-// Solidity: function addShares(address staker, address token, address strategy, uint256 shares) returns()
-func (_IStrategyManager *IStrategyManagerTransactorSession) AddShares(staker common.Address, token common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IStrategyManager.Contract.AddShares(&_IStrategyManager.TransactOpts, staker, token, strategy, shares)
+// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist) returns()
+func (_IStrategyManager *IStrategyManagerTransactorSession) AddStrategiesToDepositWhitelist(strategiesToWhitelist []common.Address) (*types.Transaction, error) {
+ return _IStrategyManager.Contract.AddStrategiesToDepositWhitelist(&_IStrategyManager.TransactOpts, strategiesToWhitelist)
}
-// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547.
+// BurnShares is a paid mutator transaction binding the contract method 0x4b6d5d6e.
//
-// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns()
-func (_IStrategyManager *IStrategyManagerTransactor) AddStrategiesToDepositWhitelist(opts *bind.TransactOpts, strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) {
- return _IStrategyManager.contract.Transact(opts, "addStrategiesToDepositWhitelist", strategiesToWhitelist, thirdPartyTransfersForbiddenValues)
+// Solidity: function burnShares(address strategy) returns()
+func (_IStrategyManager *IStrategyManagerTransactor) BurnShares(opts *bind.TransactOpts, strategy common.Address) (*types.Transaction, error) {
+ return _IStrategyManager.contract.Transact(opts, "burnShares", strategy)
}
-// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547.
+// BurnShares is a paid mutator transaction binding the contract method 0x4b6d5d6e.
//
-// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns()
-func (_IStrategyManager *IStrategyManagerSession) AddStrategiesToDepositWhitelist(strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) {
- return _IStrategyManager.Contract.AddStrategiesToDepositWhitelist(&_IStrategyManager.TransactOpts, strategiesToWhitelist, thirdPartyTransfersForbiddenValues)
+// Solidity: function burnShares(address strategy) returns()
+func (_IStrategyManager *IStrategyManagerSession) BurnShares(strategy common.Address) (*types.Transaction, error) {
+ return _IStrategyManager.Contract.BurnShares(&_IStrategyManager.TransactOpts, strategy)
}
-// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547.
+// BurnShares is a paid mutator transaction binding the contract method 0x4b6d5d6e.
//
-// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns()
-func (_IStrategyManager *IStrategyManagerTransactorSession) AddStrategiesToDepositWhitelist(strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) {
- return _IStrategyManager.Contract.AddStrategiesToDepositWhitelist(&_IStrategyManager.TransactOpts, strategiesToWhitelist, thirdPartyTransfersForbiddenValues)
+// Solidity: function burnShares(address strategy) returns()
+func (_IStrategyManager *IStrategyManagerTransactorSession) BurnShares(strategy common.Address) (*types.Transaction, error) {
+ return _IStrategyManager.Contract.BurnShares(&_IStrategyManager.TransactOpts, strategy)
}
// 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 depositShares)
func (_IStrategyManager *IStrategyManagerTransactor) DepositIntoStrategy(opts *bind.TransactOpts, strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) {
return _IStrategyManager.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 depositShares)
func (_IStrategyManager *IStrategyManagerSession) DepositIntoStrategy(strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) {
return _IStrategyManager.Contract.DepositIntoStrategy(&_IStrategyManager.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 depositShares)
func (_IStrategyManager *IStrategyManagerTransactorSession) DepositIntoStrategy(strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) {
return _IStrategyManager.Contract.DepositIntoStrategy(&_IStrategyManager.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 depositShares)
func (_IStrategyManager *IStrategyManagerTransactor) 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 _IStrategyManager.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 depositShares)
func (_IStrategyManager *IStrategyManagerSession) DepositIntoStrategyWithSignature(strategy common.Address, token common.Address, amount *big.Int, staker common.Address, expiry *big.Int, signature []byte) (*types.Transaction, error) {
return _IStrategyManager.Contract.DepositIntoStrategyWithSignature(&_IStrategyManager.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 depositShares)
func (_IStrategyManager *IStrategyManagerTransactorSession) DepositIntoStrategyWithSignature(strategy common.Address, token common.Address, amount *big.Int, staker common.Address, expiry *big.Int, signature []byte) (*types.Transaction, error) {
return _IStrategyManager.Contract.DepositIntoStrategyWithSignature(&_IStrategyManager.TransactOpts, strategy, token, amount, staker, expiry, signature)
}
-// RemoveShares is a paid mutator transaction binding the contract method 0x8c80d4e5.
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
+//
+// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns()
+func (_IStrategyManager *IStrategyManagerTransactor) IncreaseBurnableShares(opts *bind.TransactOpts, strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _IStrategyManager.contract.Transact(opts, "increaseBurnableShares", strategy, addedSharesToBurn)
+}
+
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
+//
+// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns()
+func (_IStrategyManager *IStrategyManagerSession) IncreaseBurnableShares(strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _IStrategyManager.Contract.IncreaseBurnableShares(&_IStrategyManager.TransactOpts, strategy, addedSharesToBurn)
+}
+
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
+//
+// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns()
+func (_IStrategyManager *IStrategyManagerTransactorSession) IncreaseBurnableShares(strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _IStrategyManager.Contract.IncreaseBurnableShares(&_IStrategyManager.TransactOpts, strategy, addedSharesToBurn)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c.
+//
+// Solidity: function initialize(address initialOwner, address initialStrategyWhitelister, uint256 initialPausedStatus) returns()
+func (_IStrategyManager *IStrategyManagerTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialStrategyWhitelister common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _IStrategyManager.contract.Transact(opts, "initialize", initialOwner, initialStrategyWhitelister, initialPausedStatus)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c.
//
-// Solidity: function removeShares(address staker, address strategy, uint256 shares) returns()
-func (_IStrategyManager *IStrategyManagerTransactor) RemoveShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IStrategyManager.contract.Transact(opts, "removeShares", staker, strategy, shares)
+// Solidity: function initialize(address initialOwner, address initialStrategyWhitelister, uint256 initialPausedStatus) returns()
+func (_IStrategyManager *IStrategyManagerSession) Initialize(initialOwner common.Address, initialStrategyWhitelister common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _IStrategyManager.Contract.Initialize(&_IStrategyManager.TransactOpts, initialOwner, initialStrategyWhitelister, initialPausedStatus)
}
-// RemoveShares is a paid mutator transaction binding the contract method 0x8c80d4e5.
+// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c.
//
-// Solidity: function removeShares(address staker, address strategy, uint256 shares) returns()
-func (_IStrategyManager *IStrategyManagerSession) RemoveShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IStrategyManager.Contract.RemoveShares(&_IStrategyManager.TransactOpts, staker, strategy, shares)
+// Solidity: function initialize(address initialOwner, address initialStrategyWhitelister, uint256 initialPausedStatus) returns()
+func (_IStrategyManager *IStrategyManagerTransactorSession) Initialize(initialOwner common.Address, initialStrategyWhitelister common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _IStrategyManager.Contract.Initialize(&_IStrategyManager.TransactOpts, initialOwner, initialStrategyWhitelister, initialPausedStatus)
}
-// 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 (_IStrategyManager *IStrategyManagerTransactorSession) RemoveShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _IStrategyManager.Contract.RemoveShares(&_IStrategyManager.TransactOpts, staker, strategy, shares)
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_IStrategyManager *IStrategyManagerTransactor) RemoveDepositShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _IStrategyManager.contract.Transact(opts, "removeDepositShares", staker, strategy, depositSharesToRemove)
+}
+
+// RemoveDepositShares is a paid mutator transaction binding the contract method 0x724af423.
+//
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_IStrategyManager *IStrategyManagerSession) RemoveDepositShares(staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _IStrategyManager.Contract.RemoveDepositShares(&_IStrategyManager.TransactOpts, staker, strategy, depositSharesToRemove)
+}
+
+// RemoveDepositShares is a paid mutator transaction binding the contract method 0x724af423.
+//
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_IStrategyManager *IStrategyManagerTransactorSession) RemoveDepositShares(staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _IStrategyManager.Contract.RemoveDepositShares(&_IStrategyManager.TransactOpts, staker, strategy, depositSharesToRemove)
}
// RemoveStrategiesFromDepositWhitelist is a paid mutator transaction binding the contract method 0xb5d8b5b8.
@@ -638,51 +702,165 @@ func (_IStrategyManager *IStrategyManagerTransactorSession) SetStrategyWhitelist
return _IStrategyManager.Contract.SetStrategyWhitelister(&_IStrategyManager.TransactOpts, newStrategyWhitelister)
}
-// SetThirdPartyTransfersForbidden is a paid mutator transaction binding the contract method 0x4e5a4263.
+// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x2eae418c.
//
-// Solidity: function setThirdPartyTransfersForbidden(address strategy, bool value) returns()
-func (_IStrategyManager *IStrategyManagerTransactor) SetThirdPartyTransfersForbidden(opts *bind.TransactOpts, strategy common.Address, value bool) (*types.Transaction, error) {
- return _IStrategyManager.contract.Transact(opts, "setThirdPartyTransfersForbidden", strategy, value)
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns()
+func (_IStrategyManager *IStrategyManagerTransactor) WithdrawSharesAsTokens(opts *bind.TransactOpts, staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _IStrategyManager.contract.Transact(opts, "withdrawSharesAsTokens", staker, strategy, token, shares)
}
-// SetThirdPartyTransfersForbidden is a paid mutator transaction binding the contract method 0x4e5a4263.
+// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x2eae418c.
//
-// Solidity: function setThirdPartyTransfersForbidden(address strategy, bool value) returns()
-func (_IStrategyManager *IStrategyManagerSession) SetThirdPartyTransfersForbidden(strategy common.Address, value bool) (*types.Transaction, error) {
- return _IStrategyManager.Contract.SetThirdPartyTransfersForbidden(&_IStrategyManager.TransactOpts, strategy, value)
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns()
+func (_IStrategyManager *IStrategyManagerSession) WithdrawSharesAsTokens(staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _IStrategyManager.Contract.WithdrawSharesAsTokens(&_IStrategyManager.TransactOpts, staker, strategy, token, shares)
}
-// SetThirdPartyTransfersForbidden is a paid mutator transaction binding the contract method 0x4e5a4263.
+// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x2eae418c.
//
-// Solidity: function setThirdPartyTransfersForbidden(address strategy, bool value) returns()
-func (_IStrategyManager *IStrategyManagerTransactorSession) SetThirdPartyTransfersForbidden(strategy common.Address, value bool) (*types.Transaction, error) {
- return _IStrategyManager.Contract.SetThirdPartyTransfersForbidden(&_IStrategyManager.TransactOpts, strategy, value)
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns()
+func (_IStrategyManager *IStrategyManagerTransactorSession) WithdrawSharesAsTokens(staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _IStrategyManager.Contract.WithdrawSharesAsTokens(&_IStrategyManager.TransactOpts, staker, strategy, token, shares)
}
-// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0xc608c7f3.
+// IStrategyManagerBurnableSharesDecreasedIterator is returned from FilterBurnableSharesDecreased and is used to iterate over the raw logs and unpacked data for BurnableSharesDecreased events raised by the IStrategyManager contract.
+type IStrategyManagerBurnableSharesDecreasedIterator struct {
+ Event *IStrategyManagerBurnableSharesDecreased // 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 *IStrategyManagerBurnableSharesDecreasedIterator) 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(IStrategyManagerBurnableSharesDecreased)
+ 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(IStrategyManagerBurnableSharesDecreased)
+ 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 *IStrategyManagerBurnableSharesDecreasedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *IStrategyManagerBurnableSharesDecreasedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// IStrategyManagerBurnableSharesDecreased represents a BurnableSharesDecreased event raised by the IStrategyManager contract.
+type IStrategyManagerBurnableSharesDecreased struct {
+ Strategy common.Address
+ Shares *big.Int
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterBurnableSharesDecreased is a free log retrieval operation binding the contract event 0xd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839.
//
-// Solidity: function withdrawSharesAsTokens(address recipient, address strategy, uint256 shares, address token) returns()
-func (_IStrategyManager *IStrategyManagerTransactor) WithdrawSharesAsTokens(opts *bind.TransactOpts, recipient common.Address, strategy common.Address, shares *big.Int, token common.Address) (*types.Transaction, error) {
- return _IStrategyManager.contract.Transact(opts, "withdrawSharesAsTokens", recipient, strategy, shares, token)
+// Solidity: event BurnableSharesDecreased(address strategy, uint256 shares)
+func (_IStrategyManager *IStrategyManagerFilterer) FilterBurnableSharesDecreased(opts *bind.FilterOpts) (*IStrategyManagerBurnableSharesDecreasedIterator, error) {
+
+ logs, sub, err := _IStrategyManager.contract.FilterLogs(opts, "BurnableSharesDecreased")
+ if err != nil {
+ return nil, err
+ }
+ return &IStrategyManagerBurnableSharesDecreasedIterator{contract: _IStrategyManager.contract, event: "BurnableSharesDecreased", logs: logs, sub: sub}, nil
}
-// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0xc608c7f3.
+// WatchBurnableSharesDecreased is a free log subscription operation binding the contract event 0xd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839.
//
-// Solidity: function withdrawSharesAsTokens(address recipient, address strategy, uint256 shares, address token) returns()
-func (_IStrategyManager *IStrategyManagerSession) WithdrawSharesAsTokens(recipient common.Address, strategy common.Address, shares *big.Int, token common.Address) (*types.Transaction, error) {
- return _IStrategyManager.Contract.WithdrawSharesAsTokens(&_IStrategyManager.TransactOpts, recipient, strategy, shares, token)
+// Solidity: event BurnableSharesDecreased(address strategy, uint256 shares)
+func (_IStrategyManager *IStrategyManagerFilterer) WatchBurnableSharesDecreased(opts *bind.WatchOpts, sink chan<- *IStrategyManagerBurnableSharesDecreased) (event.Subscription, error) {
+
+ logs, sub, err := _IStrategyManager.contract.WatchLogs(opts, "BurnableSharesDecreased")
+ 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(IStrategyManagerBurnableSharesDecreased)
+ if err := _IStrategyManager.contract.UnpackLog(event, "BurnableSharesDecreased", 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
}
-// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0xc608c7f3.
+// ParseBurnableSharesDecreased is a log parse operation binding the contract event 0xd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839.
//
-// Solidity: function withdrawSharesAsTokens(address recipient, address strategy, uint256 shares, address token) returns()
-func (_IStrategyManager *IStrategyManagerTransactorSession) WithdrawSharesAsTokens(recipient common.Address, strategy common.Address, shares *big.Int, token common.Address) (*types.Transaction, error) {
- return _IStrategyManager.Contract.WithdrawSharesAsTokens(&_IStrategyManager.TransactOpts, recipient, strategy, shares, token)
+// Solidity: event BurnableSharesDecreased(address strategy, uint256 shares)
+func (_IStrategyManager *IStrategyManagerFilterer) ParseBurnableSharesDecreased(log types.Log) (*IStrategyManagerBurnableSharesDecreased, error) {
+ event := new(IStrategyManagerBurnableSharesDecreased)
+ if err := _IStrategyManager.contract.UnpackLog(event, "BurnableSharesDecreased", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
}
-// IStrategyManagerDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the IStrategyManager contract.
-type IStrategyManagerDepositIterator struct {
- Event *IStrategyManagerDeposit // Event containing the contract specifics and raw log
+// IStrategyManagerBurnableSharesIncreasedIterator is returned from FilterBurnableSharesIncreased and is used to iterate over the raw logs and unpacked data for BurnableSharesIncreased events raised by the IStrategyManager contract.
+type IStrategyManagerBurnableSharesIncreasedIterator struct {
+ Event *IStrategyManagerBurnableSharesIncreased // 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
@@ -696,7 +874,7 @@ type IStrategyManagerDepositIterator 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 *IStrategyManagerDepositIterator) Next() bool {
+func (it *IStrategyManagerBurnableSharesIncreasedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -705,7 +883,7 @@ func (it *IStrategyManagerDepositIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(IStrategyManagerDeposit)
+ it.Event = new(IStrategyManagerBurnableSharesIncreased)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -720,7 +898,7 @@ func (it *IStrategyManagerDepositIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(IStrategyManagerDeposit)
+ it.Event = new(IStrategyManagerBurnableSharesIncreased)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -736,44 +914,42 @@ func (it *IStrategyManagerDepositIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *IStrategyManagerDepositIterator) Error() error {
+func (it *IStrategyManagerBurnableSharesIncreasedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *IStrategyManagerDepositIterator) Close() error {
+func (it *IStrategyManagerBurnableSharesIncreasedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// IStrategyManagerDeposit represents a Deposit event raised by the IStrategyManager contract.
-type IStrategyManagerDeposit struct {
- Staker common.Address
- Token common.Address
+// IStrategyManagerBurnableSharesIncreased represents a BurnableSharesIncreased event raised by the IStrategyManager contract.
+type IStrategyManagerBurnableSharesIncreased struct {
Strategy common.Address
Shares *big.Int
Raw types.Log // Blockchain specific contextual infos
}
-// FilterDeposit is a free log retrieval operation binding the contract event 0x7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a96.
+// FilterBurnableSharesIncreased is a free log retrieval operation binding the contract event 0xca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff.
//
-// Solidity: event Deposit(address staker, address token, address strategy, uint256 shares)
-func (_IStrategyManager *IStrategyManagerFilterer) FilterDeposit(opts *bind.FilterOpts) (*IStrategyManagerDepositIterator, error) {
+// Solidity: event BurnableSharesIncreased(address strategy, uint256 shares)
+func (_IStrategyManager *IStrategyManagerFilterer) FilterBurnableSharesIncreased(opts *bind.FilterOpts) (*IStrategyManagerBurnableSharesIncreasedIterator, error) {
- logs, sub, err := _IStrategyManager.contract.FilterLogs(opts, "Deposit")
+ logs, sub, err := _IStrategyManager.contract.FilterLogs(opts, "BurnableSharesIncreased")
if err != nil {
return nil, err
}
- return &IStrategyManagerDepositIterator{contract: _IStrategyManager.contract, event: "Deposit", logs: logs, sub: sub}, nil
+ return &IStrategyManagerBurnableSharesIncreasedIterator{contract: _IStrategyManager.contract, event: "BurnableSharesIncreased", logs: logs, sub: sub}, nil
}
-// WatchDeposit is a free log subscription operation binding the contract event 0x7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a96.
+// WatchBurnableSharesIncreased is a free log subscription operation binding the contract event 0xca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff.
//
-// Solidity: event Deposit(address staker, address token, address strategy, uint256 shares)
-func (_IStrategyManager *IStrategyManagerFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *IStrategyManagerDeposit) (event.Subscription, error) {
+// Solidity: event BurnableSharesIncreased(address strategy, uint256 shares)
+func (_IStrategyManager *IStrategyManagerFilterer) WatchBurnableSharesIncreased(opts *bind.WatchOpts, sink chan<- *IStrategyManagerBurnableSharesIncreased) (event.Subscription, error) {
- logs, sub, err := _IStrategyManager.contract.WatchLogs(opts, "Deposit")
+ logs, sub, err := _IStrategyManager.contract.WatchLogs(opts, "BurnableSharesIncreased")
if err != nil {
return nil, err
}
@@ -783,8 +959,8 @@ func (_IStrategyManager *IStrategyManagerFilterer) WatchDeposit(opts *bind.Watch
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(IStrategyManagerDeposit)
- if err := _IStrategyManager.contract.UnpackLog(event, "Deposit", log); err != nil {
+ event := new(IStrategyManagerBurnableSharesIncreased)
+ if err := _IStrategyManager.contract.UnpackLog(event, "BurnableSharesIncreased", log); err != nil {
return err
}
event.Raw = log
@@ -805,21 +981,21 @@ func (_IStrategyManager *IStrategyManagerFilterer) WatchDeposit(opts *bind.Watch
}), nil
}
-// ParseDeposit is a log parse operation binding the contract event 0x7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a96.
+// ParseBurnableSharesIncreased is a log parse operation binding the contract event 0xca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff.
//
-// Solidity: event Deposit(address staker, address token, address strategy, uint256 shares)
-func (_IStrategyManager *IStrategyManagerFilterer) ParseDeposit(log types.Log) (*IStrategyManagerDeposit, error) {
- event := new(IStrategyManagerDeposit)
- if err := _IStrategyManager.contract.UnpackLog(event, "Deposit", log); err != nil {
+// Solidity: event BurnableSharesIncreased(address strategy, uint256 shares)
+func (_IStrategyManager *IStrategyManagerFilterer) ParseBurnableSharesIncreased(log types.Log) (*IStrategyManagerBurnableSharesIncreased, error) {
+ event := new(IStrategyManagerBurnableSharesIncreased)
+ if err := _IStrategyManager.contract.UnpackLog(event, "BurnableSharesIncreased", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// IStrategyManagerStrategyAddedToDepositWhitelistIterator is returned from FilterStrategyAddedToDepositWhitelist and is used to iterate over the raw logs and unpacked data for StrategyAddedToDepositWhitelist events raised by the IStrategyManager contract.
-type IStrategyManagerStrategyAddedToDepositWhitelistIterator struct {
- Event *IStrategyManagerStrategyAddedToDepositWhitelist // Event containing the contract specifics and raw log
+// IStrategyManagerDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the IStrategyManager contract.
+type IStrategyManagerDepositIterator struct {
+ Event *IStrategyManagerDeposit // 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
@@ -833,7 +1009,7 @@ type IStrategyManagerStrategyAddedToDepositWhitelistIterator 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 *IStrategyManagerStrategyAddedToDepositWhitelistIterator) Next() bool {
+func (it *IStrategyManagerDepositIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -842,7 +1018,7 @@ func (it *IStrategyManagerStrategyAddedToDepositWhitelistIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(IStrategyManagerStrategyAddedToDepositWhitelist)
+ it.Event = new(IStrategyManagerDeposit)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -857,7 +1033,7 @@ func (it *IStrategyManagerStrategyAddedToDepositWhitelistIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(IStrategyManagerStrategyAddedToDepositWhitelist)
+ it.Event = new(IStrategyManagerDeposit)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -873,41 +1049,43 @@ func (it *IStrategyManagerStrategyAddedToDepositWhitelistIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *IStrategyManagerStrategyAddedToDepositWhitelistIterator) Error() error {
+func (it *IStrategyManagerDepositIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *IStrategyManagerStrategyAddedToDepositWhitelistIterator) Close() error {
+func (it *IStrategyManagerDepositIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// IStrategyManagerStrategyAddedToDepositWhitelist represents a StrategyAddedToDepositWhitelist event raised by the IStrategyManager contract.
-type IStrategyManagerStrategyAddedToDepositWhitelist struct {
+// IStrategyManagerDeposit represents a Deposit event raised by the IStrategyManager contract.
+type IStrategyManagerDeposit struct {
+ Staker common.Address
Strategy common.Address
+ Shares *big.Int
Raw types.Log // Blockchain specific contextual infos
}
-// FilterStrategyAddedToDepositWhitelist is a free log retrieval operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe.
+// FilterDeposit is a free log retrieval operation binding the contract event 0x5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62.
//
-// Solidity: event StrategyAddedToDepositWhitelist(address strategy)
-func (_IStrategyManager *IStrategyManagerFilterer) FilterStrategyAddedToDepositWhitelist(opts *bind.FilterOpts) (*IStrategyManagerStrategyAddedToDepositWhitelistIterator, error) {
+// Solidity: event Deposit(address staker, address strategy, uint256 shares)
+func (_IStrategyManager *IStrategyManagerFilterer) FilterDeposit(opts *bind.FilterOpts) (*IStrategyManagerDepositIterator, error) {
- logs, sub, err := _IStrategyManager.contract.FilterLogs(opts, "StrategyAddedToDepositWhitelist")
+ logs, sub, err := _IStrategyManager.contract.FilterLogs(opts, "Deposit")
if err != nil {
return nil, err
}
- return &IStrategyManagerStrategyAddedToDepositWhitelistIterator{contract: _IStrategyManager.contract, event: "StrategyAddedToDepositWhitelist", logs: logs, sub: sub}, nil
+ return &IStrategyManagerDepositIterator{contract: _IStrategyManager.contract, event: "Deposit", logs: logs, sub: sub}, nil
}
-// WatchStrategyAddedToDepositWhitelist is a free log subscription operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe.
+// WatchDeposit is a free log subscription operation binding the contract event 0x5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62.
//
-// Solidity: event StrategyAddedToDepositWhitelist(address strategy)
-func (_IStrategyManager *IStrategyManagerFilterer) WatchStrategyAddedToDepositWhitelist(opts *bind.WatchOpts, sink chan<- *IStrategyManagerStrategyAddedToDepositWhitelist) (event.Subscription, error) {
+// Solidity: event Deposit(address staker, address strategy, uint256 shares)
+func (_IStrategyManager *IStrategyManagerFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *IStrategyManagerDeposit) (event.Subscription, error) {
- logs, sub, err := _IStrategyManager.contract.WatchLogs(opts, "StrategyAddedToDepositWhitelist")
+ logs, sub, err := _IStrategyManager.contract.WatchLogs(opts, "Deposit")
if err != nil {
return nil, err
}
@@ -917,8 +1095,8 @@ func (_IStrategyManager *IStrategyManagerFilterer) WatchStrategyAddedToDepositWh
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(IStrategyManagerStrategyAddedToDepositWhitelist)
- if err := _IStrategyManager.contract.UnpackLog(event, "StrategyAddedToDepositWhitelist", log); err != nil {
+ event := new(IStrategyManagerDeposit)
+ if err := _IStrategyManager.contract.UnpackLog(event, "Deposit", log); err != nil {
return err
}
event.Raw = log
@@ -939,21 +1117,21 @@ func (_IStrategyManager *IStrategyManagerFilterer) WatchStrategyAddedToDepositWh
}), nil
}
-// ParseStrategyAddedToDepositWhitelist is a log parse operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe.
+// ParseDeposit is a log parse operation binding the contract event 0x5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62.
//
-// Solidity: event StrategyAddedToDepositWhitelist(address strategy)
-func (_IStrategyManager *IStrategyManagerFilterer) ParseStrategyAddedToDepositWhitelist(log types.Log) (*IStrategyManagerStrategyAddedToDepositWhitelist, error) {
- event := new(IStrategyManagerStrategyAddedToDepositWhitelist)
- if err := _IStrategyManager.contract.UnpackLog(event, "StrategyAddedToDepositWhitelist", log); err != nil {
+// Solidity: event Deposit(address staker, address strategy, uint256 shares)
+func (_IStrategyManager *IStrategyManagerFilterer) ParseDeposit(log types.Log) (*IStrategyManagerDeposit, error) {
+ event := new(IStrategyManagerDeposit)
+ if err := _IStrategyManager.contract.UnpackLog(event, "Deposit", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// IStrategyManagerStrategyRemovedFromDepositWhitelistIterator is returned from FilterStrategyRemovedFromDepositWhitelist and is used to iterate over the raw logs and unpacked data for StrategyRemovedFromDepositWhitelist events raised by the IStrategyManager contract.
-type IStrategyManagerStrategyRemovedFromDepositWhitelistIterator struct {
- Event *IStrategyManagerStrategyRemovedFromDepositWhitelist // Event containing the contract specifics and raw log
+// IStrategyManagerStrategyAddedToDepositWhitelistIterator is returned from FilterStrategyAddedToDepositWhitelist and is used to iterate over the raw logs and unpacked data for StrategyAddedToDepositWhitelist events raised by the IStrategyManager contract.
+type IStrategyManagerStrategyAddedToDepositWhitelistIterator struct {
+ Event *IStrategyManagerStrategyAddedToDepositWhitelist // 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
@@ -967,7 +1145,7 @@ type IStrategyManagerStrategyRemovedFromDepositWhitelistIterator 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 *IStrategyManagerStrategyRemovedFromDepositWhitelistIterator) Next() bool {
+func (it *IStrategyManagerStrategyAddedToDepositWhitelistIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -976,7 +1154,7 @@ func (it *IStrategyManagerStrategyRemovedFromDepositWhitelistIterator) Next() bo
if it.done {
select {
case log := <-it.logs:
- it.Event = new(IStrategyManagerStrategyRemovedFromDepositWhitelist)
+ it.Event = new(IStrategyManagerStrategyAddedToDepositWhitelist)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -991,7 +1169,7 @@ func (it *IStrategyManagerStrategyRemovedFromDepositWhitelistIterator) Next() bo
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(IStrategyManagerStrategyRemovedFromDepositWhitelist)
+ it.Event = new(IStrategyManagerStrategyAddedToDepositWhitelist)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1007,41 +1185,41 @@ func (it *IStrategyManagerStrategyRemovedFromDepositWhitelistIterator) Next() bo
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *IStrategyManagerStrategyRemovedFromDepositWhitelistIterator) Error() error {
+func (it *IStrategyManagerStrategyAddedToDepositWhitelistIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *IStrategyManagerStrategyRemovedFromDepositWhitelistIterator) Close() error {
+func (it *IStrategyManagerStrategyAddedToDepositWhitelistIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// IStrategyManagerStrategyRemovedFromDepositWhitelist represents a StrategyRemovedFromDepositWhitelist event raised by the IStrategyManager contract.
-type IStrategyManagerStrategyRemovedFromDepositWhitelist struct {
+// IStrategyManagerStrategyAddedToDepositWhitelist represents a StrategyAddedToDepositWhitelist event raised by the IStrategyManager contract.
+type IStrategyManagerStrategyAddedToDepositWhitelist struct {
Strategy common.Address
Raw types.Log // Blockchain specific contextual infos
}
-// FilterStrategyRemovedFromDepositWhitelist is a free log retrieval operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030.
+// FilterStrategyAddedToDepositWhitelist is a free log retrieval operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe.
//
-// Solidity: event StrategyRemovedFromDepositWhitelist(address strategy)
-func (_IStrategyManager *IStrategyManagerFilterer) FilterStrategyRemovedFromDepositWhitelist(opts *bind.FilterOpts) (*IStrategyManagerStrategyRemovedFromDepositWhitelistIterator, error) {
+// Solidity: event StrategyAddedToDepositWhitelist(address strategy)
+func (_IStrategyManager *IStrategyManagerFilterer) FilterStrategyAddedToDepositWhitelist(opts *bind.FilterOpts) (*IStrategyManagerStrategyAddedToDepositWhitelistIterator, error) {
- logs, sub, err := _IStrategyManager.contract.FilterLogs(opts, "StrategyRemovedFromDepositWhitelist")
+ logs, sub, err := _IStrategyManager.contract.FilterLogs(opts, "StrategyAddedToDepositWhitelist")
if err != nil {
return nil, err
}
- return &IStrategyManagerStrategyRemovedFromDepositWhitelistIterator{contract: _IStrategyManager.contract, event: "StrategyRemovedFromDepositWhitelist", logs: logs, sub: sub}, nil
+ return &IStrategyManagerStrategyAddedToDepositWhitelistIterator{contract: _IStrategyManager.contract, event: "StrategyAddedToDepositWhitelist", logs: logs, sub: sub}, nil
}
-// WatchStrategyRemovedFromDepositWhitelist is a free log subscription operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030.
+// WatchStrategyAddedToDepositWhitelist is a free log subscription operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe.
//
-// Solidity: event StrategyRemovedFromDepositWhitelist(address strategy)
-func (_IStrategyManager *IStrategyManagerFilterer) WatchStrategyRemovedFromDepositWhitelist(opts *bind.WatchOpts, sink chan<- *IStrategyManagerStrategyRemovedFromDepositWhitelist) (event.Subscription, error) {
+// Solidity: event StrategyAddedToDepositWhitelist(address strategy)
+func (_IStrategyManager *IStrategyManagerFilterer) WatchStrategyAddedToDepositWhitelist(opts *bind.WatchOpts, sink chan<- *IStrategyManagerStrategyAddedToDepositWhitelist) (event.Subscription, error) {
- logs, sub, err := _IStrategyManager.contract.WatchLogs(opts, "StrategyRemovedFromDepositWhitelist")
+ logs, sub, err := _IStrategyManager.contract.WatchLogs(opts, "StrategyAddedToDepositWhitelist")
if err != nil {
return nil, err
}
@@ -1051,8 +1229,8 @@ func (_IStrategyManager *IStrategyManagerFilterer) WatchStrategyRemovedFromDepos
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(IStrategyManagerStrategyRemovedFromDepositWhitelist)
- if err := _IStrategyManager.contract.UnpackLog(event, "StrategyRemovedFromDepositWhitelist", log); err != nil {
+ event := new(IStrategyManagerStrategyAddedToDepositWhitelist)
+ if err := _IStrategyManager.contract.UnpackLog(event, "StrategyAddedToDepositWhitelist", log); err != nil {
return err
}
event.Raw = log
@@ -1073,21 +1251,21 @@ func (_IStrategyManager *IStrategyManagerFilterer) WatchStrategyRemovedFromDepos
}), nil
}
-// ParseStrategyRemovedFromDepositWhitelist is a log parse operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030.
+// ParseStrategyAddedToDepositWhitelist is a log parse operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe.
//
-// Solidity: event StrategyRemovedFromDepositWhitelist(address strategy)
-func (_IStrategyManager *IStrategyManagerFilterer) ParseStrategyRemovedFromDepositWhitelist(log types.Log) (*IStrategyManagerStrategyRemovedFromDepositWhitelist, error) {
- event := new(IStrategyManagerStrategyRemovedFromDepositWhitelist)
- if err := _IStrategyManager.contract.UnpackLog(event, "StrategyRemovedFromDepositWhitelist", log); err != nil {
+// Solidity: event StrategyAddedToDepositWhitelist(address strategy)
+func (_IStrategyManager *IStrategyManagerFilterer) ParseStrategyAddedToDepositWhitelist(log types.Log) (*IStrategyManagerStrategyAddedToDepositWhitelist, error) {
+ event := new(IStrategyManagerStrategyAddedToDepositWhitelist)
+ if err := _IStrategyManager.contract.UnpackLog(event, "StrategyAddedToDepositWhitelist", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// IStrategyManagerStrategyWhitelisterChangedIterator is returned from FilterStrategyWhitelisterChanged and is used to iterate over the raw logs and unpacked data for StrategyWhitelisterChanged events raised by the IStrategyManager contract.
-type IStrategyManagerStrategyWhitelisterChangedIterator struct {
- Event *IStrategyManagerStrategyWhitelisterChanged // Event containing the contract specifics and raw log
+// IStrategyManagerStrategyRemovedFromDepositWhitelistIterator is returned from FilterStrategyRemovedFromDepositWhitelist and is used to iterate over the raw logs and unpacked data for StrategyRemovedFromDepositWhitelist events raised by the IStrategyManager contract.
+type IStrategyManagerStrategyRemovedFromDepositWhitelistIterator struct {
+ Event *IStrategyManagerStrategyRemovedFromDepositWhitelist // 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
@@ -1101,7 +1279,7 @@ type IStrategyManagerStrategyWhitelisterChangedIterator 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 *IStrategyManagerStrategyWhitelisterChangedIterator) Next() bool {
+func (it *IStrategyManagerStrategyRemovedFromDepositWhitelistIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -1110,7 +1288,7 @@ func (it *IStrategyManagerStrategyWhitelisterChangedIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(IStrategyManagerStrategyWhitelisterChanged)
+ it.Event = new(IStrategyManagerStrategyRemovedFromDepositWhitelist)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1125,7 +1303,7 @@ func (it *IStrategyManagerStrategyWhitelisterChangedIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(IStrategyManagerStrategyWhitelisterChanged)
+ it.Event = new(IStrategyManagerStrategyRemovedFromDepositWhitelist)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1141,42 +1319,41 @@ func (it *IStrategyManagerStrategyWhitelisterChangedIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *IStrategyManagerStrategyWhitelisterChangedIterator) Error() error {
+func (it *IStrategyManagerStrategyRemovedFromDepositWhitelistIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *IStrategyManagerStrategyWhitelisterChangedIterator) Close() error {
+func (it *IStrategyManagerStrategyRemovedFromDepositWhitelistIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// IStrategyManagerStrategyWhitelisterChanged represents a StrategyWhitelisterChanged event raised by the IStrategyManager contract.
-type IStrategyManagerStrategyWhitelisterChanged struct {
- PreviousAddress common.Address
- NewAddress common.Address
- Raw types.Log // Blockchain specific contextual infos
+// IStrategyManagerStrategyRemovedFromDepositWhitelist represents a StrategyRemovedFromDepositWhitelist event raised by the IStrategyManager contract.
+type IStrategyManagerStrategyRemovedFromDepositWhitelist struct {
+ Strategy common.Address
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterStrategyWhitelisterChanged is a free log retrieval operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29.
+// FilterStrategyRemovedFromDepositWhitelist is a free log retrieval operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030.
//
-// Solidity: event StrategyWhitelisterChanged(address previousAddress, address newAddress)
-func (_IStrategyManager *IStrategyManagerFilterer) FilterStrategyWhitelisterChanged(opts *bind.FilterOpts) (*IStrategyManagerStrategyWhitelisterChangedIterator, error) {
+// Solidity: event StrategyRemovedFromDepositWhitelist(address strategy)
+func (_IStrategyManager *IStrategyManagerFilterer) FilterStrategyRemovedFromDepositWhitelist(opts *bind.FilterOpts) (*IStrategyManagerStrategyRemovedFromDepositWhitelistIterator, error) {
- logs, sub, err := _IStrategyManager.contract.FilterLogs(opts, "StrategyWhitelisterChanged")
+ logs, sub, err := _IStrategyManager.contract.FilterLogs(opts, "StrategyRemovedFromDepositWhitelist")
if err != nil {
return nil, err
}
- return &IStrategyManagerStrategyWhitelisterChangedIterator{contract: _IStrategyManager.contract, event: "StrategyWhitelisterChanged", logs: logs, sub: sub}, nil
+ return &IStrategyManagerStrategyRemovedFromDepositWhitelistIterator{contract: _IStrategyManager.contract, event: "StrategyRemovedFromDepositWhitelist", logs: logs, sub: sub}, nil
}
-// WatchStrategyWhitelisterChanged is a free log subscription operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29.
+// WatchStrategyRemovedFromDepositWhitelist is a free log subscription operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030.
//
-// Solidity: event StrategyWhitelisterChanged(address previousAddress, address newAddress)
-func (_IStrategyManager *IStrategyManagerFilterer) WatchStrategyWhitelisterChanged(opts *bind.WatchOpts, sink chan<- *IStrategyManagerStrategyWhitelisterChanged) (event.Subscription, error) {
+// Solidity: event StrategyRemovedFromDepositWhitelist(address strategy)
+func (_IStrategyManager *IStrategyManagerFilterer) WatchStrategyRemovedFromDepositWhitelist(opts *bind.WatchOpts, sink chan<- *IStrategyManagerStrategyRemovedFromDepositWhitelist) (event.Subscription, error) {
- logs, sub, err := _IStrategyManager.contract.WatchLogs(opts, "StrategyWhitelisterChanged")
+ logs, sub, err := _IStrategyManager.contract.WatchLogs(opts, "StrategyRemovedFromDepositWhitelist")
if err != nil {
return nil, err
}
@@ -1186,8 +1363,8 @@ func (_IStrategyManager *IStrategyManagerFilterer) WatchStrategyWhitelisterChang
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(IStrategyManagerStrategyWhitelisterChanged)
- if err := _IStrategyManager.contract.UnpackLog(event, "StrategyWhitelisterChanged", log); err != nil {
+ event := new(IStrategyManagerStrategyRemovedFromDepositWhitelist)
+ if err := _IStrategyManager.contract.UnpackLog(event, "StrategyRemovedFromDepositWhitelist", log); err != nil {
return err
}
event.Raw = log
@@ -1208,21 +1385,21 @@ func (_IStrategyManager *IStrategyManagerFilterer) WatchStrategyWhitelisterChang
}), nil
}
-// ParseStrategyWhitelisterChanged is a log parse operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29.
+// ParseStrategyRemovedFromDepositWhitelist is a log parse operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030.
//
-// Solidity: event StrategyWhitelisterChanged(address previousAddress, address newAddress)
-func (_IStrategyManager *IStrategyManagerFilterer) ParseStrategyWhitelisterChanged(log types.Log) (*IStrategyManagerStrategyWhitelisterChanged, error) {
- event := new(IStrategyManagerStrategyWhitelisterChanged)
- if err := _IStrategyManager.contract.UnpackLog(event, "StrategyWhitelisterChanged", log); err != nil {
+// Solidity: event StrategyRemovedFromDepositWhitelist(address strategy)
+func (_IStrategyManager *IStrategyManagerFilterer) ParseStrategyRemovedFromDepositWhitelist(log types.Log) (*IStrategyManagerStrategyRemovedFromDepositWhitelist, error) {
+ event := new(IStrategyManagerStrategyRemovedFromDepositWhitelist)
+ if err := _IStrategyManager.contract.UnpackLog(event, "StrategyRemovedFromDepositWhitelist", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// IStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator is returned from FilterUpdatedThirdPartyTransfersForbidden and is used to iterate over the raw logs and unpacked data for UpdatedThirdPartyTransfersForbidden events raised by the IStrategyManager contract.
-type IStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator struct {
- Event *IStrategyManagerUpdatedThirdPartyTransfersForbidden // Event containing the contract specifics and raw log
+// IStrategyManagerStrategyWhitelisterChangedIterator is returned from FilterStrategyWhitelisterChanged and is used to iterate over the raw logs and unpacked data for StrategyWhitelisterChanged events raised by the IStrategyManager contract.
+type IStrategyManagerStrategyWhitelisterChangedIterator struct {
+ Event *IStrategyManagerStrategyWhitelisterChanged // 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
@@ -1236,7 +1413,7 @@ type IStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator 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 *IStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator) Next() bool {
+func (it *IStrategyManagerStrategyWhitelisterChangedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -1245,7 +1422,7 @@ func (it *IStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator) Next() bo
if it.done {
select {
case log := <-it.logs:
- it.Event = new(IStrategyManagerUpdatedThirdPartyTransfersForbidden)
+ it.Event = new(IStrategyManagerStrategyWhitelisterChanged)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1260,7 +1437,7 @@ func (it *IStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator) Next() bo
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(IStrategyManagerUpdatedThirdPartyTransfersForbidden)
+ it.Event = new(IStrategyManagerStrategyWhitelisterChanged)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1276,42 +1453,42 @@ func (it *IStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator) Next() bo
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *IStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator) Error() error {
+func (it *IStrategyManagerStrategyWhitelisterChangedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *IStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator) Close() error {
+func (it *IStrategyManagerStrategyWhitelisterChangedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// IStrategyManagerUpdatedThirdPartyTransfersForbidden represents a UpdatedThirdPartyTransfersForbidden event raised by the IStrategyManager contract.
-type IStrategyManagerUpdatedThirdPartyTransfersForbidden struct {
- Strategy common.Address
- Value bool
- Raw types.Log // Blockchain specific contextual infos
+// IStrategyManagerStrategyWhitelisterChanged represents a StrategyWhitelisterChanged event raised by the IStrategyManager contract.
+type IStrategyManagerStrategyWhitelisterChanged struct {
+ PreviousAddress common.Address
+ NewAddress common.Address
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterUpdatedThirdPartyTransfersForbidden is a free log retrieval operation binding the contract event 0x77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786.
+// FilterStrategyWhitelisterChanged is a free log retrieval operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29.
//
-// Solidity: event UpdatedThirdPartyTransfersForbidden(address strategy, bool value)
-func (_IStrategyManager *IStrategyManagerFilterer) FilterUpdatedThirdPartyTransfersForbidden(opts *bind.FilterOpts) (*IStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator, error) {
+// Solidity: event StrategyWhitelisterChanged(address previousAddress, address newAddress)
+func (_IStrategyManager *IStrategyManagerFilterer) FilterStrategyWhitelisterChanged(opts *bind.FilterOpts) (*IStrategyManagerStrategyWhitelisterChangedIterator, error) {
- logs, sub, err := _IStrategyManager.contract.FilterLogs(opts, "UpdatedThirdPartyTransfersForbidden")
+ logs, sub, err := _IStrategyManager.contract.FilterLogs(opts, "StrategyWhitelisterChanged")
if err != nil {
return nil, err
}
- return &IStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator{contract: _IStrategyManager.contract, event: "UpdatedThirdPartyTransfersForbidden", logs: logs, sub: sub}, nil
+ return &IStrategyManagerStrategyWhitelisterChangedIterator{contract: _IStrategyManager.contract, event: "StrategyWhitelisterChanged", logs: logs, sub: sub}, nil
}
-// WatchUpdatedThirdPartyTransfersForbidden is a free log subscription operation binding the contract event 0x77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786.
+// WatchStrategyWhitelisterChanged is a free log subscription operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29.
//
-// Solidity: event UpdatedThirdPartyTransfersForbidden(address strategy, bool value)
-func (_IStrategyManager *IStrategyManagerFilterer) WatchUpdatedThirdPartyTransfersForbidden(opts *bind.WatchOpts, sink chan<- *IStrategyManagerUpdatedThirdPartyTransfersForbidden) (event.Subscription, error) {
+// Solidity: event StrategyWhitelisterChanged(address previousAddress, address newAddress)
+func (_IStrategyManager *IStrategyManagerFilterer) WatchStrategyWhitelisterChanged(opts *bind.WatchOpts, sink chan<- *IStrategyManagerStrategyWhitelisterChanged) (event.Subscription, error) {
- logs, sub, err := _IStrategyManager.contract.WatchLogs(opts, "UpdatedThirdPartyTransfersForbidden")
+ logs, sub, err := _IStrategyManager.contract.WatchLogs(opts, "StrategyWhitelisterChanged")
if err != nil {
return nil, err
}
@@ -1321,8 +1498,8 @@ func (_IStrategyManager *IStrategyManagerFilterer) WatchUpdatedThirdPartyTransfe
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(IStrategyManagerUpdatedThirdPartyTransfersForbidden)
- if err := _IStrategyManager.contract.UnpackLog(event, "UpdatedThirdPartyTransfersForbidden", log); err != nil {
+ event := new(IStrategyManagerStrategyWhitelisterChanged)
+ if err := _IStrategyManager.contract.UnpackLog(event, "StrategyWhitelisterChanged", log); err != nil {
return err
}
event.Raw = log
@@ -1343,12 +1520,12 @@ func (_IStrategyManager *IStrategyManagerFilterer) WatchUpdatedThirdPartyTransfe
}), nil
}
-// ParseUpdatedThirdPartyTransfersForbidden is a log parse operation binding the contract event 0x77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786.
+// ParseStrategyWhitelisterChanged is a log parse operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29.
//
-// Solidity: event UpdatedThirdPartyTransfersForbidden(address strategy, bool value)
-func (_IStrategyManager *IStrategyManagerFilterer) ParseUpdatedThirdPartyTransfersForbidden(log types.Log) (*IStrategyManagerUpdatedThirdPartyTransfersForbidden, error) {
- event := new(IStrategyManagerUpdatedThirdPartyTransfersForbidden)
- if err := _IStrategyManager.contract.UnpackLog(event, "UpdatedThirdPartyTransfersForbidden", log); err != nil {
+// Solidity: event StrategyWhitelisterChanged(address previousAddress, address newAddress)
+func (_IStrategyManager *IStrategyManagerFilterer) ParseStrategyWhitelisterChanged(log types.Log) (*IStrategyManagerStrategyWhitelisterChanged, error) {
+ event := new(IStrategyManagerStrategyWhitelisterChanged)
+ if err := _IStrategyManager.contract.UnpackLog(event, "StrategyWhitelisterChanged", log); err != nil {
return nil, err
}
event.Raw = log
diff --git a/pkg/bindings/IWhitelister/binding.go b/pkg/bindings/IWhitelister/binding.go
deleted file mode 100644
index e4afb37310..0000000000
--- a/pkg/bindings/IWhitelister/binding.go
+++ /dev/null
@@ -1,346 +0,0 @@
-// Code generated - DO NOT EDIT.
-// This file is a generated binding and any manual changes will be lost.
-
-package IWhitelister
-
-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
-)
-
-// IDelegationManagerQueuedWithdrawalParams is an auto generated low-level Go binding around an user-defined struct.
-type IDelegationManagerQueuedWithdrawalParams struct {
- Strategies []common.Address
- Shares []*big.Int
- Withdrawer common.Address
-}
-
-// IDelegationManagerWithdrawal is an auto generated low-level Go binding around an user-defined struct.
-type IDelegationManagerWithdrawal struct {
- Staker common.Address
- DelegatedTo common.Address
- Withdrawer common.Address
- Nonce *big.Int
- StartBlock uint32
- Strategies []common.Address
- Shares []*big.Int
-}
-
-// IWhitelisterMetaData contains all meta data concerning the IWhitelister contract.
-var IWhitelisterMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"function\",\"name\":\"callAddress\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"completeQueuedWithdrawal\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"queuedWithdrawal\",\"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\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositIntoStrategy\",\"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\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getStaker\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"queueWithdrawal\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"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\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"whitelist\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"}]",
-}
-
-// IWhitelisterABI is the input ABI used to generate the binding from.
-// Deprecated: Use IWhitelisterMetaData.ABI instead.
-var IWhitelisterABI = IWhitelisterMetaData.ABI
-
-// IWhitelister is an auto generated Go binding around an Ethereum contract.
-type IWhitelister struct {
- IWhitelisterCaller // Read-only binding to the contract
- IWhitelisterTransactor // Write-only binding to the contract
- IWhitelisterFilterer // Log filterer for contract events
-}
-
-// IWhitelisterCaller is an auto generated read-only Go binding around an Ethereum contract.
-type IWhitelisterCaller struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// IWhitelisterTransactor is an auto generated write-only Go binding around an Ethereum contract.
-type IWhitelisterTransactor struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// IWhitelisterFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
-type IWhitelisterFilterer struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// IWhitelisterSession is an auto generated Go binding around an Ethereum contract,
-// with pre-set call and transact options.
-type IWhitelisterSession struct {
- Contract *IWhitelister // 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
-}
-
-// IWhitelisterCallerSession is an auto generated read-only Go binding around an Ethereum contract,
-// with pre-set call options.
-type IWhitelisterCallerSession struct {
- Contract *IWhitelisterCaller // Generic contract caller binding to set the session for
- CallOpts bind.CallOpts // Call options to use throughout this session
-}
-
-// IWhitelisterTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
-// with pre-set transact options.
-type IWhitelisterTransactorSession struct {
- Contract *IWhitelisterTransactor // Generic contract transactor binding to set the session for
- TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
-}
-
-// IWhitelisterRaw is an auto generated low-level Go binding around an Ethereum contract.
-type IWhitelisterRaw struct {
- Contract *IWhitelister // Generic contract binding to access the raw methods on
-}
-
-// IWhitelisterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
-type IWhitelisterCallerRaw struct {
- Contract *IWhitelisterCaller // Generic read-only contract binding to access the raw methods on
-}
-
-// IWhitelisterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
-type IWhitelisterTransactorRaw struct {
- Contract *IWhitelisterTransactor // Generic write-only contract binding to access the raw methods on
-}
-
-// NewIWhitelister creates a new instance of IWhitelister, bound to a specific deployed contract.
-func NewIWhitelister(address common.Address, backend bind.ContractBackend) (*IWhitelister, error) {
- contract, err := bindIWhitelister(address, backend, backend, backend)
- if err != nil {
- return nil, err
- }
- return &IWhitelister{IWhitelisterCaller: IWhitelisterCaller{contract: contract}, IWhitelisterTransactor: IWhitelisterTransactor{contract: contract}, IWhitelisterFilterer: IWhitelisterFilterer{contract: contract}}, nil
-}
-
-// NewIWhitelisterCaller creates a new read-only instance of IWhitelister, bound to a specific deployed contract.
-func NewIWhitelisterCaller(address common.Address, caller bind.ContractCaller) (*IWhitelisterCaller, error) {
- contract, err := bindIWhitelister(address, caller, nil, nil)
- if err != nil {
- return nil, err
- }
- return &IWhitelisterCaller{contract: contract}, nil
-}
-
-// NewIWhitelisterTransactor creates a new write-only instance of IWhitelister, bound to a specific deployed contract.
-func NewIWhitelisterTransactor(address common.Address, transactor bind.ContractTransactor) (*IWhitelisterTransactor, error) {
- contract, err := bindIWhitelister(address, nil, transactor, nil)
- if err != nil {
- return nil, err
- }
- return &IWhitelisterTransactor{contract: contract}, nil
-}
-
-// NewIWhitelisterFilterer creates a new log filterer instance of IWhitelister, bound to a specific deployed contract.
-func NewIWhitelisterFilterer(address common.Address, filterer bind.ContractFilterer) (*IWhitelisterFilterer, error) {
- contract, err := bindIWhitelister(address, nil, nil, filterer)
- if err != nil {
- return nil, err
- }
- return &IWhitelisterFilterer{contract: contract}, nil
-}
-
-// bindIWhitelister binds a generic wrapper to an already deployed contract.
-func bindIWhitelister(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
- parsed, err := IWhitelisterMetaData.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 (_IWhitelister *IWhitelisterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
- return _IWhitelister.Contract.IWhitelisterCaller.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 (_IWhitelister *IWhitelisterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
- return _IWhitelister.Contract.IWhitelisterTransactor.contract.Transfer(opts)
-}
-
-// Transact invokes the (paid) contract method with params as input values.
-func (_IWhitelister *IWhitelisterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
- return _IWhitelister.Contract.IWhitelisterTransactor.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 (_IWhitelister *IWhitelisterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
- return _IWhitelister.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 (_IWhitelister *IWhitelisterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
- return _IWhitelister.Contract.contract.Transfer(opts)
-}
-
-// Transact invokes the (paid) contract method with params as input values.
-func (_IWhitelister *IWhitelisterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
- return _IWhitelister.Contract.contract.Transact(opts, method, params...)
-}
-
-// CallAddress is a paid mutator transaction binding the contract method 0xf6e8f39d.
-//
-// Solidity: function callAddress(address to, bytes data) payable returns(bytes)
-func (_IWhitelister *IWhitelisterTransactor) CallAddress(opts *bind.TransactOpts, to common.Address, data []byte) (*types.Transaction, error) {
- return _IWhitelister.contract.Transact(opts, "callAddress", to, data)
-}
-
-// CallAddress is a paid mutator transaction binding the contract method 0xf6e8f39d.
-//
-// Solidity: function callAddress(address to, bytes data) payable returns(bytes)
-func (_IWhitelister *IWhitelisterSession) CallAddress(to common.Address, data []byte) (*types.Transaction, error) {
- return _IWhitelister.Contract.CallAddress(&_IWhitelister.TransactOpts, to, data)
-}
-
-// CallAddress is a paid mutator transaction binding the contract method 0xf6e8f39d.
-//
-// Solidity: function callAddress(address to, bytes data) payable returns(bytes)
-func (_IWhitelister *IWhitelisterTransactorSession) CallAddress(to common.Address, data []byte) (*types.Transaction, error) {
- return _IWhitelister.Contract.CallAddress(&_IWhitelister.TransactOpts, to, data)
-}
-
-// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x063dcd50.
-//
-// Solidity: function completeQueuedWithdrawal(address staker, (address,address,address,uint256,uint32,address[],uint256[]) queuedWithdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns(bytes)
-func (_IWhitelister *IWhitelisterTransactor) CompleteQueuedWithdrawal(opts *bind.TransactOpts, staker common.Address, queuedWithdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) {
- return _IWhitelister.contract.Transact(opts, "completeQueuedWithdrawal", staker, queuedWithdrawal, tokens, middlewareTimesIndex, receiveAsTokens)
-}
-
-// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x063dcd50.
-//
-// Solidity: function completeQueuedWithdrawal(address staker, (address,address,address,uint256,uint32,address[],uint256[]) queuedWithdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns(bytes)
-func (_IWhitelister *IWhitelisterSession) CompleteQueuedWithdrawal(staker common.Address, queuedWithdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) {
- return _IWhitelister.Contract.CompleteQueuedWithdrawal(&_IWhitelister.TransactOpts, staker, queuedWithdrawal, tokens, middlewareTimesIndex, receiveAsTokens)
-}
-
-// CompleteQueuedWithdrawal is a paid mutator transaction binding the contract method 0x063dcd50.
-//
-// Solidity: function completeQueuedWithdrawal(address staker, (address,address,address,uint256,uint32,address[],uint256[]) queuedWithdrawal, address[] tokens, uint256 middlewareTimesIndex, bool receiveAsTokens) returns(bytes)
-func (_IWhitelister *IWhitelisterTransactorSession) CompleteQueuedWithdrawal(staker common.Address, queuedWithdrawal IDelegationManagerWithdrawal, tokens []common.Address, middlewareTimesIndex *big.Int, receiveAsTokens bool) (*types.Transaction, error) {
- return _IWhitelister.Contract.CompleteQueuedWithdrawal(&_IWhitelister.TransactOpts, staker, queuedWithdrawal, tokens, middlewareTimesIndex, receiveAsTokens)
-}
-
-// DepositIntoStrategy is a paid mutator transaction binding the contract method 0xa49ca158.
-//
-// Solidity: function depositIntoStrategy(address staker, address strategy, address token, uint256 amount) returns(bytes)
-func (_IWhitelister *IWhitelisterTransactor) DepositIntoStrategy(opts *bind.TransactOpts, staker common.Address, strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) {
- return _IWhitelister.contract.Transact(opts, "depositIntoStrategy", staker, strategy, token, amount)
-}
-
-// DepositIntoStrategy is a paid mutator transaction binding the contract method 0xa49ca158.
-//
-// Solidity: function depositIntoStrategy(address staker, address strategy, address token, uint256 amount) returns(bytes)
-func (_IWhitelister *IWhitelisterSession) DepositIntoStrategy(staker common.Address, strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) {
- return _IWhitelister.Contract.DepositIntoStrategy(&_IWhitelister.TransactOpts, staker, strategy, token, amount)
-}
-
-// DepositIntoStrategy is a paid mutator transaction binding the contract method 0xa49ca158.
-//
-// Solidity: function depositIntoStrategy(address staker, address strategy, address token, uint256 amount) returns(bytes)
-func (_IWhitelister *IWhitelisterTransactorSession) DepositIntoStrategy(staker common.Address, strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) {
- return _IWhitelister.Contract.DepositIntoStrategy(&_IWhitelister.TransactOpts, staker, strategy, token, amount)
-}
-
-// GetStaker is a paid mutator transaction binding the contract method 0xa23c44b1.
-//
-// Solidity: function getStaker(address operator) returns(address)
-func (_IWhitelister *IWhitelisterTransactor) GetStaker(opts *bind.TransactOpts, operator common.Address) (*types.Transaction, error) {
- return _IWhitelister.contract.Transact(opts, "getStaker", operator)
-}
-
-// GetStaker is a paid mutator transaction binding the contract method 0xa23c44b1.
-//
-// Solidity: function getStaker(address operator) returns(address)
-func (_IWhitelister *IWhitelisterSession) GetStaker(operator common.Address) (*types.Transaction, error) {
- return _IWhitelister.Contract.GetStaker(&_IWhitelister.TransactOpts, operator)
-}
-
-// GetStaker is a paid mutator transaction binding the contract method 0xa23c44b1.
-//
-// Solidity: function getStaker(address operator) returns(address)
-func (_IWhitelister *IWhitelisterTransactorSession) GetStaker(operator common.Address) (*types.Transaction, error) {
- return _IWhitelister.Contract.GetStaker(&_IWhitelister.TransactOpts, operator)
-}
-
-// QueueWithdrawal is a paid mutator transaction binding the contract method 0xa76a9d2d.
-//
-// Solidity: function queueWithdrawal(address staker, (address[],uint256[],address)[] queuedWithdrawalParams) returns(bytes)
-func (_IWhitelister *IWhitelisterTransactor) QueueWithdrawal(opts *bind.TransactOpts, staker common.Address, queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) {
- return _IWhitelister.contract.Transact(opts, "queueWithdrawal", staker, queuedWithdrawalParams)
-}
-
-// QueueWithdrawal is a paid mutator transaction binding the contract method 0xa76a9d2d.
-//
-// Solidity: function queueWithdrawal(address staker, (address[],uint256[],address)[] queuedWithdrawalParams) returns(bytes)
-func (_IWhitelister *IWhitelisterSession) QueueWithdrawal(staker common.Address, queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) {
- return _IWhitelister.Contract.QueueWithdrawal(&_IWhitelister.TransactOpts, staker, queuedWithdrawalParams)
-}
-
-// QueueWithdrawal is a paid mutator transaction binding the contract method 0xa76a9d2d.
-//
-// Solidity: function queueWithdrawal(address staker, (address[],uint256[],address)[] queuedWithdrawalParams) returns(bytes)
-func (_IWhitelister *IWhitelisterTransactorSession) QueueWithdrawal(staker common.Address, queuedWithdrawalParams []IDelegationManagerQueuedWithdrawalParams) (*types.Transaction, error) {
- return _IWhitelister.Contract.QueueWithdrawal(&_IWhitelister.TransactOpts, staker, queuedWithdrawalParams)
-}
-
-// Transfer is a paid mutator transaction binding the contract method 0xf18d03cc.
-//
-// Solidity: function transfer(address staker, address token, address to, uint256 amount) returns(bytes)
-func (_IWhitelister *IWhitelisterTransactor) Transfer(opts *bind.TransactOpts, staker common.Address, token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) {
- return _IWhitelister.contract.Transact(opts, "transfer", staker, token, to, amount)
-}
-
-// Transfer is a paid mutator transaction binding the contract method 0xf18d03cc.
-//
-// Solidity: function transfer(address staker, address token, address to, uint256 amount) returns(bytes)
-func (_IWhitelister *IWhitelisterSession) Transfer(staker common.Address, token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) {
- return _IWhitelister.Contract.Transfer(&_IWhitelister.TransactOpts, staker, token, to, amount)
-}
-
-// Transfer is a paid mutator transaction binding the contract method 0xf18d03cc.
-//
-// Solidity: function transfer(address staker, address token, address to, uint256 amount) returns(bytes)
-func (_IWhitelister *IWhitelisterTransactorSession) Transfer(staker common.Address, token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) {
- return _IWhitelister.Contract.Transfer(&_IWhitelister.TransactOpts, staker, token, to, amount)
-}
-
-// Whitelist is a paid mutator transaction binding the contract method 0x9b19251a.
-//
-// Solidity: function whitelist(address operator) returns()
-func (_IWhitelister *IWhitelisterTransactor) Whitelist(opts *bind.TransactOpts, operator common.Address) (*types.Transaction, error) {
- return _IWhitelister.contract.Transact(opts, "whitelist", operator)
-}
-
-// Whitelist is a paid mutator transaction binding the contract method 0x9b19251a.
-//
-// Solidity: function whitelist(address operator) returns()
-func (_IWhitelister *IWhitelisterSession) Whitelist(operator common.Address) (*types.Transaction, error) {
- return _IWhitelister.Contract.Whitelist(&_IWhitelister.TransactOpts, operator)
-}
-
-// Whitelist is a paid mutator transaction binding the contract method 0x9b19251a.
-//
-// Solidity: function whitelist(address operator) returns()
-func (_IWhitelister *IWhitelisterTransactorSession) Whitelist(operator common.Address) (*types.Transaction, error) {
- return _IWhitelister.Contract.Whitelist(&_IWhitelister.TransactOpts, operator)
-}
diff --git a/pkg/bindings/Merkle/binding.go b/pkg/bindings/Merkle/binding.go
index 9fd5baa74e..d1795f6605 100644
--- a/pkg/bindings/Merkle/binding.go
+++ b/pkg/bindings/Merkle/binding.go
@@ -31,8 +31,8 @@ var (
// MerkleMetaData contains all meta data concerning the Merkle contract.
var MerkleMetaData = &bind.MetaData{
- ABI: "[]",
- Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122027e6f256094e3adb79ef5e0cee990a9b5bfa0e0427a5412e7de2805acaec11c664736f6c634300080c0033",
+ ABI: "[{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"inputs\":[]}]",
+ Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212208de82ea7f1a22cc126cdf4c3791b57f420fcc4ed980bdbddf119e15f4a112e8964736f6c634300081b0033",
}
// MerkleABI is the input ABI used to generate the binding from.
diff --git a/pkg/bindings/OperatorSetLib/binding.go b/pkg/bindings/OperatorSetLib/binding.go
new file mode 100644
index 0000000000..a48c2cefdd
--- /dev/null
+++ b/pkg/bindings/OperatorSetLib/binding.go
@@ -0,0 +1,203 @@
+// Code generated - DO NOT EDIT.
+// This file is a generated binding and any manual changes will be lost.
+
+package OperatorSetLib
+
+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
+)
+
+// OperatorSetLibMetaData contains all meta data concerning the OperatorSetLib contract.
+var OperatorSetLibMetaData = &bind.MetaData{
+ ABI: "[]",
+ Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122023e8e6cb91eee2d3c43ff6cfc219a624b12892e20fd5158ca2b4e1484806bb9c64736f6c634300081b0033",
+}
+
+// OperatorSetLibABI is the input ABI used to generate the binding from.
+// Deprecated: Use OperatorSetLibMetaData.ABI instead.
+var OperatorSetLibABI = OperatorSetLibMetaData.ABI
+
+// OperatorSetLibBin is the compiled bytecode used for deploying new contracts.
+// Deprecated: Use OperatorSetLibMetaData.Bin instead.
+var OperatorSetLibBin = OperatorSetLibMetaData.Bin
+
+// DeployOperatorSetLib deploys a new Ethereum contract, binding an instance of OperatorSetLib to it.
+func DeployOperatorSetLib(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *OperatorSetLib, error) {
+ parsed, err := OperatorSetLibMetaData.GetAbi()
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ if parsed == nil {
+ return common.Address{}, nil, nil, errors.New("GetABI returned nil")
+ }
+
+ address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(OperatorSetLibBin), backend)
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ return address, tx, &OperatorSetLib{OperatorSetLibCaller: OperatorSetLibCaller{contract: contract}, OperatorSetLibTransactor: OperatorSetLibTransactor{contract: contract}, OperatorSetLibFilterer: OperatorSetLibFilterer{contract: contract}}, nil
+}
+
+// OperatorSetLib is an auto generated Go binding around an Ethereum contract.
+type OperatorSetLib struct {
+ OperatorSetLibCaller // Read-only binding to the contract
+ OperatorSetLibTransactor // Write-only binding to the contract
+ OperatorSetLibFilterer // Log filterer for contract events
+}
+
+// OperatorSetLibCaller is an auto generated read-only Go binding around an Ethereum contract.
+type OperatorSetLibCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// OperatorSetLibTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type OperatorSetLibTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// OperatorSetLibFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
+type OperatorSetLibFilterer struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// OperatorSetLibSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type OperatorSetLibSession struct {
+ Contract *OperatorSetLib // 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
+}
+
+// OperatorSetLibCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type OperatorSetLibCallerSession struct {
+ Contract *OperatorSetLibCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// OperatorSetLibTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type OperatorSetLibTransactorSession struct {
+ Contract *OperatorSetLibTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// OperatorSetLibRaw is an auto generated low-level Go binding around an Ethereum contract.
+type OperatorSetLibRaw struct {
+ Contract *OperatorSetLib // Generic contract binding to access the raw methods on
+}
+
+// OperatorSetLibCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type OperatorSetLibCallerRaw struct {
+ Contract *OperatorSetLibCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// OperatorSetLibTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type OperatorSetLibTransactorRaw struct {
+ Contract *OperatorSetLibTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewOperatorSetLib creates a new instance of OperatorSetLib, bound to a specific deployed contract.
+func NewOperatorSetLib(address common.Address, backend bind.ContractBackend) (*OperatorSetLib, error) {
+ contract, err := bindOperatorSetLib(address, backend, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &OperatorSetLib{OperatorSetLibCaller: OperatorSetLibCaller{contract: contract}, OperatorSetLibTransactor: OperatorSetLibTransactor{contract: contract}, OperatorSetLibFilterer: OperatorSetLibFilterer{contract: contract}}, nil
+}
+
+// NewOperatorSetLibCaller creates a new read-only instance of OperatorSetLib, bound to a specific deployed contract.
+func NewOperatorSetLibCaller(address common.Address, caller bind.ContractCaller) (*OperatorSetLibCaller, error) {
+ contract, err := bindOperatorSetLib(address, caller, nil, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &OperatorSetLibCaller{contract: contract}, nil
+}
+
+// NewOperatorSetLibTransactor creates a new write-only instance of OperatorSetLib, bound to a specific deployed contract.
+func NewOperatorSetLibTransactor(address common.Address, transactor bind.ContractTransactor) (*OperatorSetLibTransactor, error) {
+ contract, err := bindOperatorSetLib(address, nil, transactor, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &OperatorSetLibTransactor{contract: contract}, nil
+}
+
+// NewOperatorSetLibFilterer creates a new log filterer instance of OperatorSetLib, bound to a specific deployed contract.
+func NewOperatorSetLibFilterer(address common.Address, filterer bind.ContractFilterer) (*OperatorSetLibFilterer, error) {
+ contract, err := bindOperatorSetLib(address, nil, nil, filterer)
+ if err != nil {
+ return nil, err
+ }
+ return &OperatorSetLibFilterer{contract: contract}, nil
+}
+
+// bindOperatorSetLib binds a generic wrapper to an already deployed contract.
+func bindOperatorSetLib(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
+ parsed, err := OperatorSetLibMetaData.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 (_OperatorSetLib *OperatorSetLibRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _OperatorSetLib.Contract.OperatorSetLibCaller.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 (_OperatorSetLib *OperatorSetLibRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _OperatorSetLib.Contract.OperatorSetLibTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_OperatorSetLib *OperatorSetLibRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _OperatorSetLib.Contract.OperatorSetLibTransactor.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 (_OperatorSetLib *OperatorSetLibCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _OperatorSetLib.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 (_OperatorSetLib *OperatorSetLibTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _OperatorSetLib.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_OperatorSetLib *OperatorSetLibTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _OperatorSetLib.Contract.contract.Transact(opts, method, params...)
+}
diff --git a/pkg/bindings/Pausable/binding.go b/pkg/bindings/Pausable/binding.go
index 4a293b2173..500e13569a 100644
--- a/pkg/bindings/Pausable/binding.go
+++ b/pkg/bindings/Pausable/binding.go
@@ -31,35 +31,13 @@ var (
// PausableMetaData contains all meta data concerning the Pausable contract.
var PausableMetaData = &bind.MetaData{
- ABI: "[{\"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\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]",
- Bin: "0x608060405234801561001057600080fd5b506107c2806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635ac86ab71161005b5780635ac86ab7146100b25780635c975abb146100e6578063886f1195146100f7578063fabc1cbc1461012257600080fd5b806310d67a2f14610082578063136439dd14610097578063595c6a67146100aa575b600080fd5b61009561009036600461065b565b610135565b005b6100956100a536600461067f565b6101ef565b61009561032e565b6100d16100c0366004610698565b6001805460ff9092161b9081161490565b60405190151581526020015b60405180910390f35b6001546040519081526020016100dd565b60005461010a906001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b61009561013036600461067f565b6103f5565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101aa91906106bb565b6001600160a01b0316336001600160a01b0316146101e35760405162461bcd60e51b81526004016101da906106d8565b60405180910390fd5b6101ec8161054f565b50565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025b9190610722565b6102775760405162461bcd60e51b81526004016101da90610744565b600154818116146102f05760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016101da565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190610722565b6103b65760405162461bcd60e51b81526004016101da90610744565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046a91906106bb565b6001600160a01b0316336001600160a01b03161461049a5760405162461bcd60e51b81526004016101da906106d8565b6001541981196001541916146105185760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016101da565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610323565b6001600160a01b0381166105dd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016101da565b600054604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146101ec57600080fd5b60006020828403121561066d57600080fd5b813561067881610646565b9392505050565b60006020828403121561069157600080fd5b5035919050565b6000602082840312156106aa57600080fd5b813560ff8116811461067857600080fd5b6000602082840312156106cd57600080fd5b815161067881610646565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561073457600080fd5b8151801515811461067857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea26469706673582212200cefa7b98a48ddd4249cd972ba7f65fa241dae8af3ea3b4a68835713de7065fc64736f6c634300080c0033",
+ ABI: "[{\"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\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]}]",
}
// PausableABI is the input ABI used to generate the binding from.
// Deprecated: Use PausableMetaData.ABI instead.
var PausableABI = PausableMetaData.ABI
-// PausableBin is the compiled bytecode used for deploying new contracts.
-// Deprecated: Use PausableMetaData.Bin instead.
-var PausableBin = PausableMetaData.Bin
-
-// DeployPausable deploys a new Ethereum contract, binding an instance of Pausable to it.
-func DeployPausable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Pausable, error) {
- parsed, err := PausableMetaData.GetAbi()
- if err != nil {
- return common.Address{}, nil, nil, err
- }
- if parsed == nil {
- return common.Address{}, nil, nil, errors.New("GetABI returned nil")
- }
-
- address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PausableBin), backend)
- if err != nil {
- return common.Address{}, nil, nil, err
- }
- return address, tx, &Pausable{PausableCaller: PausableCaller{contract: contract}, PausableTransactor: PausableTransactor{contract: contract}, PausableFilterer: PausableFilterer{contract: contract}}, nil
-}
-
// Pausable is an auto generated Go binding around an Ethereum contract.
type Pausable struct {
PausableCaller // Read-only binding to the contract
@@ -337,27 +315,6 @@ func (_Pausable *PausableTransactorSession) PauseAll() (*types.Transaction, erro
return _Pausable.Contract.PauseAll(&_Pausable.TransactOpts)
}
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_Pausable *PausableTransactor) SetPauserRegistry(opts *bind.TransactOpts, newPauserRegistry common.Address) (*types.Transaction, error) {
- return _Pausable.contract.Transact(opts, "setPauserRegistry", newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_Pausable *PausableSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _Pausable.Contract.SetPauserRegistry(&_Pausable.TransactOpts, newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_Pausable *PausableTransactorSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _Pausable.Contract.SetPauserRegistry(&_Pausable.TransactOpts, newPauserRegistry)
-}
-
// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc.
//
// Solidity: function unpause(uint256 newPausedStatus) returns()
@@ -524,141 +481,6 @@ func (_Pausable *PausableFilterer) ParsePaused(log types.Log) (*PausablePaused,
return event, nil
}
-// PausablePauserRegistrySetIterator is returned from FilterPauserRegistrySet and is used to iterate over the raw logs and unpacked data for PauserRegistrySet events raised by the Pausable contract.
-type PausablePauserRegistrySetIterator struct {
- Event *PausablePauserRegistrySet // 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 *PausablePauserRegistrySetIterator) 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(PausablePauserRegistrySet)
- 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(PausablePauserRegistrySet)
- 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 *PausablePauserRegistrySetIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *PausablePauserRegistrySetIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// PausablePauserRegistrySet represents a PauserRegistrySet event raised by the Pausable contract.
-type PausablePauserRegistrySet struct {
- PauserRegistry common.Address
- NewPauserRegistry common.Address
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterPauserRegistrySet is a free log retrieval operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_Pausable *PausableFilterer) FilterPauserRegistrySet(opts *bind.FilterOpts) (*PausablePauserRegistrySetIterator, error) {
-
- logs, sub, err := _Pausable.contract.FilterLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return &PausablePauserRegistrySetIterator{contract: _Pausable.contract, event: "PauserRegistrySet", logs: logs, sub: sub}, nil
-}
-
-// WatchPauserRegistrySet is a free log subscription operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_Pausable *PausableFilterer) WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *PausablePauserRegistrySet) (event.Subscription, error) {
-
- logs, sub, err := _Pausable.contract.WatchLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(PausablePauserRegistrySet)
- if err := _Pausable.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return err
- }
- event.Raw = log
-
- select {
- case sink <- event:
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- }
- }), nil
-}
-
-// ParsePauserRegistrySet is a log parse operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_Pausable *PausableFilterer) ParsePauserRegistrySet(log types.Log) (*PausablePauserRegistrySet, error) {
- event := new(PausablePauserRegistrySet)
- if err := _Pausable.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
// PausableUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the Pausable contract.
type PausableUnpausedIterator struct {
Event *PausableUnpaused // Event containing the contract specifics and raw log
diff --git a/pkg/bindings/PauserRegistry/binding.go b/pkg/bindings/PauserRegistry/binding.go
index 2099fe8874..a77ccb9e9d 100644
--- a/pkg/bindings/PauserRegistry/binding.go
+++ b/pkg/bindings/PauserRegistry/binding.go
@@ -31,8 +31,8 @@ var (
// PauserRegistryMetaData contains all meta data concerning the PauserRegistry contract.
var PauserRegistryMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_pausers\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_unpauser\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isPauser\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setIsPauser\",\"inputs\":[{\"name\":\"newPauser\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"canPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setUnpauser\",\"inputs\":[{\"name\":\"newUnpauser\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpauser\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"PauserStatusChanged\",\"inputs\":[{\"name\":\"pauser\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"canPause\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UnpauserChanged\",\"inputs\":[{\"name\":\"previousUnpauser\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newUnpauser\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false}]",
- Bin: "0x608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220400107fb39e4070329799832c0ce49475397a55d182fd9f9c38ee6784541743064736f6c634300080c0033",
+ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_pausers\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_unpauser\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isPauser\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setIsPauser\",\"inputs\":[{\"name\":\"newPauser\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"canPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setUnpauser\",\"inputs\":[{\"name\":\"newUnpauser\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpauser\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"PauserStatusChanged\",\"inputs\":[{\"name\":\"pauser\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"canPause\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UnpauserChanged\",\"inputs\":[{\"name\":\"previousUnpauser\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newUnpauser\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]}]",
+ Bin: "0x608060405234801561000f575f5ffd5b506040516105c83803806105c883398101604081905261002e916101c2565b5f5b825181101561006b5761006383828151811061004e5761004e61029e565b6020026020010151600161007c60201b60201c565b600101610030565b5061007581610103565b50506102b2565b6001600160a01b0382166100a3576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661012a576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b03811681146101bd575f5ffd5b919050565b5f5f604083850312156101d3575f5ffd5b82516001600160401b038111156101e8575f5ffd5b8301601f810185136101f8575f5ffd5b80516001600160401b0381111561021157610211610193565b604051600582901b90603f8201601f191681016001600160401b038111828210171561023f5761023f610193565b60405291825260208184018101929081018884111561025c575f5ffd5b6020850194505b8385101561028257610274856101a7565b815260209485019401610263565b50945061029592505050602084016101a7565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b610309806102bf5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea264697066735822122009d8ba5b235f31c96a07127caff39f4f0438590d75b714b9d6de67448091f19864736f6c634300081b0033",
}
// PauserRegistryABI is the input ABI used to generate the binding from.
diff --git a/pkg/bindings/PermissionController/binding.go b/pkg/bindings/PermissionController/binding.go
new file mode 100644
index 0000000000..21f037d593
--- /dev/null
+++ b/pkg/bindings/PermissionController/binding.go
@@ -0,0 +1,1571 @@
+// Code generated - DO NOT EDIT.
+// This file is a generated binding and any manual changes will be lost.
+
+package PermissionController
+
+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
+)
+
+// PermissionControllerMetaData contains all meta data concerning the PermissionController contract.
+var PermissionControllerMetaData = &bind.MetaData{
+ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"acceptAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addPendingAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"canCall\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAdmins\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAppointeePermissions\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAppointees\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPendingAdmins\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isPendingAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"pendingAdmin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeAppointee\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removePendingAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAppointee\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminRemoved\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AdminSet\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AppointeeRemoved\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"indexed\":false,\"internalType\":\"bytes4\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AppointeeSet\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"indexed\":false,\"internalType\":\"bytes4\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PendingAdminAdded\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PendingAdminRemoved\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AdminAlreadyPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AdminAlreadySet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AdminNotPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AdminNotSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AppointeeAlreadySet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AppointeeNotSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotHaveZeroAdmins\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAdmin\",\"inputs\":[]}]",
+ Bin: "0x6080604052348015600e575f5ffd5b5060156019565b60d3565b5f54610100900460ff161560835760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161460d1575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610f40806100e05f395ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101b0578063df595cb8146101c3578063eb5a4e87146101d6578063fddbdefd146101e9575f5ffd5b80639100674514610167578063950d806e1461018a578063ad5f22101461019d575f5ffd5b806306641201146100cf578063268959e5146100e45780634f906cf9146100f7578063628806ef1461010a5780636bddfa1f1461011d578063882a3b3814610146575b5f5ffd5b6100e26100dd366004610cfa565b6101fc565b005b6100e26100f2366004610d4b565b61031d565b6100e2610105366004610d4b565b6103f8565b6100e2610118366004610d7c565b61049b565b61013061012b366004610d7c565b610529565b60405161013d9190610dd8565b60405180910390f35b610159610154366004610d4b565b610552565b60405161013d929190610dea565b61017a610175366004610d4b565b6106b3565b604051901515815260200161013d565b6100e2610198366004610cfa565b610723565b6101306101ab366004610d7c565b610834565b61017a6101be366004610d4b565b6108da565b61017a6101d1366004610cfa565b6108fb565b6100e26101e4366004610d4b565b610950565b6101306101f7366004610e4c565b610a1e565b8361020781336106b3565b61022457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102468585610a5c565b6001600160a01b0387165f908152600484016020526040902090915061026c9082610a89565b6102895760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102ac9082610aa0565b505f81815260058301602052604090206102c69087610aab565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161030c929190610e8c565b60405180910390a350505050505050565b8161032881336106b3565b61034557604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061036c82610abf565b1161038a576040516310ce892b60e31b815260040160405180910390fd5b6103948184610aab565b6103b157604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b8161040381336106b3565b61042057604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104418184610aab565b61045e5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac7906020016103ea565b6001600160a01b0381165f9081526001602052604090206104bc8133610aab565b6104d95760405163bed8295f60e01b815260040160405180910390fd5b6104e66002820133610ac8565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f90815260016020526040902060609061054c90610adc565b92915050565b6001600160a01b038083165f90815260016020908152604080832093851683526004909301905290812060609182919061058b82610abf565b90505f8167ffffffffffffffff8111156105a7576105a7610eaf565b6040519080825280602002602001820160405280156105d0578160200160208202803683370190505b5090505f8267ffffffffffffffff8111156105ed576105ed610eaf565b604051908082528060200260200182016040528015610616578160200160208202803683370190505b5090505f5b838110156106a5576106496106308683610ae8565b606081901c9160a09190911b6001600160e01b03191690565b84838151811061065b5761065b610ec3565b6020026020010184848151811061067457610674610ec3565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161061b565b509097909650945050505050565b6001600160a01b0382165f9081526001602052604081206106d690600201610abf565b5f036106f857816001600160a01b0316836001600160a01b031614905061054c565b6001600160a01b0383165f90815260016020526040902061071c9060020183610af3565b9392505050565b8361072e81336106b3565b61074b57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f9081526001602052604081209061076d8585610a5c565b6001600160a01b0387165f90815260048401602052604090209091506107939082610a89565b156107b15760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206107d49082610b14565b505f81815260058301602052604090206107ee9087610ac8565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161030c929190610e8c565b6001600160a01b0381165f90815260016020526040902060609061085a90600201610abf565b5f036108b2576040805160018082528183019092525f916020808301908036833701905050905082815f8151811061089457610894610ec3565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f90815260016020526040902061054c90600201610adc565b919050565b6001600160a01b0382165f90815260016020526040812061071c9083610af3565b5f61090685856106b3565b8061094757506109476109198484610a5c565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610a89565b95945050505050565b8161095b81336106b3565b61097857604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260016020526040902061099c6002820184610af3565b156109ba5760405163130160e560e31b815260040160405180910390fd5b6109c48184610ac8565b6109e1576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c906020016103ea565b60605f610a2b8484610a5c565b6001600160a01b0386165f908152600160209081526040808320848452600501909152902090915061094790610adc565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561071c565b5f61071c8383610b1f565b5f61071c836001600160a01b038416610b1f565b5f61054c825490565b5f61071c836001600160a01b038416610c02565b60605f61071c83610c4e565b5f61071c8383610ca7565b6001600160a01b0381165f908152600183016020526040812054151561071c565b5f61071c8383610c02565b5f8181526001830160205260408120548015610bf9575f610b41600183610ed7565b85549091505f90610b5490600190610ed7565b9050818114610bb3575f865f018281548110610b7257610b72610ec3565b905f5260205f200154905080875f018481548110610b9257610b92610ec3565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610bc457610bc4610ef6565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061054c565b5f91505061054c565b5f818152600183016020526040812054610c4757508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561054c565b505f61054c565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610c9b57602002820191905f5260205f20905b815481526020019060010190808311610c87575b50505050509050919050565b5f825f018281548110610cbc57610cbc610ec3565b905f5260205f200154905092915050565b80356001600160a01b03811681146108d5575f5ffd5b80356001600160e01b0319811681146108d5575f5ffd5b5f5f5f5f60808587031215610d0d575f5ffd5b610d1685610ccd565b9350610d2460208601610ccd565b9250610d3260408601610ccd565b9150610d4060608601610ce3565b905092959194509250565b5f5f60408385031215610d5c575f5ffd5b610d6583610ccd565b9150610d7360208401610ccd565b90509250929050565b5f60208284031215610d8c575f5ffd5b61071c82610ccd565b5f8151808452602084019350602083015f5b82811015610dce5781516001600160a01b0316865260209586019590910190600101610da7565b5093949350505050565b602081525f61071c6020830184610d95565b604081525f610dfc6040830185610d95565b82810360208401528084518083526020830191506020860192505f5b81811015610e405783516001600160e01b031916835260209384019390920191600101610e18565b50909695505050505050565b5f5f5f60608486031215610e5e575f5ffd5b610e6784610ccd565b9250610e7560208501610ccd565b9150610e8360408501610ce3565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b8181038181111561054c57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220b63ce7fd361f505a43fbbc1e192d669b57efb369c86636afa2dd2f0c28075a1264736f6c634300081b0033",
+}
+
+// PermissionControllerABI is the input ABI used to generate the binding from.
+// Deprecated: Use PermissionControllerMetaData.ABI instead.
+var PermissionControllerABI = PermissionControllerMetaData.ABI
+
+// PermissionControllerBin is the compiled bytecode used for deploying new contracts.
+// Deprecated: Use PermissionControllerMetaData.Bin instead.
+var PermissionControllerBin = PermissionControllerMetaData.Bin
+
+// DeployPermissionController deploys a new Ethereum contract, binding an instance of PermissionController to it.
+func DeployPermissionController(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *PermissionController, error) {
+ parsed, err := PermissionControllerMetaData.GetAbi()
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ if parsed == nil {
+ return common.Address{}, nil, nil, errors.New("GetABI returned nil")
+ }
+
+ address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PermissionControllerBin), backend)
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ return address, tx, &PermissionController{PermissionControllerCaller: PermissionControllerCaller{contract: contract}, PermissionControllerTransactor: PermissionControllerTransactor{contract: contract}, PermissionControllerFilterer: PermissionControllerFilterer{contract: contract}}, nil
+}
+
+// PermissionController is an auto generated Go binding around an Ethereum contract.
+type PermissionController struct {
+ PermissionControllerCaller // Read-only binding to the contract
+ PermissionControllerTransactor // Write-only binding to the contract
+ PermissionControllerFilterer // Log filterer for contract events
+}
+
+// PermissionControllerCaller is an auto generated read-only Go binding around an Ethereum contract.
+type PermissionControllerCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// PermissionControllerTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type PermissionControllerTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// PermissionControllerFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
+type PermissionControllerFilterer struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// PermissionControllerSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type PermissionControllerSession struct {
+ Contract *PermissionController // 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
+}
+
+// PermissionControllerCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type PermissionControllerCallerSession struct {
+ Contract *PermissionControllerCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// PermissionControllerTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type PermissionControllerTransactorSession struct {
+ Contract *PermissionControllerTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// PermissionControllerRaw is an auto generated low-level Go binding around an Ethereum contract.
+type PermissionControllerRaw struct {
+ Contract *PermissionController // Generic contract binding to access the raw methods on
+}
+
+// PermissionControllerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type PermissionControllerCallerRaw struct {
+ Contract *PermissionControllerCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// PermissionControllerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type PermissionControllerTransactorRaw struct {
+ Contract *PermissionControllerTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewPermissionController creates a new instance of PermissionController, bound to a specific deployed contract.
+func NewPermissionController(address common.Address, backend bind.ContractBackend) (*PermissionController, error) {
+ contract, err := bindPermissionController(address, backend, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionController{PermissionControllerCaller: PermissionControllerCaller{contract: contract}, PermissionControllerTransactor: PermissionControllerTransactor{contract: contract}, PermissionControllerFilterer: PermissionControllerFilterer{contract: contract}}, nil
+}
+
+// NewPermissionControllerCaller creates a new read-only instance of PermissionController, bound to a specific deployed contract.
+func NewPermissionControllerCaller(address common.Address, caller bind.ContractCaller) (*PermissionControllerCaller, error) {
+ contract, err := bindPermissionController(address, caller, nil, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerCaller{contract: contract}, nil
+}
+
+// NewPermissionControllerTransactor creates a new write-only instance of PermissionController, bound to a specific deployed contract.
+func NewPermissionControllerTransactor(address common.Address, transactor bind.ContractTransactor) (*PermissionControllerTransactor, error) {
+ contract, err := bindPermissionController(address, nil, transactor, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerTransactor{contract: contract}, nil
+}
+
+// NewPermissionControllerFilterer creates a new log filterer instance of PermissionController, bound to a specific deployed contract.
+func NewPermissionControllerFilterer(address common.Address, filterer bind.ContractFilterer) (*PermissionControllerFilterer, error) {
+ contract, err := bindPermissionController(address, nil, nil, filterer)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerFilterer{contract: contract}, nil
+}
+
+// bindPermissionController binds a generic wrapper to an already deployed contract.
+func bindPermissionController(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
+ parsed, err := PermissionControllerMetaData.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 (_PermissionController *PermissionControllerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _PermissionController.Contract.PermissionControllerCaller.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 (_PermissionController *PermissionControllerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _PermissionController.Contract.PermissionControllerTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_PermissionController *PermissionControllerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _PermissionController.Contract.PermissionControllerTransactor.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 (_PermissionController *PermissionControllerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _PermissionController.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 (_PermissionController *PermissionControllerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _PermissionController.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_PermissionController *PermissionControllerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _PermissionController.Contract.contract.Transact(opts, method, params...)
+}
+
+// CanCall is a free data retrieval call binding the contract method 0xdf595cb8.
+//
+// Solidity: function canCall(address account, address caller, address target, bytes4 selector) view returns(bool)
+func (_PermissionController *PermissionControllerCaller) CanCall(opts *bind.CallOpts, account common.Address, caller common.Address, target common.Address, selector [4]byte) (bool, error) {
+ var out []interface{}
+ err := _PermissionController.contract.Call(opts, &out, "canCall", account, caller, target, selector)
+
+ if err != nil {
+ return *new(bool), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
+
+ return out0, err
+
+}
+
+// CanCall is a free data retrieval call binding the contract method 0xdf595cb8.
+//
+// Solidity: function canCall(address account, address caller, address target, bytes4 selector) view returns(bool)
+func (_PermissionController *PermissionControllerSession) CanCall(account common.Address, caller common.Address, target common.Address, selector [4]byte) (bool, error) {
+ return _PermissionController.Contract.CanCall(&_PermissionController.CallOpts, account, caller, target, selector)
+}
+
+// CanCall is a free data retrieval call binding the contract method 0xdf595cb8.
+//
+// Solidity: function canCall(address account, address caller, address target, bytes4 selector) view returns(bool)
+func (_PermissionController *PermissionControllerCallerSession) CanCall(account common.Address, caller common.Address, target common.Address, selector [4]byte) (bool, error) {
+ return _PermissionController.Contract.CanCall(&_PermissionController.CallOpts, account, caller, target, selector)
+}
+
+// GetAdmins is a free data retrieval call binding the contract method 0xad5f2210.
+//
+// Solidity: function getAdmins(address account) view returns(address[])
+func (_PermissionController *PermissionControllerCaller) GetAdmins(opts *bind.CallOpts, account common.Address) ([]common.Address, error) {
+ var out []interface{}
+ err := _PermissionController.contract.Call(opts, &out, "getAdmins", account)
+
+ if err != nil {
+ return *new([]common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
+
+ return out0, err
+
+}
+
+// GetAdmins is a free data retrieval call binding the contract method 0xad5f2210.
+//
+// Solidity: function getAdmins(address account) view returns(address[])
+func (_PermissionController *PermissionControllerSession) GetAdmins(account common.Address) ([]common.Address, error) {
+ return _PermissionController.Contract.GetAdmins(&_PermissionController.CallOpts, account)
+}
+
+// GetAdmins is a free data retrieval call binding the contract method 0xad5f2210.
+//
+// Solidity: function getAdmins(address account) view returns(address[])
+func (_PermissionController *PermissionControllerCallerSession) GetAdmins(account common.Address) ([]common.Address, error) {
+ return _PermissionController.Contract.GetAdmins(&_PermissionController.CallOpts, account)
+}
+
+// GetAppointeePermissions is a free data retrieval call binding the contract method 0x882a3b38.
+//
+// Solidity: function getAppointeePermissions(address account, address appointee) view returns(address[], bytes4[])
+func (_PermissionController *PermissionControllerCaller) GetAppointeePermissions(opts *bind.CallOpts, account common.Address, appointee common.Address) ([]common.Address, [][4]byte, error) {
+ var out []interface{}
+ err := _PermissionController.contract.Call(opts, &out, "getAppointeePermissions", account, appointee)
+
+ if err != nil {
+ return *new([]common.Address), *new([][4]byte), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
+ out1 := *abi.ConvertType(out[1], new([][4]byte)).(*[][4]byte)
+
+ return out0, out1, err
+
+}
+
+// GetAppointeePermissions is a free data retrieval call binding the contract method 0x882a3b38.
+//
+// Solidity: function getAppointeePermissions(address account, address appointee) view returns(address[], bytes4[])
+func (_PermissionController *PermissionControllerSession) GetAppointeePermissions(account common.Address, appointee common.Address) ([]common.Address, [][4]byte, error) {
+ return _PermissionController.Contract.GetAppointeePermissions(&_PermissionController.CallOpts, account, appointee)
+}
+
+// GetAppointeePermissions is a free data retrieval call binding the contract method 0x882a3b38.
+//
+// Solidity: function getAppointeePermissions(address account, address appointee) view returns(address[], bytes4[])
+func (_PermissionController *PermissionControllerCallerSession) GetAppointeePermissions(account common.Address, appointee common.Address) ([]common.Address, [][4]byte, error) {
+ return _PermissionController.Contract.GetAppointeePermissions(&_PermissionController.CallOpts, account, appointee)
+}
+
+// GetAppointees is a free data retrieval call binding the contract method 0xfddbdefd.
+//
+// Solidity: function getAppointees(address account, address target, bytes4 selector) view returns(address[])
+func (_PermissionController *PermissionControllerCaller) GetAppointees(opts *bind.CallOpts, account common.Address, target common.Address, selector [4]byte) ([]common.Address, error) {
+ var out []interface{}
+ err := _PermissionController.contract.Call(opts, &out, "getAppointees", account, target, selector)
+
+ if err != nil {
+ return *new([]common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
+
+ return out0, err
+
+}
+
+// GetAppointees is a free data retrieval call binding the contract method 0xfddbdefd.
+//
+// Solidity: function getAppointees(address account, address target, bytes4 selector) view returns(address[])
+func (_PermissionController *PermissionControllerSession) GetAppointees(account common.Address, target common.Address, selector [4]byte) ([]common.Address, error) {
+ return _PermissionController.Contract.GetAppointees(&_PermissionController.CallOpts, account, target, selector)
+}
+
+// GetAppointees is a free data retrieval call binding the contract method 0xfddbdefd.
+//
+// Solidity: function getAppointees(address account, address target, bytes4 selector) view returns(address[])
+func (_PermissionController *PermissionControllerCallerSession) GetAppointees(account common.Address, target common.Address, selector [4]byte) ([]common.Address, error) {
+ return _PermissionController.Contract.GetAppointees(&_PermissionController.CallOpts, account, target, selector)
+}
+
+// GetPendingAdmins is a free data retrieval call binding the contract method 0x6bddfa1f.
+//
+// Solidity: function getPendingAdmins(address account) view returns(address[])
+func (_PermissionController *PermissionControllerCaller) GetPendingAdmins(opts *bind.CallOpts, account common.Address) ([]common.Address, error) {
+ var out []interface{}
+ err := _PermissionController.contract.Call(opts, &out, "getPendingAdmins", account)
+
+ if err != nil {
+ return *new([]common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
+
+ return out0, err
+
+}
+
+// GetPendingAdmins is a free data retrieval call binding the contract method 0x6bddfa1f.
+//
+// Solidity: function getPendingAdmins(address account) view returns(address[])
+func (_PermissionController *PermissionControllerSession) GetPendingAdmins(account common.Address) ([]common.Address, error) {
+ return _PermissionController.Contract.GetPendingAdmins(&_PermissionController.CallOpts, account)
+}
+
+// GetPendingAdmins is a free data retrieval call binding the contract method 0x6bddfa1f.
+//
+// Solidity: function getPendingAdmins(address account) view returns(address[])
+func (_PermissionController *PermissionControllerCallerSession) GetPendingAdmins(account common.Address) ([]common.Address, error) {
+ return _PermissionController.Contract.GetPendingAdmins(&_PermissionController.CallOpts, account)
+}
+
+// IsAdmin is a free data retrieval call binding the contract method 0x91006745.
+//
+// Solidity: function isAdmin(address account, address caller) view returns(bool)
+func (_PermissionController *PermissionControllerCaller) IsAdmin(opts *bind.CallOpts, account common.Address, caller common.Address) (bool, error) {
+ var out []interface{}
+ err := _PermissionController.contract.Call(opts, &out, "isAdmin", account, caller)
+
+ if err != nil {
+ return *new(bool), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
+
+ return out0, err
+
+}
+
+// IsAdmin is a free data retrieval call binding the contract method 0x91006745.
+//
+// Solidity: function isAdmin(address account, address caller) view returns(bool)
+func (_PermissionController *PermissionControllerSession) IsAdmin(account common.Address, caller common.Address) (bool, error) {
+ return _PermissionController.Contract.IsAdmin(&_PermissionController.CallOpts, account, caller)
+}
+
+// IsAdmin is a free data retrieval call binding the contract method 0x91006745.
+//
+// Solidity: function isAdmin(address account, address caller) view returns(bool)
+func (_PermissionController *PermissionControllerCallerSession) IsAdmin(account common.Address, caller common.Address) (bool, error) {
+ return _PermissionController.Contract.IsAdmin(&_PermissionController.CallOpts, account, caller)
+}
+
+// IsPendingAdmin is a free data retrieval call binding the contract method 0xad8aca77.
+//
+// Solidity: function isPendingAdmin(address account, address pendingAdmin) view returns(bool)
+func (_PermissionController *PermissionControllerCaller) IsPendingAdmin(opts *bind.CallOpts, account common.Address, pendingAdmin common.Address) (bool, error) {
+ var out []interface{}
+ err := _PermissionController.contract.Call(opts, &out, "isPendingAdmin", account, pendingAdmin)
+
+ if err != nil {
+ return *new(bool), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
+
+ return out0, err
+
+}
+
+// IsPendingAdmin is a free data retrieval call binding the contract method 0xad8aca77.
+//
+// Solidity: function isPendingAdmin(address account, address pendingAdmin) view returns(bool)
+func (_PermissionController *PermissionControllerSession) IsPendingAdmin(account common.Address, pendingAdmin common.Address) (bool, error) {
+ return _PermissionController.Contract.IsPendingAdmin(&_PermissionController.CallOpts, account, pendingAdmin)
+}
+
+// IsPendingAdmin is a free data retrieval call binding the contract method 0xad8aca77.
+//
+// Solidity: function isPendingAdmin(address account, address pendingAdmin) view returns(bool)
+func (_PermissionController *PermissionControllerCallerSession) IsPendingAdmin(account common.Address, pendingAdmin common.Address) (bool, error) {
+ return _PermissionController.Contract.IsPendingAdmin(&_PermissionController.CallOpts, account, pendingAdmin)
+}
+
+// AcceptAdmin is a paid mutator transaction binding the contract method 0x628806ef.
+//
+// Solidity: function acceptAdmin(address account) returns()
+func (_PermissionController *PermissionControllerTransactor) AcceptAdmin(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
+ return _PermissionController.contract.Transact(opts, "acceptAdmin", account)
+}
+
+// AcceptAdmin is a paid mutator transaction binding the contract method 0x628806ef.
+//
+// Solidity: function acceptAdmin(address account) returns()
+func (_PermissionController *PermissionControllerSession) AcceptAdmin(account common.Address) (*types.Transaction, error) {
+ return _PermissionController.Contract.AcceptAdmin(&_PermissionController.TransactOpts, account)
+}
+
+// AcceptAdmin is a paid mutator transaction binding the contract method 0x628806ef.
+//
+// Solidity: function acceptAdmin(address account) returns()
+func (_PermissionController *PermissionControllerTransactorSession) AcceptAdmin(account common.Address) (*types.Transaction, error) {
+ return _PermissionController.Contract.AcceptAdmin(&_PermissionController.TransactOpts, account)
+}
+
+// AddPendingAdmin is a paid mutator transaction binding the contract method 0xeb5a4e87.
+//
+// Solidity: function addPendingAdmin(address account, address admin) returns()
+func (_PermissionController *PermissionControllerTransactor) AddPendingAdmin(opts *bind.TransactOpts, account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _PermissionController.contract.Transact(opts, "addPendingAdmin", account, admin)
+}
+
+// AddPendingAdmin is a paid mutator transaction binding the contract method 0xeb5a4e87.
+//
+// Solidity: function addPendingAdmin(address account, address admin) returns()
+func (_PermissionController *PermissionControllerSession) AddPendingAdmin(account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _PermissionController.Contract.AddPendingAdmin(&_PermissionController.TransactOpts, account, admin)
+}
+
+// AddPendingAdmin is a paid mutator transaction binding the contract method 0xeb5a4e87.
+//
+// Solidity: function addPendingAdmin(address account, address admin) returns()
+func (_PermissionController *PermissionControllerTransactorSession) AddPendingAdmin(account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _PermissionController.Contract.AddPendingAdmin(&_PermissionController.TransactOpts, account, admin)
+}
+
+// RemoveAdmin is a paid mutator transaction binding the contract method 0x268959e5.
+//
+// Solidity: function removeAdmin(address account, address admin) returns()
+func (_PermissionController *PermissionControllerTransactor) RemoveAdmin(opts *bind.TransactOpts, account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _PermissionController.contract.Transact(opts, "removeAdmin", account, admin)
+}
+
+// RemoveAdmin is a paid mutator transaction binding the contract method 0x268959e5.
+//
+// Solidity: function removeAdmin(address account, address admin) returns()
+func (_PermissionController *PermissionControllerSession) RemoveAdmin(account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _PermissionController.Contract.RemoveAdmin(&_PermissionController.TransactOpts, account, admin)
+}
+
+// RemoveAdmin is a paid mutator transaction binding the contract method 0x268959e5.
+//
+// Solidity: function removeAdmin(address account, address admin) returns()
+func (_PermissionController *PermissionControllerTransactorSession) RemoveAdmin(account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _PermissionController.Contract.RemoveAdmin(&_PermissionController.TransactOpts, account, admin)
+}
+
+// RemoveAppointee is a paid mutator transaction binding the contract method 0x06641201.
+//
+// Solidity: function removeAppointee(address account, address appointee, address target, bytes4 selector) returns()
+func (_PermissionController *PermissionControllerTransactor) RemoveAppointee(opts *bind.TransactOpts, account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _PermissionController.contract.Transact(opts, "removeAppointee", account, appointee, target, selector)
+}
+
+// RemoveAppointee is a paid mutator transaction binding the contract method 0x06641201.
+//
+// Solidity: function removeAppointee(address account, address appointee, address target, bytes4 selector) returns()
+func (_PermissionController *PermissionControllerSession) RemoveAppointee(account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _PermissionController.Contract.RemoveAppointee(&_PermissionController.TransactOpts, account, appointee, target, selector)
+}
+
+// RemoveAppointee is a paid mutator transaction binding the contract method 0x06641201.
+//
+// Solidity: function removeAppointee(address account, address appointee, address target, bytes4 selector) returns()
+func (_PermissionController *PermissionControllerTransactorSession) RemoveAppointee(account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _PermissionController.Contract.RemoveAppointee(&_PermissionController.TransactOpts, account, appointee, target, selector)
+}
+
+// RemovePendingAdmin is a paid mutator transaction binding the contract method 0x4f906cf9.
+//
+// Solidity: function removePendingAdmin(address account, address admin) returns()
+func (_PermissionController *PermissionControllerTransactor) RemovePendingAdmin(opts *bind.TransactOpts, account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _PermissionController.contract.Transact(opts, "removePendingAdmin", account, admin)
+}
+
+// RemovePendingAdmin is a paid mutator transaction binding the contract method 0x4f906cf9.
+//
+// Solidity: function removePendingAdmin(address account, address admin) returns()
+func (_PermissionController *PermissionControllerSession) RemovePendingAdmin(account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _PermissionController.Contract.RemovePendingAdmin(&_PermissionController.TransactOpts, account, admin)
+}
+
+// RemovePendingAdmin is a paid mutator transaction binding the contract method 0x4f906cf9.
+//
+// Solidity: function removePendingAdmin(address account, address admin) returns()
+func (_PermissionController *PermissionControllerTransactorSession) RemovePendingAdmin(account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _PermissionController.Contract.RemovePendingAdmin(&_PermissionController.TransactOpts, account, admin)
+}
+
+// SetAppointee is a paid mutator transaction binding the contract method 0x950d806e.
+//
+// Solidity: function setAppointee(address account, address appointee, address target, bytes4 selector) returns()
+func (_PermissionController *PermissionControllerTransactor) SetAppointee(opts *bind.TransactOpts, account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _PermissionController.contract.Transact(opts, "setAppointee", account, appointee, target, selector)
+}
+
+// SetAppointee is a paid mutator transaction binding the contract method 0x950d806e.
+//
+// Solidity: function setAppointee(address account, address appointee, address target, bytes4 selector) returns()
+func (_PermissionController *PermissionControllerSession) SetAppointee(account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _PermissionController.Contract.SetAppointee(&_PermissionController.TransactOpts, account, appointee, target, selector)
+}
+
+// SetAppointee is a paid mutator transaction binding the contract method 0x950d806e.
+//
+// Solidity: function setAppointee(address account, address appointee, address target, bytes4 selector) returns()
+func (_PermissionController *PermissionControllerTransactorSession) SetAppointee(account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _PermissionController.Contract.SetAppointee(&_PermissionController.TransactOpts, account, appointee, target, selector)
+}
+
+// PermissionControllerAdminRemovedIterator is returned from FilterAdminRemoved and is used to iterate over the raw logs and unpacked data for AdminRemoved events raised by the PermissionController contract.
+type PermissionControllerAdminRemovedIterator struct {
+ Event *PermissionControllerAdminRemoved // 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 *PermissionControllerAdminRemovedIterator) 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(PermissionControllerAdminRemoved)
+ 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(PermissionControllerAdminRemoved)
+ 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 *PermissionControllerAdminRemovedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *PermissionControllerAdminRemovedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// PermissionControllerAdminRemoved represents a AdminRemoved event raised by the PermissionController contract.
+type PermissionControllerAdminRemoved struct {
+ Account common.Address
+ Admin common.Address
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAdminRemoved is a free log retrieval operation binding the contract event 0xdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce.
+//
+// Solidity: event AdminRemoved(address indexed account, address admin)
+func (_PermissionController *PermissionControllerFilterer) FilterAdminRemoved(opts *bind.FilterOpts, account []common.Address) (*PermissionControllerAdminRemovedIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _PermissionController.contract.FilterLogs(opts, "AdminRemoved", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerAdminRemovedIterator{contract: _PermissionController.contract, event: "AdminRemoved", logs: logs, sub: sub}, nil
+}
+
+// WatchAdminRemoved is a free log subscription operation binding the contract event 0xdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce.
+//
+// Solidity: event AdminRemoved(address indexed account, address admin)
+func (_PermissionController *PermissionControllerFilterer) WatchAdminRemoved(opts *bind.WatchOpts, sink chan<- *PermissionControllerAdminRemoved, account []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _PermissionController.contract.WatchLogs(opts, "AdminRemoved", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(PermissionControllerAdminRemoved)
+ if err := _PermissionController.contract.UnpackLog(event, "AdminRemoved", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParseAdminRemoved is a log parse operation binding the contract event 0xdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce.
+//
+// Solidity: event AdminRemoved(address indexed account, address admin)
+func (_PermissionController *PermissionControllerFilterer) ParseAdminRemoved(log types.Log) (*PermissionControllerAdminRemoved, error) {
+ event := new(PermissionControllerAdminRemoved)
+ if err := _PermissionController.contract.UnpackLog(event, "AdminRemoved", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// PermissionControllerAdminSetIterator is returned from FilterAdminSet and is used to iterate over the raw logs and unpacked data for AdminSet events raised by the PermissionController contract.
+type PermissionControllerAdminSetIterator struct {
+ Event *PermissionControllerAdminSet // 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 *PermissionControllerAdminSetIterator) 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(PermissionControllerAdminSet)
+ 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(PermissionControllerAdminSet)
+ 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 *PermissionControllerAdminSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *PermissionControllerAdminSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// PermissionControllerAdminSet represents a AdminSet event raised by the PermissionController contract.
+type PermissionControllerAdminSet struct {
+ Account common.Address
+ Admin common.Address
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAdminSet is a free log retrieval operation binding the contract event 0xbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff97.
+//
+// Solidity: event AdminSet(address indexed account, address admin)
+func (_PermissionController *PermissionControllerFilterer) FilterAdminSet(opts *bind.FilterOpts, account []common.Address) (*PermissionControllerAdminSetIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _PermissionController.contract.FilterLogs(opts, "AdminSet", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerAdminSetIterator{contract: _PermissionController.contract, event: "AdminSet", logs: logs, sub: sub}, nil
+}
+
+// WatchAdminSet is a free log subscription operation binding the contract event 0xbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff97.
+//
+// Solidity: event AdminSet(address indexed account, address admin)
+func (_PermissionController *PermissionControllerFilterer) WatchAdminSet(opts *bind.WatchOpts, sink chan<- *PermissionControllerAdminSet, account []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _PermissionController.contract.WatchLogs(opts, "AdminSet", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(PermissionControllerAdminSet)
+ if err := _PermissionController.contract.UnpackLog(event, "AdminSet", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParseAdminSet is a log parse operation binding the contract event 0xbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff97.
+//
+// Solidity: event AdminSet(address indexed account, address admin)
+func (_PermissionController *PermissionControllerFilterer) ParseAdminSet(log types.Log) (*PermissionControllerAdminSet, error) {
+ event := new(PermissionControllerAdminSet)
+ if err := _PermissionController.contract.UnpackLog(event, "AdminSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// PermissionControllerAppointeeRemovedIterator is returned from FilterAppointeeRemoved and is used to iterate over the raw logs and unpacked data for AppointeeRemoved events raised by the PermissionController contract.
+type PermissionControllerAppointeeRemovedIterator struct {
+ Event *PermissionControllerAppointeeRemoved // 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 *PermissionControllerAppointeeRemovedIterator) 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(PermissionControllerAppointeeRemoved)
+ 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(PermissionControllerAppointeeRemoved)
+ 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 *PermissionControllerAppointeeRemovedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *PermissionControllerAppointeeRemovedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// PermissionControllerAppointeeRemoved represents a AppointeeRemoved event raised by the PermissionController contract.
+type PermissionControllerAppointeeRemoved struct {
+ Account common.Address
+ Appointee common.Address
+ Target common.Address
+ Selector [4]byte
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAppointeeRemoved is a free log retrieval operation binding the contract event 0x18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6.
+//
+// Solidity: event AppointeeRemoved(address indexed account, address indexed appointee, address target, bytes4 selector)
+func (_PermissionController *PermissionControllerFilterer) FilterAppointeeRemoved(opts *bind.FilterOpts, account []common.Address, appointee []common.Address) (*PermissionControllerAppointeeRemovedIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+ var appointeeRule []interface{}
+ for _, appointeeItem := range appointee {
+ appointeeRule = append(appointeeRule, appointeeItem)
+ }
+
+ logs, sub, err := _PermissionController.contract.FilterLogs(opts, "AppointeeRemoved", accountRule, appointeeRule)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerAppointeeRemovedIterator{contract: _PermissionController.contract, event: "AppointeeRemoved", logs: logs, sub: sub}, nil
+}
+
+// WatchAppointeeRemoved is a free log subscription operation binding the contract event 0x18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6.
+//
+// Solidity: event AppointeeRemoved(address indexed account, address indexed appointee, address target, bytes4 selector)
+func (_PermissionController *PermissionControllerFilterer) WatchAppointeeRemoved(opts *bind.WatchOpts, sink chan<- *PermissionControllerAppointeeRemoved, account []common.Address, appointee []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+ var appointeeRule []interface{}
+ for _, appointeeItem := range appointee {
+ appointeeRule = append(appointeeRule, appointeeItem)
+ }
+
+ logs, sub, err := _PermissionController.contract.WatchLogs(opts, "AppointeeRemoved", accountRule, appointeeRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(PermissionControllerAppointeeRemoved)
+ if err := _PermissionController.contract.UnpackLog(event, "AppointeeRemoved", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParseAppointeeRemoved is a log parse operation binding the contract event 0x18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6.
+//
+// Solidity: event AppointeeRemoved(address indexed account, address indexed appointee, address target, bytes4 selector)
+func (_PermissionController *PermissionControllerFilterer) ParseAppointeeRemoved(log types.Log) (*PermissionControllerAppointeeRemoved, error) {
+ event := new(PermissionControllerAppointeeRemoved)
+ if err := _PermissionController.contract.UnpackLog(event, "AppointeeRemoved", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// PermissionControllerAppointeeSetIterator is returned from FilterAppointeeSet and is used to iterate over the raw logs and unpacked data for AppointeeSet events raised by the PermissionController contract.
+type PermissionControllerAppointeeSetIterator struct {
+ Event *PermissionControllerAppointeeSet // 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 *PermissionControllerAppointeeSetIterator) 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(PermissionControllerAppointeeSet)
+ 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(PermissionControllerAppointeeSet)
+ 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 *PermissionControllerAppointeeSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *PermissionControllerAppointeeSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// PermissionControllerAppointeeSet represents a AppointeeSet event raised by the PermissionController contract.
+type PermissionControllerAppointeeSet struct {
+ Account common.Address
+ Appointee common.Address
+ Target common.Address
+ Selector [4]byte
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAppointeeSet is a free log retrieval operation binding the contract event 0x037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169.
+//
+// Solidity: event AppointeeSet(address indexed account, address indexed appointee, address target, bytes4 selector)
+func (_PermissionController *PermissionControllerFilterer) FilterAppointeeSet(opts *bind.FilterOpts, account []common.Address, appointee []common.Address) (*PermissionControllerAppointeeSetIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+ var appointeeRule []interface{}
+ for _, appointeeItem := range appointee {
+ appointeeRule = append(appointeeRule, appointeeItem)
+ }
+
+ logs, sub, err := _PermissionController.contract.FilterLogs(opts, "AppointeeSet", accountRule, appointeeRule)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerAppointeeSetIterator{contract: _PermissionController.contract, event: "AppointeeSet", logs: logs, sub: sub}, nil
+}
+
+// WatchAppointeeSet is a free log subscription operation binding the contract event 0x037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169.
+//
+// Solidity: event AppointeeSet(address indexed account, address indexed appointee, address target, bytes4 selector)
+func (_PermissionController *PermissionControllerFilterer) WatchAppointeeSet(opts *bind.WatchOpts, sink chan<- *PermissionControllerAppointeeSet, account []common.Address, appointee []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+ var appointeeRule []interface{}
+ for _, appointeeItem := range appointee {
+ appointeeRule = append(appointeeRule, appointeeItem)
+ }
+
+ logs, sub, err := _PermissionController.contract.WatchLogs(opts, "AppointeeSet", accountRule, appointeeRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(PermissionControllerAppointeeSet)
+ if err := _PermissionController.contract.UnpackLog(event, "AppointeeSet", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParseAppointeeSet is a log parse operation binding the contract event 0x037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169.
+//
+// Solidity: event AppointeeSet(address indexed account, address indexed appointee, address target, bytes4 selector)
+func (_PermissionController *PermissionControllerFilterer) ParseAppointeeSet(log types.Log) (*PermissionControllerAppointeeSet, error) {
+ event := new(PermissionControllerAppointeeSet)
+ if err := _PermissionController.contract.UnpackLog(event, "AppointeeSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// PermissionControllerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the PermissionController contract.
+type PermissionControllerInitializedIterator struct {
+ Event *PermissionControllerInitialized // 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 *PermissionControllerInitializedIterator) 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(PermissionControllerInitialized)
+ 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(PermissionControllerInitialized)
+ 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 *PermissionControllerInitializedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *PermissionControllerInitializedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// PermissionControllerInitialized represents a Initialized event raised by the PermissionController contract.
+type PermissionControllerInitialized struct {
+ Version uint8
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498.
+//
+// Solidity: event Initialized(uint8 version)
+func (_PermissionController *PermissionControllerFilterer) FilterInitialized(opts *bind.FilterOpts) (*PermissionControllerInitializedIterator, error) {
+
+ logs, sub, err := _PermissionController.contract.FilterLogs(opts, "Initialized")
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerInitializedIterator{contract: _PermissionController.contract, event: "Initialized", logs: logs, sub: sub}, nil
+}
+
+// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498.
+//
+// Solidity: event Initialized(uint8 version)
+func (_PermissionController *PermissionControllerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PermissionControllerInitialized) (event.Subscription, error) {
+
+ logs, sub, err := _PermissionController.contract.WatchLogs(opts, "Initialized")
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(PermissionControllerInitialized)
+ if err := _PermissionController.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 (_PermissionController *PermissionControllerFilterer) ParseInitialized(log types.Log) (*PermissionControllerInitialized, error) {
+ event := new(PermissionControllerInitialized)
+ if err := _PermissionController.contract.UnpackLog(event, "Initialized", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// PermissionControllerPendingAdminAddedIterator is returned from FilterPendingAdminAdded and is used to iterate over the raw logs and unpacked data for PendingAdminAdded events raised by the PermissionController contract.
+type PermissionControllerPendingAdminAddedIterator struct {
+ Event *PermissionControllerPendingAdminAdded // 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 *PermissionControllerPendingAdminAddedIterator) 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(PermissionControllerPendingAdminAdded)
+ 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(PermissionControllerPendingAdminAdded)
+ 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 *PermissionControllerPendingAdminAddedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *PermissionControllerPendingAdminAddedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// PermissionControllerPendingAdminAdded represents a PendingAdminAdded event raised by the PermissionController contract.
+type PermissionControllerPendingAdminAdded struct {
+ Account common.Address
+ Admin common.Address
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterPendingAdminAdded is a free log retrieval operation binding the contract event 0xb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c.
+//
+// Solidity: event PendingAdminAdded(address indexed account, address admin)
+func (_PermissionController *PermissionControllerFilterer) FilterPendingAdminAdded(opts *bind.FilterOpts, account []common.Address) (*PermissionControllerPendingAdminAddedIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _PermissionController.contract.FilterLogs(opts, "PendingAdminAdded", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerPendingAdminAddedIterator{contract: _PermissionController.contract, event: "PendingAdminAdded", logs: logs, sub: sub}, nil
+}
+
+// WatchPendingAdminAdded is a free log subscription operation binding the contract event 0xb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c.
+//
+// Solidity: event PendingAdminAdded(address indexed account, address admin)
+func (_PermissionController *PermissionControllerFilterer) WatchPendingAdminAdded(opts *bind.WatchOpts, sink chan<- *PermissionControllerPendingAdminAdded, account []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _PermissionController.contract.WatchLogs(opts, "PendingAdminAdded", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(PermissionControllerPendingAdminAdded)
+ if err := _PermissionController.contract.UnpackLog(event, "PendingAdminAdded", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParsePendingAdminAdded is a log parse operation binding the contract event 0xb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c.
+//
+// Solidity: event PendingAdminAdded(address indexed account, address admin)
+func (_PermissionController *PermissionControllerFilterer) ParsePendingAdminAdded(log types.Log) (*PermissionControllerPendingAdminAdded, error) {
+ event := new(PermissionControllerPendingAdminAdded)
+ if err := _PermissionController.contract.UnpackLog(event, "PendingAdminAdded", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// PermissionControllerPendingAdminRemovedIterator is returned from FilterPendingAdminRemoved and is used to iterate over the raw logs and unpacked data for PendingAdminRemoved events raised by the PermissionController contract.
+type PermissionControllerPendingAdminRemovedIterator struct {
+ Event *PermissionControllerPendingAdminRemoved // 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 *PermissionControllerPendingAdminRemovedIterator) 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(PermissionControllerPendingAdminRemoved)
+ 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(PermissionControllerPendingAdminRemoved)
+ 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 *PermissionControllerPendingAdminRemovedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *PermissionControllerPendingAdminRemovedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// PermissionControllerPendingAdminRemoved represents a PendingAdminRemoved event raised by the PermissionController contract.
+type PermissionControllerPendingAdminRemoved struct {
+ Account common.Address
+ Admin common.Address
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterPendingAdminRemoved is a free log retrieval operation binding the contract event 0xd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac7.
+//
+// Solidity: event PendingAdminRemoved(address indexed account, address admin)
+func (_PermissionController *PermissionControllerFilterer) FilterPendingAdminRemoved(opts *bind.FilterOpts, account []common.Address) (*PermissionControllerPendingAdminRemovedIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _PermissionController.contract.FilterLogs(opts, "PendingAdminRemoved", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerPendingAdminRemovedIterator{contract: _PermissionController.contract, event: "PendingAdminRemoved", logs: logs, sub: sub}, nil
+}
+
+// WatchPendingAdminRemoved is a free log subscription operation binding the contract event 0xd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac7.
+//
+// Solidity: event PendingAdminRemoved(address indexed account, address admin)
+func (_PermissionController *PermissionControllerFilterer) WatchPendingAdminRemoved(opts *bind.WatchOpts, sink chan<- *PermissionControllerPendingAdminRemoved, account []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _PermissionController.contract.WatchLogs(opts, "PendingAdminRemoved", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(PermissionControllerPendingAdminRemoved)
+ if err := _PermissionController.contract.UnpackLog(event, "PendingAdminRemoved", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParsePendingAdminRemoved is a log parse operation binding the contract event 0xd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac7.
+//
+// Solidity: event PendingAdminRemoved(address indexed account, address admin)
+func (_PermissionController *PermissionControllerFilterer) ParsePendingAdminRemoved(log types.Log) (*PermissionControllerPendingAdminRemoved, error) {
+ event := new(PermissionControllerPendingAdminRemoved)
+ if err := _PermissionController.contract.UnpackLog(event, "PendingAdminRemoved", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
diff --git a/pkg/bindings/PermissionControllerMixin/binding.go b/pkg/bindings/PermissionControllerMixin/binding.go
new file mode 100644
index 0000000000..184a1d59cd
--- /dev/null
+++ b/pkg/bindings/PermissionControllerMixin/binding.go
@@ -0,0 +1,212 @@
+// Code generated - DO NOT EDIT.
+// This file is a generated binding and any manual changes will be lost.
+
+package PermissionControllerMixin
+
+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
+)
+
+// PermissionControllerMixinMetaData contains all meta data concerning the PermissionControllerMixin contract.
+var PermissionControllerMixinMetaData = &bind.MetaData{
+ ABI: "[{\"type\":\"function\",\"name\":\"permissionController\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"}],\"stateMutability\":\"view\"},{\"type\":\"error\",\"name\":\"InvalidPermissions\",\"inputs\":[]}]",
+}
+
+// PermissionControllerMixinABI is the input ABI used to generate the binding from.
+// Deprecated: Use PermissionControllerMixinMetaData.ABI instead.
+var PermissionControllerMixinABI = PermissionControllerMixinMetaData.ABI
+
+// PermissionControllerMixin is an auto generated Go binding around an Ethereum contract.
+type PermissionControllerMixin struct {
+ PermissionControllerMixinCaller // Read-only binding to the contract
+ PermissionControllerMixinTransactor // Write-only binding to the contract
+ PermissionControllerMixinFilterer // Log filterer for contract events
+}
+
+// PermissionControllerMixinCaller is an auto generated read-only Go binding around an Ethereum contract.
+type PermissionControllerMixinCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// PermissionControllerMixinTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type PermissionControllerMixinTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// PermissionControllerMixinFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
+type PermissionControllerMixinFilterer struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// PermissionControllerMixinSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type PermissionControllerMixinSession struct {
+ Contract *PermissionControllerMixin // 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
+}
+
+// PermissionControllerMixinCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type PermissionControllerMixinCallerSession struct {
+ Contract *PermissionControllerMixinCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// PermissionControllerMixinTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type PermissionControllerMixinTransactorSession struct {
+ Contract *PermissionControllerMixinTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// PermissionControllerMixinRaw is an auto generated low-level Go binding around an Ethereum contract.
+type PermissionControllerMixinRaw struct {
+ Contract *PermissionControllerMixin // Generic contract binding to access the raw methods on
+}
+
+// PermissionControllerMixinCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type PermissionControllerMixinCallerRaw struct {
+ Contract *PermissionControllerMixinCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// PermissionControllerMixinTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type PermissionControllerMixinTransactorRaw struct {
+ Contract *PermissionControllerMixinTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewPermissionControllerMixin creates a new instance of PermissionControllerMixin, bound to a specific deployed contract.
+func NewPermissionControllerMixin(address common.Address, backend bind.ContractBackend) (*PermissionControllerMixin, error) {
+ contract, err := bindPermissionControllerMixin(address, backend, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerMixin{PermissionControllerMixinCaller: PermissionControllerMixinCaller{contract: contract}, PermissionControllerMixinTransactor: PermissionControllerMixinTransactor{contract: contract}, PermissionControllerMixinFilterer: PermissionControllerMixinFilterer{contract: contract}}, nil
+}
+
+// NewPermissionControllerMixinCaller creates a new read-only instance of PermissionControllerMixin, bound to a specific deployed contract.
+func NewPermissionControllerMixinCaller(address common.Address, caller bind.ContractCaller) (*PermissionControllerMixinCaller, error) {
+ contract, err := bindPermissionControllerMixin(address, caller, nil, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerMixinCaller{contract: contract}, nil
+}
+
+// NewPermissionControllerMixinTransactor creates a new write-only instance of PermissionControllerMixin, bound to a specific deployed contract.
+func NewPermissionControllerMixinTransactor(address common.Address, transactor bind.ContractTransactor) (*PermissionControllerMixinTransactor, error) {
+ contract, err := bindPermissionControllerMixin(address, nil, transactor, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerMixinTransactor{contract: contract}, nil
+}
+
+// NewPermissionControllerMixinFilterer creates a new log filterer instance of PermissionControllerMixin, bound to a specific deployed contract.
+func NewPermissionControllerMixinFilterer(address common.Address, filterer bind.ContractFilterer) (*PermissionControllerMixinFilterer, error) {
+ contract, err := bindPermissionControllerMixin(address, nil, nil, filterer)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerMixinFilterer{contract: contract}, nil
+}
+
+// bindPermissionControllerMixin binds a generic wrapper to an already deployed contract.
+func bindPermissionControllerMixin(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
+ parsed, err := PermissionControllerMixinMetaData.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 (_PermissionControllerMixin *PermissionControllerMixinRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _PermissionControllerMixin.Contract.PermissionControllerMixinCaller.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 (_PermissionControllerMixin *PermissionControllerMixinRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _PermissionControllerMixin.Contract.PermissionControllerMixinTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_PermissionControllerMixin *PermissionControllerMixinRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _PermissionControllerMixin.Contract.PermissionControllerMixinTransactor.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 (_PermissionControllerMixin *PermissionControllerMixinCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _PermissionControllerMixin.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 (_PermissionControllerMixin *PermissionControllerMixinTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _PermissionControllerMixin.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_PermissionControllerMixin *PermissionControllerMixinTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _PermissionControllerMixin.Contract.contract.Transact(opts, method, params...)
+}
+
+// PermissionController is a free data retrieval call binding the contract method 0x4657e26a.
+//
+// Solidity: function permissionController() view returns(address)
+func (_PermissionControllerMixin *PermissionControllerMixinCaller) PermissionController(opts *bind.CallOpts) (common.Address, error) {
+ var out []interface{}
+ err := _PermissionControllerMixin.contract.Call(opts, &out, "permissionController")
+
+ if err != nil {
+ return *new(common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
+
+ return out0, err
+
+}
+
+// PermissionController is a free data retrieval call binding the contract method 0x4657e26a.
+//
+// Solidity: function permissionController() view returns(address)
+func (_PermissionControllerMixin *PermissionControllerMixinSession) PermissionController() (common.Address, error) {
+ return _PermissionControllerMixin.Contract.PermissionController(&_PermissionControllerMixin.CallOpts)
+}
+
+// PermissionController is a free data retrieval call binding the contract method 0x4657e26a.
+//
+// Solidity: function permissionController() view returns(address)
+func (_PermissionControllerMixin *PermissionControllerMixinCallerSession) PermissionController() (common.Address, error) {
+ return _PermissionControllerMixin.Contract.PermissionController(&_PermissionControllerMixin.CallOpts)
+}
diff --git a/pkg/bindings/PermissionControllerStorage/binding.go b/pkg/bindings/PermissionControllerStorage/binding.go
new file mode 100644
index 0000000000..d2026919a0
--- /dev/null
+++ b/pkg/bindings/PermissionControllerStorage/binding.go
@@ -0,0 +1,1384 @@
+// Code generated - DO NOT EDIT.
+// This file is a generated binding and any manual changes will be lost.
+
+package PermissionControllerStorage
+
+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
+)
+
+// PermissionControllerStorageMetaData contains all meta data concerning the PermissionControllerStorage contract.
+var PermissionControllerStorageMetaData = &bind.MetaData{
+ ABI: "[{\"type\":\"function\",\"name\":\"acceptAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addPendingAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"canCall\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getAdmins\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getAppointeePermissions\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getAppointees\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getPendingAdmins\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isPendingAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"pendingAdmin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeAppointee\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removePendingAdmin\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAppointee\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminRemoved\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AdminSet\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AppointeeRemoved\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"indexed\":false,\"internalType\":\"bytes4\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"AppointeeSet\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"appointee\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"indexed\":false,\"internalType\":\"bytes4\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PendingAdminAdded\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PendingAdminRemoved\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"admin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AdminAlreadyPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AdminAlreadySet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AdminNotPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AdminNotSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AppointeeAlreadySet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AppointeeNotSet\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotHaveZeroAdmins\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAdmin\",\"inputs\":[]}]",
+}
+
+// PermissionControllerStorageABI is the input ABI used to generate the binding from.
+// Deprecated: Use PermissionControllerStorageMetaData.ABI instead.
+var PermissionControllerStorageABI = PermissionControllerStorageMetaData.ABI
+
+// PermissionControllerStorage is an auto generated Go binding around an Ethereum contract.
+type PermissionControllerStorage struct {
+ PermissionControllerStorageCaller // Read-only binding to the contract
+ PermissionControllerStorageTransactor // Write-only binding to the contract
+ PermissionControllerStorageFilterer // Log filterer for contract events
+}
+
+// PermissionControllerStorageCaller is an auto generated read-only Go binding around an Ethereum contract.
+type PermissionControllerStorageCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// PermissionControllerStorageTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type PermissionControllerStorageTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// PermissionControllerStorageFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
+type PermissionControllerStorageFilterer struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// PermissionControllerStorageSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type PermissionControllerStorageSession struct {
+ Contract *PermissionControllerStorage // 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
+}
+
+// PermissionControllerStorageCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type PermissionControllerStorageCallerSession struct {
+ Contract *PermissionControllerStorageCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// PermissionControllerStorageTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type PermissionControllerStorageTransactorSession struct {
+ Contract *PermissionControllerStorageTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// PermissionControllerStorageRaw is an auto generated low-level Go binding around an Ethereum contract.
+type PermissionControllerStorageRaw struct {
+ Contract *PermissionControllerStorage // Generic contract binding to access the raw methods on
+}
+
+// PermissionControllerStorageCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type PermissionControllerStorageCallerRaw struct {
+ Contract *PermissionControllerStorageCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// PermissionControllerStorageTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type PermissionControllerStorageTransactorRaw struct {
+ Contract *PermissionControllerStorageTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewPermissionControllerStorage creates a new instance of PermissionControllerStorage, bound to a specific deployed contract.
+func NewPermissionControllerStorage(address common.Address, backend bind.ContractBackend) (*PermissionControllerStorage, error) {
+ contract, err := bindPermissionControllerStorage(address, backend, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerStorage{PermissionControllerStorageCaller: PermissionControllerStorageCaller{contract: contract}, PermissionControllerStorageTransactor: PermissionControllerStorageTransactor{contract: contract}, PermissionControllerStorageFilterer: PermissionControllerStorageFilterer{contract: contract}}, nil
+}
+
+// NewPermissionControllerStorageCaller creates a new read-only instance of PermissionControllerStorage, bound to a specific deployed contract.
+func NewPermissionControllerStorageCaller(address common.Address, caller bind.ContractCaller) (*PermissionControllerStorageCaller, error) {
+ contract, err := bindPermissionControllerStorage(address, caller, nil, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerStorageCaller{contract: contract}, nil
+}
+
+// NewPermissionControllerStorageTransactor creates a new write-only instance of PermissionControllerStorage, bound to a specific deployed contract.
+func NewPermissionControllerStorageTransactor(address common.Address, transactor bind.ContractTransactor) (*PermissionControllerStorageTransactor, error) {
+ contract, err := bindPermissionControllerStorage(address, nil, transactor, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerStorageTransactor{contract: contract}, nil
+}
+
+// NewPermissionControllerStorageFilterer creates a new log filterer instance of PermissionControllerStorage, bound to a specific deployed contract.
+func NewPermissionControllerStorageFilterer(address common.Address, filterer bind.ContractFilterer) (*PermissionControllerStorageFilterer, error) {
+ contract, err := bindPermissionControllerStorage(address, nil, nil, filterer)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerStorageFilterer{contract: contract}, nil
+}
+
+// bindPermissionControllerStorage binds a generic wrapper to an already deployed contract.
+func bindPermissionControllerStorage(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
+ parsed, err := PermissionControllerStorageMetaData.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 (_PermissionControllerStorage *PermissionControllerStorageRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _PermissionControllerStorage.Contract.PermissionControllerStorageCaller.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 (_PermissionControllerStorage *PermissionControllerStorageRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.PermissionControllerStorageTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_PermissionControllerStorage *PermissionControllerStorageRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.PermissionControllerStorageTransactor.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 (_PermissionControllerStorage *PermissionControllerStorageCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _PermissionControllerStorage.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 (_PermissionControllerStorage *PermissionControllerStorageTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_PermissionControllerStorage *PermissionControllerStorageTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.contract.Transact(opts, method, params...)
+}
+
+// GetAdmins is a free data retrieval call binding the contract method 0xad5f2210.
+//
+// Solidity: function getAdmins(address account) view returns(address[])
+func (_PermissionControllerStorage *PermissionControllerStorageCaller) GetAdmins(opts *bind.CallOpts, account common.Address) ([]common.Address, error) {
+ var out []interface{}
+ err := _PermissionControllerStorage.contract.Call(opts, &out, "getAdmins", account)
+
+ if err != nil {
+ return *new([]common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
+
+ return out0, err
+
+}
+
+// GetAdmins is a free data retrieval call binding the contract method 0xad5f2210.
+//
+// Solidity: function getAdmins(address account) view returns(address[])
+func (_PermissionControllerStorage *PermissionControllerStorageSession) GetAdmins(account common.Address) ([]common.Address, error) {
+ return _PermissionControllerStorage.Contract.GetAdmins(&_PermissionControllerStorage.CallOpts, account)
+}
+
+// GetAdmins is a free data retrieval call binding the contract method 0xad5f2210.
+//
+// Solidity: function getAdmins(address account) view returns(address[])
+func (_PermissionControllerStorage *PermissionControllerStorageCallerSession) GetAdmins(account common.Address) ([]common.Address, error) {
+ return _PermissionControllerStorage.Contract.GetAdmins(&_PermissionControllerStorage.CallOpts, account)
+}
+
+// GetPendingAdmins is a free data retrieval call binding the contract method 0x6bddfa1f.
+//
+// Solidity: function getPendingAdmins(address account) view returns(address[])
+func (_PermissionControllerStorage *PermissionControllerStorageCaller) GetPendingAdmins(opts *bind.CallOpts, account common.Address) ([]common.Address, error) {
+ var out []interface{}
+ err := _PermissionControllerStorage.contract.Call(opts, &out, "getPendingAdmins", account)
+
+ if err != nil {
+ return *new([]common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
+
+ return out0, err
+
+}
+
+// GetPendingAdmins is a free data retrieval call binding the contract method 0x6bddfa1f.
+//
+// Solidity: function getPendingAdmins(address account) view returns(address[])
+func (_PermissionControllerStorage *PermissionControllerStorageSession) GetPendingAdmins(account common.Address) ([]common.Address, error) {
+ return _PermissionControllerStorage.Contract.GetPendingAdmins(&_PermissionControllerStorage.CallOpts, account)
+}
+
+// GetPendingAdmins is a free data retrieval call binding the contract method 0x6bddfa1f.
+//
+// Solidity: function getPendingAdmins(address account) view returns(address[])
+func (_PermissionControllerStorage *PermissionControllerStorageCallerSession) GetPendingAdmins(account common.Address) ([]common.Address, error) {
+ return _PermissionControllerStorage.Contract.GetPendingAdmins(&_PermissionControllerStorage.CallOpts, account)
+}
+
+// IsAdmin is a free data retrieval call binding the contract method 0x91006745.
+//
+// Solidity: function isAdmin(address account, address caller) view returns(bool)
+func (_PermissionControllerStorage *PermissionControllerStorageCaller) IsAdmin(opts *bind.CallOpts, account common.Address, caller common.Address) (bool, error) {
+ var out []interface{}
+ err := _PermissionControllerStorage.contract.Call(opts, &out, "isAdmin", account, caller)
+
+ if err != nil {
+ return *new(bool), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
+
+ return out0, err
+
+}
+
+// IsAdmin is a free data retrieval call binding the contract method 0x91006745.
+//
+// Solidity: function isAdmin(address account, address caller) view returns(bool)
+func (_PermissionControllerStorage *PermissionControllerStorageSession) IsAdmin(account common.Address, caller common.Address) (bool, error) {
+ return _PermissionControllerStorage.Contract.IsAdmin(&_PermissionControllerStorage.CallOpts, account, caller)
+}
+
+// IsAdmin is a free data retrieval call binding the contract method 0x91006745.
+//
+// Solidity: function isAdmin(address account, address caller) view returns(bool)
+func (_PermissionControllerStorage *PermissionControllerStorageCallerSession) IsAdmin(account common.Address, caller common.Address) (bool, error) {
+ return _PermissionControllerStorage.Contract.IsAdmin(&_PermissionControllerStorage.CallOpts, account, caller)
+}
+
+// IsPendingAdmin is a free data retrieval call binding the contract method 0xad8aca77.
+//
+// Solidity: function isPendingAdmin(address account, address pendingAdmin) view returns(bool)
+func (_PermissionControllerStorage *PermissionControllerStorageCaller) IsPendingAdmin(opts *bind.CallOpts, account common.Address, pendingAdmin common.Address) (bool, error) {
+ var out []interface{}
+ err := _PermissionControllerStorage.contract.Call(opts, &out, "isPendingAdmin", account, pendingAdmin)
+
+ if err != nil {
+ return *new(bool), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
+
+ return out0, err
+
+}
+
+// IsPendingAdmin is a free data retrieval call binding the contract method 0xad8aca77.
+//
+// Solidity: function isPendingAdmin(address account, address pendingAdmin) view returns(bool)
+func (_PermissionControllerStorage *PermissionControllerStorageSession) IsPendingAdmin(account common.Address, pendingAdmin common.Address) (bool, error) {
+ return _PermissionControllerStorage.Contract.IsPendingAdmin(&_PermissionControllerStorage.CallOpts, account, pendingAdmin)
+}
+
+// IsPendingAdmin is a free data retrieval call binding the contract method 0xad8aca77.
+//
+// Solidity: function isPendingAdmin(address account, address pendingAdmin) view returns(bool)
+func (_PermissionControllerStorage *PermissionControllerStorageCallerSession) IsPendingAdmin(account common.Address, pendingAdmin common.Address) (bool, error) {
+ return _PermissionControllerStorage.Contract.IsPendingAdmin(&_PermissionControllerStorage.CallOpts, account, pendingAdmin)
+}
+
+// AcceptAdmin is a paid mutator transaction binding the contract method 0x628806ef.
+//
+// Solidity: function acceptAdmin(address account) returns()
+func (_PermissionControllerStorage *PermissionControllerStorageTransactor) AcceptAdmin(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
+ return _PermissionControllerStorage.contract.Transact(opts, "acceptAdmin", account)
+}
+
+// AcceptAdmin is a paid mutator transaction binding the contract method 0x628806ef.
+//
+// Solidity: function acceptAdmin(address account) returns()
+func (_PermissionControllerStorage *PermissionControllerStorageSession) AcceptAdmin(account common.Address) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.AcceptAdmin(&_PermissionControllerStorage.TransactOpts, account)
+}
+
+// AcceptAdmin is a paid mutator transaction binding the contract method 0x628806ef.
+//
+// Solidity: function acceptAdmin(address account) returns()
+func (_PermissionControllerStorage *PermissionControllerStorageTransactorSession) AcceptAdmin(account common.Address) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.AcceptAdmin(&_PermissionControllerStorage.TransactOpts, account)
+}
+
+// AddPendingAdmin is a paid mutator transaction binding the contract method 0xeb5a4e87.
+//
+// Solidity: function addPendingAdmin(address account, address admin) returns()
+func (_PermissionControllerStorage *PermissionControllerStorageTransactor) AddPendingAdmin(opts *bind.TransactOpts, account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _PermissionControllerStorage.contract.Transact(opts, "addPendingAdmin", account, admin)
+}
+
+// AddPendingAdmin is a paid mutator transaction binding the contract method 0xeb5a4e87.
+//
+// Solidity: function addPendingAdmin(address account, address admin) returns()
+func (_PermissionControllerStorage *PermissionControllerStorageSession) AddPendingAdmin(account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.AddPendingAdmin(&_PermissionControllerStorage.TransactOpts, account, admin)
+}
+
+// AddPendingAdmin is a paid mutator transaction binding the contract method 0xeb5a4e87.
+//
+// Solidity: function addPendingAdmin(address account, address admin) returns()
+func (_PermissionControllerStorage *PermissionControllerStorageTransactorSession) AddPendingAdmin(account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.AddPendingAdmin(&_PermissionControllerStorage.TransactOpts, account, admin)
+}
+
+// CanCall is a paid mutator transaction binding the contract method 0xdf595cb8.
+//
+// Solidity: function canCall(address account, address caller, address target, bytes4 selector) returns(bool)
+func (_PermissionControllerStorage *PermissionControllerStorageTransactor) CanCall(opts *bind.TransactOpts, account common.Address, caller common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _PermissionControllerStorage.contract.Transact(opts, "canCall", account, caller, target, selector)
+}
+
+// CanCall is a paid mutator transaction binding the contract method 0xdf595cb8.
+//
+// Solidity: function canCall(address account, address caller, address target, bytes4 selector) returns(bool)
+func (_PermissionControllerStorage *PermissionControllerStorageSession) CanCall(account common.Address, caller common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.CanCall(&_PermissionControllerStorage.TransactOpts, account, caller, target, selector)
+}
+
+// CanCall is a paid mutator transaction binding the contract method 0xdf595cb8.
+//
+// Solidity: function canCall(address account, address caller, address target, bytes4 selector) returns(bool)
+func (_PermissionControllerStorage *PermissionControllerStorageTransactorSession) CanCall(account common.Address, caller common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.CanCall(&_PermissionControllerStorage.TransactOpts, account, caller, target, selector)
+}
+
+// GetAppointeePermissions is a paid mutator transaction binding the contract method 0x882a3b38.
+//
+// Solidity: function getAppointeePermissions(address account, address appointee) returns(address[], bytes4[])
+func (_PermissionControllerStorage *PermissionControllerStorageTransactor) GetAppointeePermissions(opts *bind.TransactOpts, account common.Address, appointee common.Address) (*types.Transaction, error) {
+ return _PermissionControllerStorage.contract.Transact(opts, "getAppointeePermissions", account, appointee)
+}
+
+// GetAppointeePermissions is a paid mutator transaction binding the contract method 0x882a3b38.
+//
+// Solidity: function getAppointeePermissions(address account, address appointee) returns(address[], bytes4[])
+func (_PermissionControllerStorage *PermissionControllerStorageSession) GetAppointeePermissions(account common.Address, appointee common.Address) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.GetAppointeePermissions(&_PermissionControllerStorage.TransactOpts, account, appointee)
+}
+
+// GetAppointeePermissions is a paid mutator transaction binding the contract method 0x882a3b38.
+//
+// Solidity: function getAppointeePermissions(address account, address appointee) returns(address[], bytes4[])
+func (_PermissionControllerStorage *PermissionControllerStorageTransactorSession) GetAppointeePermissions(account common.Address, appointee common.Address) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.GetAppointeePermissions(&_PermissionControllerStorage.TransactOpts, account, appointee)
+}
+
+// GetAppointees is a paid mutator transaction binding the contract method 0xfddbdefd.
+//
+// Solidity: function getAppointees(address account, address target, bytes4 selector) returns(address[])
+func (_PermissionControllerStorage *PermissionControllerStorageTransactor) GetAppointees(opts *bind.TransactOpts, account common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _PermissionControllerStorage.contract.Transact(opts, "getAppointees", account, target, selector)
+}
+
+// GetAppointees is a paid mutator transaction binding the contract method 0xfddbdefd.
+//
+// Solidity: function getAppointees(address account, address target, bytes4 selector) returns(address[])
+func (_PermissionControllerStorage *PermissionControllerStorageSession) GetAppointees(account common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.GetAppointees(&_PermissionControllerStorage.TransactOpts, account, target, selector)
+}
+
+// GetAppointees is a paid mutator transaction binding the contract method 0xfddbdefd.
+//
+// Solidity: function getAppointees(address account, address target, bytes4 selector) returns(address[])
+func (_PermissionControllerStorage *PermissionControllerStorageTransactorSession) GetAppointees(account common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.GetAppointees(&_PermissionControllerStorage.TransactOpts, account, target, selector)
+}
+
+// RemoveAdmin is a paid mutator transaction binding the contract method 0x268959e5.
+//
+// Solidity: function removeAdmin(address account, address admin) returns()
+func (_PermissionControllerStorage *PermissionControllerStorageTransactor) RemoveAdmin(opts *bind.TransactOpts, account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _PermissionControllerStorage.contract.Transact(opts, "removeAdmin", account, admin)
+}
+
+// RemoveAdmin is a paid mutator transaction binding the contract method 0x268959e5.
+//
+// Solidity: function removeAdmin(address account, address admin) returns()
+func (_PermissionControllerStorage *PermissionControllerStorageSession) RemoveAdmin(account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.RemoveAdmin(&_PermissionControllerStorage.TransactOpts, account, admin)
+}
+
+// RemoveAdmin is a paid mutator transaction binding the contract method 0x268959e5.
+//
+// Solidity: function removeAdmin(address account, address admin) returns()
+func (_PermissionControllerStorage *PermissionControllerStorageTransactorSession) RemoveAdmin(account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.RemoveAdmin(&_PermissionControllerStorage.TransactOpts, account, admin)
+}
+
+// RemoveAppointee is a paid mutator transaction binding the contract method 0x06641201.
+//
+// Solidity: function removeAppointee(address account, address appointee, address target, bytes4 selector) returns()
+func (_PermissionControllerStorage *PermissionControllerStorageTransactor) RemoveAppointee(opts *bind.TransactOpts, account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _PermissionControllerStorage.contract.Transact(opts, "removeAppointee", account, appointee, target, selector)
+}
+
+// RemoveAppointee is a paid mutator transaction binding the contract method 0x06641201.
+//
+// Solidity: function removeAppointee(address account, address appointee, address target, bytes4 selector) returns()
+func (_PermissionControllerStorage *PermissionControllerStorageSession) RemoveAppointee(account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.RemoveAppointee(&_PermissionControllerStorage.TransactOpts, account, appointee, target, selector)
+}
+
+// RemoveAppointee is a paid mutator transaction binding the contract method 0x06641201.
+//
+// Solidity: function removeAppointee(address account, address appointee, address target, bytes4 selector) returns()
+func (_PermissionControllerStorage *PermissionControllerStorageTransactorSession) RemoveAppointee(account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.RemoveAppointee(&_PermissionControllerStorage.TransactOpts, account, appointee, target, selector)
+}
+
+// RemovePendingAdmin is a paid mutator transaction binding the contract method 0x4f906cf9.
+//
+// Solidity: function removePendingAdmin(address account, address admin) returns()
+func (_PermissionControllerStorage *PermissionControllerStorageTransactor) RemovePendingAdmin(opts *bind.TransactOpts, account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _PermissionControllerStorage.contract.Transact(opts, "removePendingAdmin", account, admin)
+}
+
+// RemovePendingAdmin is a paid mutator transaction binding the contract method 0x4f906cf9.
+//
+// Solidity: function removePendingAdmin(address account, address admin) returns()
+func (_PermissionControllerStorage *PermissionControllerStorageSession) RemovePendingAdmin(account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.RemovePendingAdmin(&_PermissionControllerStorage.TransactOpts, account, admin)
+}
+
+// RemovePendingAdmin is a paid mutator transaction binding the contract method 0x4f906cf9.
+//
+// Solidity: function removePendingAdmin(address account, address admin) returns()
+func (_PermissionControllerStorage *PermissionControllerStorageTransactorSession) RemovePendingAdmin(account common.Address, admin common.Address) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.RemovePendingAdmin(&_PermissionControllerStorage.TransactOpts, account, admin)
+}
+
+// SetAppointee is a paid mutator transaction binding the contract method 0x950d806e.
+//
+// Solidity: function setAppointee(address account, address appointee, address target, bytes4 selector) returns()
+func (_PermissionControllerStorage *PermissionControllerStorageTransactor) SetAppointee(opts *bind.TransactOpts, account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _PermissionControllerStorage.contract.Transact(opts, "setAppointee", account, appointee, target, selector)
+}
+
+// SetAppointee is a paid mutator transaction binding the contract method 0x950d806e.
+//
+// Solidity: function setAppointee(address account, address appointee, address target, bytes4 selector) returns()
+func (_PermissionControllerStorage *PermissionControllerStorageSession) SetAppointee(account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.SetAppointee(&_PermissionControllerStorage.TransactOpts, account, appointee, target, selector)
+}
+
+// SetAppointee is a paid mutator transaction binding the contract method 0x950d806e.
+//
+// Solidity: function setAppointee(address account, address appointee, address target, bytes4 selector) returns()
+func (_PermissionControllerStorage *PermissionControllerStorageTransactorSession) SetAppointee(account common.Address, appointee common.Address, target common.Address, selector [4]byte) (*types.Transaction, error) {
+ return _PermissionControllerStorage.Contract.SetAppointee(&_PermissionControllerStorage.TransactOpts, account, appointee, target, selector)
+}
+
+// PermissionControllerStorageAdminRemovedIterator is returned from FilterAdminRemoved and is used to iterate over the raw logs and unpacked data for AdminRemoved events raised by the PermissionControllerStorage contract.
+type PermissionControllerStorageAdminRemovedIterator struct {
+ Event *PermissionControllerStorageAdminRemoved // 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 *PermissionControllerStorageAdminRemovedIterator) 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(PermissionControllerStorageAdminRemoved)
+ 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(PermissionControllerStorageAdminRemoved)
+ 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 *PermissionControllerStorageAdminRemovedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *PermissionControllerStorageAdminRemovedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// PermissionControllerStorageAdminRemoved represents a AdminRemoved event raised by the PermissionControllerStorage contract.
+type PermissionControllerStorageAdminRemoved struct {
+ Account common.Address
+ Admin common.Address
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAdminRemoved is a free log retrieval operation binding the contract event 0xdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce.
+//
+// Solidity: event AdminRemoved(address indexed account, address admin)
+func (_PermissionControllerStorage *PermissionControllerStorageFilterer) FilterAdminRemoved(opts *bind.FilterOpts, account []common.Address) (*PermissionControllerStorageAdminRemovedIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _PermissionControllerStorage.contract.FilterLogs(opts, "AdminRemoved", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerStorageAdminRemovedIterator{contract: _PermissionControllerStorage.contract, event: "AdminRemoved", logs: logs, sub: sub}, nil
+}
+
+// WatchAdminRemoved is a free log subscription operation binding the contract event 0xdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce.
+//
+// Solidity: event AdminRemoved(address indexed account, address admin)
+func (_PermissionControllerStorage *PermissionControllerStorageFilterer) WatchAdminRemoved(opts *bind.WatchOpts, sink chan<- *PermissionControllerStorageAdminRemoved, account []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _PermissionControllerStorage.contract.WatchLogs(opts, "AdminRemoved", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(PermissionControllerStorageAdminRemoved)
+ if err := _PermissionControllerStorage.contract.UnpackLog(event, "AdminRemoved", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParseAdminRemoved is a log parse operation binding the contract event 0xdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce.
+//
+// Solidity: event AdminRemoved(address indexed account, address admin)
+func (_PermissionControllerStorage *PermissionControllerStorageFilterer) ParseAdminRemoved(log types.Log) (*PermissionControllerStorageAdminRemoved, error) {
+ event := new(PermissionControllerStorageAdminRemoved)
+ if err := _PermissionControllerStorage.contract.UnpackLog(event, "AdminRemoved", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// PermissionControllerStorageAdminSetIterator is returned from FilterAdminSet and is used to iterate over the raw logs and unpacked data for AdminSet events raised by the PermissionControllerStorage contract.
+type PermissionControllerStorageAdminSetIterator struct {
+ Event *PermissionControllerStorageAdminSet // 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 *PermissionControllerStorageAdminSetIterator) 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(PermissionControllerStorageAdminSet)
+ 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(PermissionControllerStorageAdminSet)
+ 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 *PermissionControllerStorageAdminSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *PermissionControllerStorageAdminSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// PermissionControllerStorageAdminSet represents a AdminSet event raised by the PermissionControllerStorage contract.
+type PermissionControllerStorageAdminSet struct {
+ Account common.Address
+ Admin common.Address
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAdminSet is a free log retrieval operation binding the contract event 0xbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff97.
+//
+// Solidity: event AdminSet(address indexed account, address admin)
+func (_PermissionControllerStorage *PermissionControllerStorageFilterer) FilterAdminSet(opts *bind.FilterOpts, account []common.Address) (*PermissionControllerStorageAdminSetIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _PermissionControllerStorage.contract.FilterLogs(opts, "AdminSet", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerStorageAdminSetIterator{contract: _PermissionControllerStorage.contract, event: "AdminSet", logs: logs, sub: sub}, nil
+}
+
+// WatchAdminSet is a free log subscription operation binding the contract event 0xbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff97.
+//
+// Solidity: event AdminSet(address indexed account, address admin)
+func (_PermissionControllerStorage *PermissionControllerStorageFilterer) WatchAdminSet(opts *bind.WatchOpts, sink chan<- *PermissionControllerStorageAdminSet, account []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _PermissionControllerStorage.contract.WatchLogs(opts, "AdminSet", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(PermissionControllerStorageAdminSet)
+ if err := _PermissionControllerStorage.contract.UnpackLog(event, "AdminSet", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParseAdminSet is a log parse operation binding the contract event 0xbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff97.
+//
+// Solidity: event AdminSet(address indexed account, address admin)
+func (_PermissionControllerStorage *PermissionControllerStorageFilterer) ParseAdminSet(log types.Log) (*PermissionControllerStorageAdminSet, error) {
+ event := new(PermissionControllerStorageAdminSet)
+ if err := _PermissionControllerStorage.contract.UnpackLog(event, "AdminSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// PermissionControllerStorageAppointeeRemovedIterator is returned from FilterAppointeeRemoved and is used to iterate over the raw logs and unpacked data for AppointeeRemoved events raised by the PermissionControllerStorage contract.
+type PermissionControllerStorageAppointeeRemovedIterator struct {
+ Event *PermissionControllerStorageAppointeeRemoved // 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 *PermissionControllerStorageAppointeeRemovedIterator) 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(PermissionControllerStorageAppointeeRemoved)
+ 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(PermissionControllerStorageAppointeeRemoved)
+ 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 *PermissionControllerStorageAppointeeRemovedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *PermissionControllerStorageAppointeeRemovedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// PermissionControllerStorageAppointeeRemoved represents a AppointeeRemoved event raised by the PermissionControllerStorage contract.
+type PermissionControllerStorageAppointeeRemoved struct {
+ Account common.Address
+ Appointee common.Address
+ Target common.Address
+ Selector [4]byte
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAppointeeRemoved is a free log retrieval operation binding the contract event 0x18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6.
+//
+// Solidity: event AppointeeRemoved(address indexed account, address indexed appointee, address target, bytes4 selector)
+func (_PermissionControllerStorage *PermissionControllerStorageFilterer) FilterAppointeeRemoved(opts *bind.FilterOpts, account []common.Address, appointee []common.Address) (*PermissionControllerStorageAppointeeRemovedIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+ var appointeeRule []interface{}
+ for _, appointeeItem := range appointee {
+ appointeeRule = append(appointeeRule, appointeeItem)
+ }
+
+ logs, sub, err := _PermissionControllerStorage.contract.FilterLogs(opts, "AppointeeRemoved", accountRule, appointeeRule)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerStorageAppointeeRemovedIterator{contract: _PermissionControllerStorage.contract, event: "AppointeeRemoved", logs: logs, sub: sub}, nil
+}
+
+// WatchAppointeeRemoved is a free log subscription operation binding the contract event 0x18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6.
+//
+// Solidity: event AppointeeRemoved(address indexed account, address indexed appointee, address target, bytes4 selector)
+func (_PermissionControllerStorage *PermissionControllerStorageFilterer) WatchAppointeeRemoved(opts *bind.WatchOpts, sink chan<- *PermissionControllerStorageAppointeeRemoved, account []common.Address, appointee []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+ var appointeeRule []interface{}
+ for _, appointeeItem := range appointee {
+ appointeeRule = append(appointeeRule, appointeeItem)
+ }
+
+ logs, sub, err := _PermissionControllerStorage.contract.WatchLogs(opts, "AppointeeRemoved", accountRule, appointeeRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(PermissionControllerStorageAppointeeRemoved)
+ if err := _PermissionControllerStorage.contract.UnpackLog(event, "AppointeeRemoved", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParseAppointeeRemoved is a log parse operation binding the contract event 0x18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6.
+//
+// Solidity: event AppointeeRemoved(address indexed account, address indexed appointee, address target, bytes4 selector)
+func (_PermissionControllerStorage *PermissionControllerStorageFilterer) ParseAppointeeRemoved(log types.Log) (*PermissionControllerStorageAppointeeRemoved, error) {
+ event := new(PermissionControllerStorageAppointeeRemoved)
+ if err := _PermissionControllerStorage.contract.UnpackLog(event, "AppointeeRemoved", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// PermissionControllerStorageAppointeeSetIterator is returned from FilterAppointeeSet and is used to iterate over the raw logs and unpacked data for AppointeeSet events raised by the PermissionControllerStorage contract.
+type PermissionControllerStorageAppointeeSetIterator struct {
+ Event *PermissionControllerStorageAppointeeSet // 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 *PermissionControllerStorageAppointeeSetIterator) 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(PermissionControllerStorageAppointeeSet)
+ 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(PermissionControllerStorageAppointeeSet)
+ 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 *PermissionControllerStorageAppointeeSetIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *PermissionControllerStorageAppointeeSetIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// PermissionControllerStorageAppointeeSet represents a AppointeeSet event raised by the PermissionControllerStorage contract.
+type PermissionControllerStorageAppointeeSet struct {
+ Account common.Address
+ Appointee common.Address
+ Target common.Address
+ Selector [4]byte
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterAppointeeSet is a free log retrieval operation binding the contract event 0x037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169.
+//
+// Solidity: event AppointeeSet(address indexed account, address indexed appointee, address target, bytes4 selector)
+func (_PermissionControllerStorage *PermissionControllerStorageFilterer) FilterAppointeeSet(opts *bind.FilterOpts, account []common.Address, appointee []common.Address) (*PermissionControllerStorageAppointeeSetIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+ var appointeeRule []interface{}
+ for _, appointeeItem := range appointee {
+ appointeeRule = append(appointeeRule, appointeeItem)
+ }
+
+ logs, sub, err := _PermissionControllerStorage.contract.FilterLogs(opts, "AppointeeSet", accountRule, appointeeRule)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerStorageAppointeeSetIterator{contract: _PermissionControllerStorage.contract, event: "AppointeeSet", logs: logs, sub: sub}, nil
+}
+
+// WatchAppointeeSet is a free log subscription operation binding the contract event 0x037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169.
+//
+// Solidity: event AppointeeSet(address indexed account, address indexed appointee, address target, bytes4 selector)
+func (_PermissionControllerStorage *PermissionControllerStorageFilterer) WatchAppointeeSet(opts *bind.WatchOpts, sink chan<- *PermissionControllerStorageAppointeeSet, account []common.Address, appointee []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+ var appointeeRule []interface{}
+ for _, appointeeItem := range appointee {
+ appointeeRule = append(appointeeRule, appointeeItem)
+ }
+
+ logs, sub, err := _PermissionControllerStorage.contract.WatchLogs(opts, "AppointeeSet", accountRule, appointeeRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(PermissionControllerStorageAppointeeSet)
+ if err := _PermissionControllerStorage.contract.UnpackLog(event, "AppointeeSet", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParseAppointeeSet is a log parse operation binding the contract event 0x037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169.
+//
+// Solidity: event AppointeeSet(address indexed account, address indexed appointee, address target, bytes4 selector)
+func (_PermissionControllerStorage *PermissionControllerStorageFilterer) ParseAppointeeSet(log types.Log) (*PermissionControllerStorageAppointeeSet, error) {
+ event := new(PermissionControllerStorageAppointeeSet)
+ if err := _PermissionControllerStorage.contract.UnpackLog(event, "AppointeeSet", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// PermissionControllerStoragePendingAdminAddedIterator is returned from FilterPendingAdminAdded and is used to iterate over the raw logs and unpacked data for PendingAdminAdded events raised by the PermissionControllerStorage contract.
+type PermissionControllerStoragePendingAdminAddedIterator struct {
+ Event *PermissionControllerStoragePendingAdminAdded // 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 *PermissionControllerStoragePendingAdminAddedIterator) 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(PermissionControllerStoragePendingAdminAdded)
+ 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(PermissionControllerStoragePendingAdminAdded)
+ 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 *PermissionControllerStoragePendingAdminAddedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *PermissionControllerStoragePendingAdminAddedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// PermissionControllerStoragePendingAdminAdded represents a PendingAdminAdded event raised by the PermissionControllerStorage contract.
+type PermissionControllerStoragePendingAdminAdded struct {
+ Account common.Address
+ Admin common.Address
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterPendingAdminAdded is a free log retrieval operation binding the contract event 0xb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c.
+//
+// Solidity: event PendingAdminAdded(address indexed account, address admin)
+func (_PermissionControllerStorage *PermissionControllerStorageFilterer) FilterPendingAdminAdded(opts *bind.FilterOpts, account []common.Address) (*PermissionControllerStoragePendingAdminAddedIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _PermissionControllerStorage.contract.FilterLogs(opts, "PendingAdminAdded", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerStoragePendingAdminAddedIterator{contract: _PermissionControllerStorage.contract, event: "PendingAdminAdded", logs: logs, sub: sub}, nil
+}
+
+// WatchPendingAdminAdded is a free log subscription operation binding the contract event 0xb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c.
+//
+// Solidity: event PendingAdminAdded(address indexed account, address admin)
+func (_PermissionControllerStorage *PermissionControllerStorageFilterer) WatchPendingAdminAdded(opts *bind.WatchOpts, sink chan<- *PermissionControllerStoragePendingAdminAdded, account []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _PermissionControllerStorage.contract.WatchLogs(opts, "PendingAdminAdded", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(PermissionControllerStoragePendingAdminAdded)
+ if err := _PermissionControllerStorage.contract.UnpackLog(event, "PendingAdminAdded", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParsePendingAdminAdded is a log parse operation binding the contract event 0xb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c.
+//
+// Solidity: event PendingAdminAdded(address indexed account, address admin)
+func (_PermissionControllerStorage *PermissionControllerStorageFilterer) ParsePendingAdminAdded(log types.Log) (*PermissionControllerStoragePendingAdminAdded, error) {
+ event := new(PermissionControllerStoragePendingAdminAdded)
+ if err := _PermissionControllerStorage.contract.UnpackLog(event, "PendingAdminAdded", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// PermissionControllerStoragePendingAdminRemovedIterator is returned from FilterPendingAdminRemoved and is used to iterate over the raw logs and unpacked data for PendingAdminRemoved events raised by the PermissionControllerStorage contract.
+type PermissionControllerStoragePendingAdminRemovedIterator struct {
+ Event *PermissionControllerStoragePendingAdminRemoved // 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 *PermissionControllerStoragePendingAdminRemovedIterator) 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(PermissionControllerStoragePendingAdminRemoved)
+ 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(PermissionControllerStoragePendingAdminRemoved)
+ 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 *PermissionControllerStoragePendingAdminRemovedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *PermissionControllerStoragePendingAdminRemovedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// PermissionControllerStoragePendingAdminRemoved represents a PendingAdminRemoved event raised by the PermissionControllerStorage contract.
+type PermissionControllerStoragePendingAdminRemoved struct {
+ Account common.Address
+ Admin common.Address
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterPendingAdminRemoved is a free log retrieval operation binding the contract event 0xd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac7.
+//
+// Solidity: event PendingAdminRemoved(address indexed account, address admin)
+func (_PermissionControllerStorage *PermissionControllerStorageFilterer) FilterPendingAdminRemoved(opts *bind.FilterOpts, account []common.Address) (*PermissionControllerStoragePendingAdminRemovedIterator, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _PermissionControllerStorage.contract.FilterLogs(opts, "PendingAdminRemoved", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return &PermissionControllerStoragePendingAdminRemovedIterator{contract: _PermissionControllerStorage.contract, event: "PendingAdminRemoved", logs: logs, sub: sub}, nil
+}
+
+// WatchPendingAdminRemoved is a free log subscription operation binding the contract event 0xd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac7.
+//
+// Solidity: event PendingAdminRemoved(address indexed account, address admin)
+func (_PermissionControllerStorage *PermissionControllerStorageFilterer) WatchPendingAdminRemoved(opts *bind.WatchOpts, sink chan<- *PermissionControllerStoragePendingAdminRemoved, account []common.Address) (event.Subscription, error) {
+
+ var accountRule []interface{}
+ for _, accountItem := range account {
+ accountRule = append(accountRule, accountItem)
+ }
+
+ logs, sub, err := _PermissionControllerStorage.contract.WatchLogs(opts, "PendingAdminRemoved", accountRule)
+ if err != nil {
+ return nil, err
+ }
+ return event.NewSubscription(func(quit <-chan struct{}) error {
+ defer sub.Unsubscribe()
+ for {
+ select {
+ case log := <-logs:
+ // New log arrived, parse the event and forward to the user
+ event := new(PermissionControllerStoragePendingAdminRemoved)
+ if err := _PermissionControllerStorage.contract.UnpackLog(event, "PendingAdminRemoved", log); err != nil {
+ return err
+ }
+ event.Raw = log
+
+ select {
+ case sink <- event:
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ case err := <-sub.Err():
+ return err
+ case <-quit:
+ return nil
+ }
+ }
+ }), nil
+}
+
+// ParsePendingAdminRemoved is a log parse operation binding the contract event 0xd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac7.
+//
+// Solidity: event PendingAdminRemoved(address indexed account, address admin)
+func (_PermissionControllerStorage *PermissionControllerStorageFilterer) ParsePendingAdminRemoved(log types.Log) (*PermissionControllerStoragePendingAdminRemoved, error) {
+ event := new(PermissionControllerStoragePendingAdminRemoved)
+ if err := _PermissionControllerStorage.contract.UnpackLog(event, "PendingAdminRemoved", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
diff --git a/pkg/bindings/RewardsCoordinator/binding.go b/pkg/bindings/RewardsCoordinator/binding.go
index b888d121e3..3c744f23a0 100644
--- a/pkg/bindings/RewardsCoordinator/binding.go
+++ b/pkg/bindings/RewardsCoordinator/binding.go
@@ -29,72 +29,72 @@ var (
_ = abi.ConvertType
)
-// 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
}
-// IRewardsCoordinatorOperatorDirectedRewardsSubmission is an auto generated low-level Go binding around an user-defined struct.
-type IRewardsCoordinatorOperatorDirectedRewardsSubmission struct {
- StrategiesAndMultipliers []IRewardsCoordinatorStrategyAndMultiplier
+// IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission is an auto generated low-level Go binding around an user-defined struct.
+type IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission struct {
+ StrategiesAndMultipliers []IRewardsCoordinatorTypesStrategyAndMultiplier
Token common.Address
- OperatorRewards []IRewardsCoordinatorOperatorReward
+ OperatorRewards []IRewardsCoordinatorTypesOperatorReward
StartTimestamp uint32
Duration uint32
Description string
}
-// IRewardsCoordinatorOperatorReward is an auto generated low-level Go binding around an user-defined struct.
-type IRewardsCoordinatorOperatorReward struct {
+// IRewardsCoordinatorTypesOperatorReward is an auto generated low-level Go binding around an user-defined struct.
+type IRewardsCoordinatorTypesOperatorReward struct {
Operator common.Address
Amount *big.Int
}
-// 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
}
// RewardsCoordinatorMetaData contains all meta data concerning the RewardsCoordinator contract.
var RewardsCoordinatorMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegationManager\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_CALCULATION_INTERVAL_SECONDS\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_MAX_REWARDS_DURATION\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_MAX_RETROACTIVE_LENGTH\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_MAX_FUTURE_LENGTH\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"__GENESIS_REWARDS_TIMESTAMP\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"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\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"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\":\"\",\"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\":\"createOperatorDirectedAVSRewardsSubmission\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.OperatorDirectedRewardsSubmission[]\",\"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\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllEarners\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"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\":\"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\":\"cumulativeClaimed\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currRewardsCalculationEndTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"defaultOperatorSplitBips\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"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\":\"getOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRootIndexFromHash\",\"inputs\":[{\"name\":\"rootHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_defaultSplitBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isAVSRewardsSubmissionHash\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorDirectedAVSRewardsSubmissionHash\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsForAllSubmitter\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsSubmissionForAllEarnersHash\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsSubmissionForAllHash\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"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\":\"processClaims\",\"inputs\":[{\"name\":\"claims\",\"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\":\"renounceOwnership\",\"inputs\":[],\"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\":\"setDefaultOperatorSplit\",\"inputs\":[{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"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\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"submissionNonce\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"submitRoot\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"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\":\"DefaultOperatorSplitBipsSet\",\"inputs\":[{\"name\":\"oldDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootDisabled\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootSubmitted\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAVSSplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDirectedAVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorDirectedRewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinator.OperatorDirectedRewardsSubmission\",\"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\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorPISplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"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\":\"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\":\"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\":\"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},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]",
- Bin: "0x6101806040523480156200001257600080fd5b506040516200572e3803806200572e8339810160408190526200003591620002e4565b868686868686866200004885826200037e565b63ffffffff1615620000ed5760405162461bcd60e51b815260206004820152606060248201527f52657761726473436f6f7264696e61746f723a2047454e455349535f5245574160448201527f5244535f54494d455354414d50206d7573742062652061206d756c7469706c6560648201527f206f662043414c43554c4154494f4e5f494e54455256414c5f5345434f4e4453608482015260a4015b60405180910390fd5b620000fc62015180866200037e565b63ffffffff16156200019d5760405162461bcd60e51b815260206004820152605760248201527f52657761726473436f6f7264696e61746f723a2043414c43554c4154494f4e5f60448201527f494e54455256414c5f5345434f4e4453206d7573742062652061206d756c746960648201527f706c65206f6620534e415053484f545f434144454e4345000000000000000000608482015260a401620000e4565b6001600160a01b0396871661012052949095166101405263ffffffff92831660805290821660a052811660c05291821660e0521661010052620001df620001f2565b5050466101605250620003b09350505050565b600054610100900460ff16156200025c5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401620000e4565b60005460ff9081161015620002af576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114620002c757600080fd5b50565b805163ffffffff81168114620002df57600080fd5b919050565b600080600080600080600060e0888a0312156200030057600080fd5b87516200030d81620002b1565b60208901519097506200032081620002b1565b95506200033060408901620002ca565b94506200034060608901620002ca565b93506200035060808901620002ca565b92506200036060a08901620002ca565b91506200037060c08901620002ca565b905092959891949750929550565b600063ffffffff80841680620003a457634e487b7160e01b600052601260045260246000fd5b92169190910692915050565b60805160a05160c05160e051610100516101205161014051610160516152e762000447600039600061206e0152600081816105460152613d6f015260006108a00152600081816104700152613c690152600081816103c40152612a1301526000818161051f0152613c270152600081816107ec01526139c401526000818161073e01528181613a7d0152613b4d01526152e76000f3fe608060405234801561001057600080fd5b50600436106103825760003560e01c8063865c6953116101de578063d4540a551161010f578063f2fde38b116100ad578063fabc1cbc1161007c578063fabc1cbc14610931578063fbf1e2c114610944578063fce36c7d14610957578063ff9f6cce1461096a57600080fd5b8063f2fde38b146108f0578063f698da2514610903578063f8cd84481461090b578063f96abf2e1461091e57600080fd5b8063e063f81f116100e9578063e063f81f14610875578063e810ce2114610888578063ea4d3c9b1461089b578063ed71e6a2146108c257600080fd5b8063d4540a551461083c578063dcbb03b31461084f578063de02e5031461086257600080fd5b8063a0169ddd1161017c578063b3dbb0e011610156578063b3dbb0e0146107b4578063bb7e451f146107c7578063bf21a8aa146107e7578063c46db6061461080e57600080fd5b8063a0169ddd14610760578063a50a1d9c14610773578063aebd8bae1461078657600080fd5b80639104c319116101b85780639104c319146107035780639be3d4e41461071e5780639cb9a5fa146107265780639d45c2811461073957600080fd5b8063865c6953146106b4578063886f1195146106df5780638da5cb5b146106f257600080fd5b80633efe1db6116102b85780635c975abb116102565780636d21117e116102305780636d21117e14610663578063715018a6146106915780637b8f8b0514610699578063863cb9a9146106a157600080fd5b80635c975abb146106335780635e9d83481461063b57806363f6a7981461064e57600080fd5b80634d18cc35116102925780634d18cc35146105de57806358baaa3e146105f5578063595c6a67146106085780635ac86ab71461061057600080fd5b80633efe1db6146105925780634596021c146105a55780634b943960146105b857600080fd5b8063149bc8721161032557806337838ed0116102ff57806337838ed01461051a57806339b70e38146105415780633a8c0786146105685780633ccc861d1461057f57600080fd5b8063149bc872146104a55780632b9f64a4146104c657806336af41fa1461050757600080fd5b80630eb38345116103615780630eb383451461044357806310d67a2f14610458578063131433b41461046b578063136439dd1461049257600080fd5b806218572c1461038757806304a0c502146103bf5780630e9a53cf146103fb575b600080fd5b6103aa6103953660046145b1565b60d16020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103b6565b61040361097d565b604080518251815260208084015163ffffffff908116918301919091528383015116918101919091526060918201511515918101919091526080016103b6565b6104566104513660046145dc565b610a81565b005b6104566104663660046145b1565b610b03565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6104566104a0366004614615565b610bbf565b6104b86104b3366004614646565b610cfe565b6040519081526020016103b6565b6104ef6104d43660046145b1565b60cc602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103b6565b6104566105153660046146ae565b610d74565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6104ef7f000000000000000000000000000000000000000000000000000000000000000081565b60cb546103e690600160a01b900463ffffffff1681565b61045661058d366004614703565b610f3e565b6104566105a036600461475e565b610fa3565b6104566105b336600461478a565b611274565b6105cb6105c63660046145b1565b61131b565b60405161ffff90911681526020016103b6565b60cb546103e690600160c01b900463ffffffff1681565b6104566106033660046147e1565b611377565b610456611388565b6103aa61061e3660046147fc565b606654600160ff9092169190911b9081161490565b6066546104b8565b6103aa61064936600461481f565b61144f565b60cb546105cb90600160e01b900461ffff1681565b6103aa610671366004614854565b60cf60209081526000928352604080842090915290825290205460ff1681565b6104566114dc565b60ca546104b8565b6104566106af3660046145b1565b6114f0565b6104b86106c2366004614880565b60cd60209081526000928352604080842090915290825290205481565b6065546104ef906001600160a01b031681565b6033546001600160a01b03166104ef565b6104ef73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610403611501565b6104566107343660046148ae565b61159f565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b61045661076e3660046145b1565b6117d8565b610456610781366004614915565b611837565b6103aa610794366004614854565b60d260209081526000928352604080842090915290825290205460ff1681565b6104566107c2366004614930565b611848565b6104b86107d53660046145b1565b60ce6020526000908152604090205481565b6103e67f000000000000000000000000000000000000000000000000000000000000000081565b6103aa61081c366004614854565b60d060209081526000928352604080842090915290825290205460ff1681565b61045661084a36600461495c565b611a7b565b61045661085d3660046149cf565b611bc3565b610403610870366004614615565b611e1a565b6105cb610883366004614880565b611eac565b6103e6610896366004614615565b611f19565b6104ef7f000000000000000000000000000000000000000000000000000000000000000081565b6103aa6108d0366004614854565b60d360209081526000928352604080842090915290825290205460ff1681565b6104566108fe3660046145b1565b611ff4565b6104b861206a565b6104b8610919366004614646565b6120a8565b61045661092c3660046147e1565b6120b9565b61045661093f366004614615565b6122ef565b60cb546104ef906001600160a01b031681565b6104566109653660046146ae565b61244b565b6104566109783660046146ae565b6125ca565b60408051608081018252600080825260208201819052918101829052606081019190915260ca545b8015610a5857600060ca6109ba600184614a2c565b815481106109ca576109ca614a43565b600091825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610a3a5750806040015163ffffffff164210155b15610a455792915050565b5080610a5081614a59565b9150506109a5565b505060408051608081018252600080825260208201819052918101829052606081019190915290565b610a89612778565b6001600160a01b038216600081815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a9190614a70565b6001600160a01b0316336001600160a01b031614610bb35760405162461bcd60e51b8152600401610baa90614a8d565b60405180910390fd5b610bbc816127d2565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2b9190614ad7565b610c475760405162461bcd60e51b8152600401610baa90614af4565b60665481811614610cc05760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610baa565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600080610d0e60208401846145b1565b8360200135604051602001610d579392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b60665460019060029081161415610d9d5760405162461bcd60e51b8152600401610baa90614b3c565b33600090815260d1602052604090205460ff16610dcc5760405162461bcd60e51b8152600401610baa90614b73565b60026097541415610def5760405162461bcd60e51b8152600401610baa90614bea565b600260975560005b82811015610f335736848483818110610e1257610e12614a43565b9050602002810190610e249190614c21565b33600081815260ce60209081526040808320549051949550939192610e4f9290918591879101614d7a565b604051602081830303815290604052805190602001209050610e70836128c9565b33600090815260d0602090815260408083208484529091529020805460ff19166001908117909155610ea3908390614daa565b33600081815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf27048290610eeb908890614dc2565b60405180910390a4610f1d333060408601803590610f0c90602089016145b1565b6001600160a01b0316929190612adf565b5050508080610f2b90614dd5565b915050610df7565b505060016097555050565b60665460029060049081161415610f675760405162461bcd60e51b8152600401610baa90614b3c565b60026097541415610f8a5760405162461bcd60e51b8152600401610baa90614bea565b6002609755610f998383612b50565b5050600160975550565b60665460039060089081161415610fcc5760405162461bcd60e51b8152600401610baa90614b3c565b60cb546001600160a01b03163314610ff65760405162461bcd60e51b8152600401610baa90614df0565b60cb5463ffffffff600160c01b9091048116908316116110925760405162461bcd60e51b815260206004820152604b60248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a206e60448201527f657720726f6f74206d75737420626520666f72206e657765722063616c63756c60648201526a185d1959081c195c9a5bd960aa1b608482015260a401610baa565b428263ffffffff161061112b5760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a207260448201527f65776172647343616c63756c6174696f6e456e6454696d657374616d702063616064820152746e6e6f7420626520696e207468652066757475726560581b608482015260a401610baa565b60ca5460cb5460009061114b90600160a01b900463ffffffff1642614e44565b6040805160808101825287815263ffffffff878116602080840182815286841685870181815260006060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116141561129d5760405162461bcd60e51b8152600401610baa90614b3c565b600260975414156112c05760405162461bcd60e51b8152600401610baa90614bea565b600260975560005b8381101561130f576112fd8585838181106112e5576112e5614a43565b90506020028101906112f79190614e6c565b84612b50565b8061130781614dd5565b9150506112c8565b50506001609755505050565b6001600160a01b038116600090815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff169082015261137190612ebd565b92915050565b61137f612778565b610bbc81612f0b565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156113d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f49190614ad7565b6114105760405162461bcd60e51b8152600401610baa90614af4565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60006114d48260ca61146460208301836147e1565b63ffffffff168154811061147a5761147a614a43565b600091825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152612f7c565b506001919050565b6114e4612778565b6114ee600061324d565b565b6114f8612778565b610bbc8161329f565b60408051608081018252600080825260208201819052918101829052606081019190915260ca805461153590600190614a2c565b8154811061154557611545614a43565b600091825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b606654600590602090811614156115c85760405162461bcd60e51b8152600401610baa90614b3c565b600260975414156115eb5760405162461bcd60e51b8152600401610baa90614bea565b6002609755336001600160a01b0385161461168b5760405162461bcd60e51b815260206004820152605460248201527f52657761726473436f6f7264696e61746f722e6372656174654f70657261746f60448201527f724469726563746564415653526577617264735375626d697373696f6e3a2063606482015273616c6c6572206973206e6f74207468652041565360601b608482015260a401610baa565b60005b8281101561130f57368484838181106116a9576116a9614a43565b90506020028101906116bb9190614e82565b6001600160a01b038716600090815260ce60209081526040808320549051939450926116ed918a918591879101614fff565b6040516020818303038152906040528051906020012090506000611710846132fb565b6001600160a01b038a16600090815260d3602090815260408083208684529091529020805460ff1916600190811790915590915061174f908490614daa565b6001600160a01b038a16600081815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906117a39088908a90615026565b60405180910390a46117c1333083610f0c6040890160208a016145b1565b5050505080806117d090614dd5565b91505061168e565b33600081815260cc602052604080822080546001600160a01b031981166001600160a01b038781169182179093559251911692839185917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca31291a4505050565b61183f612778565b610bbc816136cb565b606654600790608090811614156118715760405162461bcd60e51b8152600401610baa90614b3c565b336001600160a01b038416146118f95760405162461bcd60e51b815260206004820152604160248201527f52657761726473436f6f7264696e61746f722e7365744f70657261746f72504960448201527f53706c69743a2063616c6c6572206973206e6f7420746865206f70657261746f6064820152603960f91b608482015260a401610baa565b61271061ffff831611156119805760405162461bcd60e51b815260206004820152604260248201527f52657761726473436f6f7264696e61746f722e7365744f70657261746f72504960448201527f53706c69743a2073706c6974206d757374206265203c3d203130303030206269606482015261707360f01b608482015260a401610baa565b60cb5460009061199d90600160a01b900463ffffffff1642614e44565b6001600160a01b038516600090815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119f790612ebd565b6001600160a01b038616600090815260d560205260409020909150611a1d908584613736565b6040805163ffffffff8416815261ffff838116602083015286168183015290516001600160a01b0387169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a35050505050565b600054610100900460ff1615808015611a9b5750600054600160ff909116105b80611ab55750303b158015611ab5575060005460ff166001145b611b185760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610baa565b6000805460ff191660011790558015611b3b576000805461ff0019166101001790555b611b436137d1565b60c955611b508686613868565b611b598761324d565b611b628461329f565b611b6b83612f0b565b611b74826136cb565b8015611bba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60665460069060409081161415611bec5760405162461bcd60e51b8152600401610baa90614b3c565b336001600160a01b03851614611c755760405162461bcd60e51b815260206004820152604260248201527f52657761726473436f6f7264696e61746f722e7365744f70657261746f72415660448201527f5353706c69743a2063616c6c6572206973206e6f7420746865206f706572617460648201526137b960f11b608482015260a401610baa565b61271061ffff83161115611cfd5760405162461bcd60e51b815260206004820152604360248201527f52657761726473436f6f7264696e61746f722e7365744f70657261746f72415660448201527f5353706c69743a2073706c6974206d757374206265203c3d203130303030206260648201526269707360e81b608482015260a401610baa565b60cb54600090611d1a90600160a01b900463ffffffff1642614e44565b6001600160a01b03868116600090815260d46020908152604080832093891683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611d8290612ebd565b6001600160a01b03808816600090815260d460209081526040808320938a16835292905220909150611db5908584613736565b6040805163ffffffff8416815261ffff838116602083015286168183015290516001600160a01b03878116929089169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a4505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260ca8281548110611e5157611e51614a43565b600091825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b03828116600090815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff169281019290925290611f1290612ebd565b9392505050565b60ca546000905b63ffffffff811615611f85578260ca611f3a60018461503f565b63ffffffff1681548110611f5057611f50614a43565b9060005260206000209060020201600001541415611f7357611f1260018261503f565b80611f7d81615064565b915050611f20565b5060405162461bcd60e51b815260206004820152603760248201527f52657761726473436f6f7264696e61746f722e676574526f6f74496e6465784660448201527f726f6d486173683a20726f6f74206e6f7420666f756e640000000000000000006064820152608401610baa565b611ffc612778565b6001600160a01b0381166120615760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610baa565b610bbc8161324d565b60007f000000000000000000000000000000000000000000000000000000000000000046141561209b575060c95490565b6120a36137d1565b905090565b60006001610d0e60208401846145b1565b606654600390600890811614156120e25760405162461bcd60e51b8152600401610baa90614b3c565b60cb546001600160a01b0316331461210c5760405162461bcd60e51b8152600401610baa90614df0565b60ca5463ffffffff83161061217d5760405162461bcd60e51b815260206004820152603160248201527f52657761726473436f6f7264696e61746f722e64697361626c65526f6f743a206044820152700d2dcecc2d8d2c840e4dedee892dcc8caf607b1b6064820152608401610baa565b600060ca8363ffffffff168154811061219857612198614a43565b906000526020600020906002020190508060010160089054906101000a900460ff16156122255760405162461bcd60e51b815260206004820152603560248201527f52657761726473436f6f7264696e61746f722e64697361626c65526f6f743a206044820152741c9bdbdd08185b1c9958591e48191a5cd8589b1959605a1b6064820152608401610baa565b6001810154600160201b900463ffffffff1642106122a45760405162461bcd60e51b815260206004820152603660248201527f52657761726473436f6f7264696e61746f722e64697361626c65526f6f743a206044820152751c9bdbdd08185b1c9958591e481858dd1a5d985d195960521b6064820152608401610baa565b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e90600090a2505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123669190614a70565b6001600160a01b0316336001600160a01b0316146123965760405162461bcd60e51b8152600401610baa90614a8d565b6066541981196066541916146124145760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610baa565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610cf3565b606654600090600190811614156124745760405162461bcd60e51b8152600401610baa90614b3c565b600260975414156124975760405162461bcd60e51b8152600401610baa90614bea565b600260975560005b82811015610f3357368484838181106124ba576124ba614a43565b90506020028101906124cc9190614c21565b33600081815260ce602090815260408083205490519495509391926124f79290918591879101614d7a565b604051602081830303815290604052805190602001209050612518836128c9565b33600090815260cf602090815260408083208484529091529020805460ff1916600190811790915561254b908390614daa565b33600081815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e628190612593908890614dc2565b60405180910390a46125b4333060408601803590610f0c90602089016145b1565b50505080806125c290614dd5565b91505061249f565b606654600490601090811614156125f35760405162461bcd60e51b8152600401610baa90614b3c565b33600090815260d1602052604090205460ff166126225760405162461bcd60e51b8152600401610baa90614b73565b600260975414156126455760405162461bcd60e51b8152600401610baa90614bea565b600260975560005b82811015610f33573684848381811061266857612668614a43565b905060200281019061267a9190614c21565b33600081815260ce602090815260408083205490519495509391926126a59290918591879101614d7a565b6040516020818303038152906040528051906020012090506126c6836128c9565b33600090815260d2602090815260408083208484529091529020805460ff191660019081179091556126f9908390614daa565b33600081815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b90612741908890614dc2565b60405180910390a4612762333060408601803590610f0c90602089016145b1565b505050808061277090614dd5565b91505061264d565b6033546001600160a01b031633146114ee5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610baa565b6001600160a01b0381166128605760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610baa565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6128fb6128d68280615084565b6128e660808501606086016147e1565b6128f660a08601608087016147e1565b613952565b600081604001351161297f5760405162461bcd60e51b815260206004820152604160248201527f52657761726473436f6f7264696e61746f722e5f76616c69646174655265776160448201527f7264735375626d697373696f6e3a20616d6f756e742063616e6e6f74206265206064820152600360fc1b608482015260a401610baa565b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612a095760405162461bcd60e51b815260206004820152603f60248201527f52657761726473436f6f7264696e61746f722e5f76616c69646174655265776160448201527f7264735375626d697373696f6e3a20616d6f756e7420746f6f206c61726765006064820152608401610baa565b612a3963ffffffff7f00000000000000000000000000000000000000000000000000000000000000001642614daa565b612a4960808301606084016147e1565b63ffffffff161115610bbc5760405162461bcd60e51b815260206004820152605360248201527f52657761726473436f6f7264696e61746f722e5f76616c69646174655265776160448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152726f2066617220696e207468652066757475726560681b608482015260a401610baa565b6040516001600160a01b0380851660248301528316604482015260648101829052612b4a9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613f41565b50505050565b600060ca612b6160208501856147e1565b63ffffffff1681548110612b7757612b77614a43565b600091825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612bd88382612f7c565b6000612bea60808501606086016145b1565b6001600160a01b03808216600090815260cc60205260409020549192501680612c105750805b336001600160a01b03821614612c8e5760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063616c6c6572206973206e6f742076616c696420636c61696d6572000000006064820152608401610baa565b60005b612c9e60a08701876150ce565b9050811015612eb55736612cb560e0880188615084565b83818110612cc557612cc5614a43565b6001600160a01b038716600090815260cd602090815260408083209302949094019450929091508290612cfa908501856145b1565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905080826020013511612db45760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063756d756c61746976654561726e696e6773206d75737420626520677420746064820152741a185b8818dd5b5d5b185d1a5d9950db185a5b5959605a1b608482015260a401610baa565b6000612dc4826020850135614a2c565b6001600160a01b038716600090815260cd60209081526040822092935085018035929190612df290876145b1565b6001600160a01b0316815260208082019290925260400160002091909155612e349089908390612e24908701876145b1565b6001600160a01b03169190614013565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612e7860208901896145b1565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a45050508080612ead90614dd5565b915050612c91565b505050505050565b6000816040015163ffffffff1660001415612ee557505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612efe578151611371565b506020015190565b919050565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b806060015115612fd55760405162461bcd60e51b8152602060048201526030602482015260008051602061523283398151915260448201526f1c9bdbdd081a5cc8191a5cd8589b195960821b6064820152608401610baa565b806040015163ffffffff1642101561303c5760405162461bcd60e51b815260206004820152603660248201526000805160206152328339815191526044820152751c9bdbdd081b9bdd081858dd1a5d985d1959081e595d60521b6064820152608401610baa565b61304960c08301836150ce565b905061305860a08401846150ce565b9050146130d05760405162461bcd60e51b815260206004820152604c602482015260008051602061523283398151915260448201527f746f6b656e496e646963657320616e6420746f6b656e50726f6f6673206c656e60648201526b0cee8d040dad2e6dac2e8c6d60a31b608482015260a401610baa565b6130dd60e0830183615084565b90506130ec60c08401846150ce565b9050146131625760405162461bcd60e51b815260206004820152604a602482015260008051602061523283398151915260448201527f746f6b656e5472656550726f6f667320616e64206c6561766573206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610baa565b805161318e9061317860408501602086016147e1565b6131856040860186615118565b86606001614043565b60005b61319e60a08401846150ce565b90508110156132485761323860808401356131bc60a08601866150ce565b848181106131cc576131cc614a43565b90506020020160208101906131e191906147e1565b6131ee60c08701876150ce565b858181106131fe576131fe614a43565b90506020028101906132109190615118565b61321d60e0890189615084565b8781811061322d5761322d614a43565b9050604002016141af565b61324181614dd5565b9050613191565b505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb90600090a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b600061332a61330a8380615084565b61331a60808601606087016147e1565b6128f660a08701608088016147e1565b60006133396040840184615084565b9050116133b95760405162461bcd60e51b8152602060048201526054602482015260008051602061527283398151915260448201527f61746f724469726563746564526577617264735375626d697373696f6e3a206e6064820152731bc81bdc195c985d1bdc9cc81c995dd85c99195960621b608482015260a401610baa565b60008060005b6133cc6040860186615084565b90508110156135fe57366133e36040870187615084565b838181106133f3576133f3614a43565b6040029190910191506000905061340d60208301836145b1565b6001600160a01b0316141561348c5760405162461bcd60e51b815260206004820152605b6024820152600080516020615272833981519152604482015260008051602061525283398151915260648201527f70657261746f722063616e6e6f74206265203020616464726573730000000000608482015260a401610baa565b61349960208201826145b1565b6001600160a01b0316836001600160a01b0316106135475760405162461bcd60e51b81526020600482015260786024820152600080516020615272833981519152604482015260008051602061525283398151915260648201527f70657261746f7273206d75737420626520696e20617363656e64696e67206f7260848201527f64657220746f2068616e646c65206475706c696361746573000000000000000060a482015260c401610baa565b61355460208201826145b1565b925060008160200135116135dc5760405162461bcd60e51b81526020600482015260616024820152600080516020615272833981519152604482015260008051602061525283398151915260648201527f70657261746f722072657761726420616d6f756e742063616e6e6f74206265206084820152600360fc1b60a482015260c401610baa565b6135ea602082013585614daa565b935050806135f790614dd5565b90506133bf565b504261361060a08601608087016147e1565b61362060808701606088016147e1565b61362a9190614e44565b63ffffffff16106136c45760405162461bcd60e51b81526020600482015260766024820152600080516020615272833981519152604482015260008051602061525283398151915260648201527f70657261746f722d64697265637465642072657761726473207375626d697373608482015275696f6e206973206e6f7420726574726f61637469766560501b60a482015260c401610baa565b5092915050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b8254600160201b900463ffffffff164210613795578254600160201b900463ffffffff1661377e5760cb548354600160e01b90910461ffff1661ffff19909116178355613795565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6065546001600160a01b031615801561388957506001600160a01b03821615155b61390b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610baa565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261394e826127d2565b5050565b826139c25760405162461bcd60e51b8152602060048201526046602482015260008051602061529283398151915260448201527f6f6e526577617264735375626d697373696f6e3a206e6f207374726174656769606482015265195cc81cd95d60d21b608482015260a401610baa565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff161115613a785760405162461bcd60e51b815260206004820152605a602482015260008051602061529283398151915260448201527f6f6e526577617264735375626d697373696f6e3a206475726174696f6e20657860648201527f6365656473204d41585f524557415244535f4455524154494f4e000000000000608482015260a401610baa565b613aa27f000000000000000000000000000000000000000000000000000000000000000082615175565b63ffffffff1615613b485760405162461bcd60e51b8152602060048201526070602482015260008051602061529283398151915260448201527f6f6e526577617264735375626d697373696f6e3a206475726174696f6e206d7560648201527f73742062652061206d756c7469706c65206f662043414c43554c4154494f4e5f60848201526f494e54455256414c5f5345434f4e445360801b60a482015260c401610baa565b613b727f000000000000000000000000000000000000000000000000000000000000000083615175565b63ffffffff1615613c1e5760405162461bcd60e51b8152602060048201526076602482015260008051602061529283398151915260448201527f6f6e526577617264735375626d697373696f6e3a20737461727454696d65737460648201527f616d70206d7573742062652061206d756c7469706c65206f662043414c43554c6084820152754154494f4e5f494e54455256414c5f5345434f4e445360501b60a482015260c401610baa565b8163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1642613c579190614a2c565b11158015613c9157508163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b613d175760405162461bcd60e51b8152602060048201526057602482015260008051602061529283398151915260448201527f6f6e526577617264735375626d697373696f6e3a20737461727454696d65737460648201527f616d7020746f6f2066617220696e207468652070617374000000000000000000608482015260a401610baa565b6000805b84811015612eb5576000868683818110613d3757613d37614a43565b613d4d92602060409092020190810191506145b1565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa158015613db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ddc9190614ad7565b80613e0357506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b613e7c5760405162461bcd60e51b8152602060048201526050602482015260008051602061529283398151915260448201527f6f6e526577617264735375626d697373696f6e3a20696e76616c69642073747260648201526f185d1959de4818dbdb9cda59195c995960821b608482015260a401610baa565b806001600160a01b0316836001600160a01b031610613f2f5760405162461bcd60e51b815260206004820152606f602482015260008051602061529283398151915260448201527f6f6e526577617264735375626d697373696f6e3a20737472617465676965732060648201527f6d75737420626520696e20617363656e64696e67206f7264657220746f20686160848201526e6e646c65206475706c69636174657360881b60a482015260c401610baa565b9150613f3a81614dd5565b9050613d1b565b6000613f96826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166143009092919063ffffffff16565b8051909150156132485780806020019051810190613fb49190614ad7565b6132485760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610baa565b6040516001600160a01b03831660248201526044810182905261324890849063a9059cbb60e01b90606401612b13565b61404e602083615198565b6001901b8463ffffffff16106140d85760405162461bcd60e51b815260206004820152604360248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e65724c656166496e6064820152620c8caf60eb1b608482015260a401610baa565b60006140e382610cfe565b905061412e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916614317565b612eb55760405162461bcd60e51b815260206004820152604660248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e657220636c61696d60648201526510383937b7b360d11b608482015260a401610baa565b6141ba602083615198565b6001901b8463ffffffff16106142385760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e4c656166496e646578000000006064820152608401610baa565b6000614243826120a8565b905061428e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916614317565b612eb55760405162461bcd60e51b815260206004820152603f60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e20636c61696d2070726f6f66006064820152608401610baa565b606061430f848460008561432f565b949350505050565b600083614325868585614460565b1495945050505050565b6060824710156143905760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610baa565b6001600160a01b0385163b6143e75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610baa565b600080866001600160a01b0316858760405161440391906151d8565b60006040518083038185875af1925050503d8060008114614440576040519150601f19603f3d011682016040523d82523d6000602084013e614445565b606091505b5091509150614455828286614563565b979650505050505050565b60006020845161447091906151ea565b156144f75760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a401610baa565b8260205b8551811161455a5761450e6002856151ea565b61452f57816000528086015160205260406000209150600284049350614548565b8086015160005281602052604060002091506002840493505b614553602082614daa565b90506144fb565b50949350505050565b60608315614572575081611f12565b8251156145825782518084602001fd5b8160405162461bcd60e51b8152600401610baa91906151fe565b6001600160a01b0381168114610bbc57600080fd5b6000602082840312156145c357600080fd5b8135611f128161459c565b8015158114610bbc57600080fd5b600080604083850312156145ef57600080fd5b82356145fa8161459c565b9150602083013561460a816145ce565b809150509250929050565b60006020828403121561462757600080fd5b5035919050565b60006040828403121561464057600080fd5b50919050565b60006040828403121561465857600080fd5b611f12838361462e565b60008083601f84011261467457600080fd5b50813567ffffffffffffffff81111561468c57600080fd5b6020830191508360208260051b85010111156146a757600080fd5b9250929050565b600080602083850312156146c157600080fd5b823567ffffffffffffffff8111156146d857600080fd5b6146e485828601614662565b90969095509350505050565b6000610100828403121561464057600080fd5b6000806040838503121561471657600080fd5b823567ffffffffffffffff81111561472d57600080fd5b614739858286016146f0565b925050602083013561460a8161459c565b803563ffffffff81168114612f0657600080fd5b6000806040838503121561477157600080fd5b823591506147816020840161474a565b90509250929050565b60008060006040848603121561479f57600080fd5b833567ffffffffffffffff8111156147b657600080fd5b6147c286828701614662565b90945092505060208401356147d68161459c565b809150509250925092565b6000602082840312156147f357600080fd5b611f128261474a565b60006020828403121561480e57600080fd5b813560ff81168114611f1257600080fd5b60006020828403121561483157600080fd5b813567ffffffffffffffff81111561484857600080fd5b61430f848285016146f0565b6000806040838503121561486757600080fd5b82356148728161459c565b946020939093013593505050565b6000806040838503121561489357600080fd5b823561489e8161459c565b9150602083013561460a8161459c565b6000806000604084860312156148c357600080fd5b83356148ce8161459c565b9250602084013567ffffffffffffffff8111156148ea57600080fd5b6148f686828701614662565b9497909650939450505050565b803561ffff81168114612f0657600080fd5b60006020828403121561492757600080fd5b611f1282614903565b6000806040838503121561494357600080fd5b823561494e8161459c565b915061478160208401614903565b60008060008060008060c0878903121561497557600080fd5b86356149808161459c565b955060208701356149908161459c565b94506040870135935060608701356149a78161459c565b92506149b56080880161474a565b91506149c360a08801614903565b90509295509295509295565b6000806000606084860312156149e457600080fd5b83356149ef8161459c565b925060208401356149ff8161459c565b9150614a0d60408501614903565b90509250925092565b634e487b7160e01b600052601160045260246000fd5b600082821015614a3e57614a3e614a16565b500390565b634e487b7160e01b600052603260045260246000fd5b600081614a6857614a68614a16565b506000190190565b600060208284031215614a8257600080fd5b8151611f128161459c565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215614ae957600080fd5b8151611f12816145ce565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60208082526051908201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f60408201527f7420612076616c69642063726561746552657761726473466f72416c6c53756260608201527036b4b9b9b4b7b71039bab136b4ba3a32b960791b608082015260a00190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60008235609e19833603018112614c3757600080fd5b9190910192915050565b6000808335601e19843603018112614c5857600080fd5b830160208101925035905067ffffffffffffffff811115614c7857600080fd5b8060061b36038313156146a757600080fd5b818352600060208085019450826000805b86811015614cef578235614cae8161459c565b6001600160a01b03168852828401356bffffffffffffffffffffffff8116808214614cd7578384fd5b89860152506040978801979290920191600101614c9b565b50959695505050505050565b6000614d078283614c41565b60a08552614d1960a086018284614c8a565b9150506020830135614d2a8161459c565b6001600160a01b0316602085015260408381013590850152614d4e6060840161474a565b63ffffffff808216606087015280614d686080870161474a565b16608087015250508091505092915050565b60018060a01b0384168152826020820152606060408201526000614da16060830184614cfb565b95945050505050565b60008219821115614dbd57614dbd614a16565b500190565b602081526000611f126020830184614cfb565b6000600019821415614de957614de9614a16565b5060010190565b60208082526034908201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f6040820152733a103a3432903932bbb0b93239aab83230ba32b960611b606082015260800190565b600063ffffffff808316818516808303821115614e6357614e63614a16565b01949350505050565b6000823560fe19833603018112614c3757600080fd5b6000823560be19833603018112614c3757600080fd5b6000808335601e19843603018112614eaf57600080fd5b830160208101925035905067ffffffffffffffff811115614ecf57600080fd5b8036038313156146a757600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000614f138283614c41565b60c08552614f2560c086018284614c8a565b915050602080840135614f378161459c565b6001600160a01b0390811686830152604090614f5586830187614c41565b888603848a015280865290946000919085015b81831015614f99578635614f7b8161459c565b84168152868601358682015295840195600192909201918401614f68565b614fa560608a0161474a565b63ffffffff811660608c01529650614fbf60808a0161474a565b63ffffffff811660808c01529650614fda60a08a018a614e98565b9750955089810360a08b0152614ff1818888614ede565b9a9950505050505050505050565b60018060a01b0384168152826020820152606060408201526000614da16060830184614f07565b82815260406020820152600061430f6040830184614f07565b600063ffffffff8381169083168181101561505c5761505c614a16565b039392505050565b600063ffffffff82168061507a5761507a614a16565b6000190192915050565b6000808335601e1984360301811261509b57600080fd5b83018035915067ffffffffffffffff8211156150b657600080fd5b6020019150600681901b36038213156146a757600080fd5b6000808335601e198436030181126150e557600080fd5b83018035915067ffffffffffffffff82111561510057600080fd5b6020019150600581901b36038213156146a757600080fd5b6000808335601e1984360301811261512f57600080fd5b83018035915067ffffffffffffffff82111561514a57600080fd5b6020019150368190038213156146a757600080fd5b634e487b7160e01b600052601260045260246000fd5b600063ffffffff8084168061518c5761518c61515f565b92169190910692915050565b6000826151a7576151a761515f565b500490565b60005b838110156151c75781810151838201526020016151af565b83811115612b4a5750506000910152565b60008251614c378184602087016151ac565b6000826151f9576151f961515f565b500690565b602081526000825180602084015261521d8160408501602087016151ac565b601f01601f1916919091016040019291505056fe52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2061746f724469726563746564526577617264735375626d697373696f6e3a206f52657761726473436f6f7264696e61746f722e5f76616c69646174654f70657252657761726473436f6f7264696e61746f722e5f76616c6964617465436f6d6da2646970667358221220081e7033322140012f1d9ef09b55b455e888c99c5a08a478635131f15ff9795b64736f6c634300080c0033",
+ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegationManager\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_allocationManager\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_permissionController\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"},{\"name\":\"_CALCULATION_INTERVAL_SECONDS\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_MAX_REWARDS_DURATION\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_MAX_RETROACTIVE_LENGTH\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_MAX_FUTURE_LENGTH\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_GENESIS_REWARDS_TIMESTAMP\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"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\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"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\":\"claimer\",\"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\":\"createOperatorDirectedAVSRewardsSubmission\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllEarners\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cumulativeClaimed\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"totalClaimed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currRewardsCalculationEndTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"defaultOperatorSplitBips\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getCurrentClaimableDistributionRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentDistributionRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDistributionRootAtIndex\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDistributionRootsLength\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRootIndexFromHash\",\"inputs\":[{\"name\":\"rootHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_defaultSplitBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isAVSRewardsSubmissionHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"valid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorDirectedAVSRewardsSubmissionHash\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsForAllSubmitter\",\"inputs\":[{\"name\":\"submitter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"valid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsSubmissionForAllEarnersHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"valid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsSubmissionForAllHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"valid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permissionController\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPermissionController\"}],\"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\":\"processClaims\",\"inputs\":[{\"name\":\"claims\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim[]\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rewardsUpdater\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setActivationDelay\",\"inputs\":[{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClaimerFor\",\"inputs\":[{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClaimerFor\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setDefaultOperatorSplit\",\"inputs\":[{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsForAllSubmitter\",\"inputs\":[{\"name\":\"_submitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_newValue\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsUpdater\",\"inputs\":[{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"submissionNonce\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"submitRoot\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ActivationDelaySet\",\"inputs\":[{\"name\":\"oldActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"newActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ClaimerForSet\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldClaimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DefaultOperatorSplitBipsSet\",\"inputs\":[{\"name\":\"oldDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootDisabled\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootSubmitted\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAVSSplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDirectedAVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorDirectedRewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorPISplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"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\":\"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\":\"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\":\"AmountExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AmountIsZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DurationExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EarningsNotGreaterThanClaimed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCalculationIntervalSecondsRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidClaimProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidDurationRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEarner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEarnerLeafIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGenesisRewardsTimestampRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPermissions\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofLength\",\"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\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorsNotInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreviousSplitPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RewardsEndTimestampNotElapsed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootAlreadyActivated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootNotActivated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SplitExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StartTimestampTooFarInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StartTimestampTooFarInPast\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategiesNotInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SubmissionNotRetroactive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnauthorizedCaller\",\"inputs\":[]}]",
+ Bin: "0x6101c0604052348015610010575f5ffd5b506040516142d63803806142d683398101604081905261002f91610211565b858a8a8a88888888888f6001600160a01b038116610060576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660805261007685826102d3565b63ffffffff161561009a57604051630e06bd3160e01b815260040160405180910390fd5b6100a762015180866102d3565b63ffffffff16156100cb5760405163223c7b3960e11b815260040160405180910390fd5b6001600160a01b0397881660a05295871660c05293861660e05263ffffffff9283166101005290821661012052811661014052908116610160521661018052166101a052610117610126565b50505050505050505050610306565b5f54610100900460ff16156101915760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff908116146101e0575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101f6575f5ffd5b50565b805163ffffffff8116811461020c575f5ffd5b919050565b5f5f5f5f5f5f5f5f5f5f6101408b8d03121561022b575f5ffd5b8a51610236816101e2565b60208c0151909a50610247816101e2565b60408c0151909950610258816101e2565b60608c0151909850610269816101e2565b60808c015190975061027a816101e2565b955061028860a08c016101f9565b945061029660c08c016101f9565b93506102a460e08c016101f9565b92506102b36101008c016101f9565b91506102c26101208c016101f9565b90509295989b9194979a5092959850565b5f63ffffffff8316806102f457634e487b7160e01b5f52601260045260245ffd5b8063ffffffff84160691505092915050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051613f066103d05f395f81816105a601526129ee01525f818161045a0152612f2f01525f81816103bc015261233201525f81816105080152612eed01525f818161080c0152612dfd01525f818161076001528181612e4d0152612e9b01525f81816108600152611a2601525f818161052f0152612fca01525f81816108d3015261199601525f81816106f201528181610b62015281816111750152611dcb0152613f065ff3fe608060405234801561000f575f5ffd5b506004361061037c575f3560e01c8063886f1195116101d4578063dcbb03b311610109578063f2fde38b116100a9578063fabc1cbc11610079578063fabc1cbc14610981578063fbf1e2c114610994578063fce36c7d146109a7578063ff9f6cce146109ba575f5ffd5b8063f2fde38b14610935578063f6efbb5914610948578063f8cd84481461095b578063f96abf2e1461096e575f5ffd5b8063e810ce21116100e4578063e810ce21146108bb578063ea4d3c9b146108ce578063ed71e6a2146108f5578063f22cef8514610922575f5ffd5b8063dcbb03b314610882578063de02e50314610895578063e063f81f146108a8575f5ffd5b8063a50a1d9c11610174578063bb7e451f1161014f578063bb7e451f146107e8578063bf21a8aa14610807578063c46db6061461082e578063ca8aa7c71461085b575f5ffd5b8063a50a1d9c14610795578063aebd8bae146107a8578063b3dbb0e0146107d5575f5ffd5b80639be3d4e4116101af5780639be3d4e4146107405780639cb9a5fa146107485780639d45c2811461075b578063a0169ddd14610782575f5ffd5b8063886f1195146106ed5780638da5cb5b146107145780639104c31914610725575f5ffd5b80634596021c116102b55780635c975abb11610255578063715018a611610225578063715018a6146106a05780637b8f8b05146106a8578063863cb9a9146106b0578063865c6953146106c3575f5ffd5b80635c975abb146106435780635e9d83481461064b57806363f6a7981461065e5780636d21117e14610673575f5ffd5b80634d18cc35116102905780634d18cc35146105ee57806358baaa3e14610605578063595c6a67146106185780635ac86ab714610620575f5ffd5b80634596021c1461058e5780634657e26a146105a15780634b943960146105c8575f5ffd5b80632b9f64a41161032057806339b70e38116102fb57806339b70e381461052a5780633a8c0786146105515780633ccc861d146105685780633efe1db61461057b575f5ffd5b80632b9f64a4146104b057806336af41fa146104f057806337838ed014610503575f5ffd5b80630eb383451161035b5780630eb3834514610440578063131433b414610455578063136439dd1461047c578063149bc8721461048f575f5ffd5b806218572c1461038057806304a0c502146103b75780630e9a53cf146103f3575b5f5ffd5b6103a261038e3660046134e6565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103ae565b6103fb6109cd565b6040516103ae91905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61045361044e36600461350e565b610acd565b005b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61045361048a366004613545565b610b4d565b6104a261049d366004613572565b610c22565b6040519081526020016103ae565b6104d86104be3660046134e6565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103ae565b6104536104fe3660046135d4565b610c97565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b6104d87f000000000000000000000000000000000000000000000000000000000000000081565b60cb546103de90600160a01b900463ffffffff1681565b610453610576366004613624565b610e37565b61045361058936600461367b565b610e7c565b61045361059c3660046136a5565b611070565b6104d87f000000000000000000000000000000000000000000000000000000000000000081565b6105db6105d63660046134e6565b6110f1565b60405161ffff90911681526020016103ae565b60cb546103de90600160c01b900463ffffffff1681565b6104536106133660046136f8565b61114c565b610453611160565b6103a261062e366004613711565b606654600160ff9092169190911b9081161490565b6066546104a2565b6103a2610659366004613731565b61120f565b60cb546105db90600160e01b900461ffff1681565b6103a2610681366004613763565b60cf60209081525f928352604080842090915290825290205460ff1681565b61045361129a565b60ca546104a2565b6104536106be3660046134e6565b6112ab565b6104a26106d136600461378d565b60cd60209081525f928352604080842090915290825290205481565b6104d87f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b03166104d8565b6104d873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103fb6112bc565b6104536107563660046137b9565b611358565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b6104536107903660046134e6565b611503565b6104536107a336600461381b565b61150e565b6103a26107b6366004613763565b60d260209081525f928352604080842090915290825290205460ff1681565b6104536107e3366004613834565b61151f565b6104a26107f63660046134e6565b60ce6020525f908152604090205481565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b6103a261083c366004613763565b60d060209081525f928352604080842090915290825290205460ff1681565b6104d87f000000000000000000000000000000000000000000000000000000000000000081565b61045361089036600461385e565b611668565b6103fb6108a3366004613545565b6117d3565b6105db6108b636600461378d565b611863565b6103de6108c9366004613545565b6118cf565b6104d87f000000000000000000000000000000000000000000000000000000000000000081565b6103a2610903366004613763565b60d360209081525f928352604080842090915290825290205460ff1681565b61045361093036600461378d565b611950565b6104536109433660046134e6565b611aba565b6104536109563660046138a2565b611b35565b6104a2610969366004613572565b611c6a565b61045361097c3660046136f8565b611c7a565b61045361098f366004613545565b611dc9565b60cb546104d8906001600160a01b031681565b6104536109b53660046135d4565b611edf565b6104536109c83660046135d4565b61202e565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610aa5575f60ca610a08600184613914565b81548110610a1857610a18613927565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610a875750806040015163ffffffff164210155b15610a925792915050565b5080610a9d8161393b565b9150506109f4565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610ad56121ad565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610baf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd39190613950565b610bf057604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c155760405163c61dca5d60e01b815260040160405180910390fd5b610c1e82612207565b5050565b5f80610c3160208401846134e6565b8360200135604051602001610c7a9392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b606654600190600290811603610cc05760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff16610cef57604051635c427cd960e01b815260040160405180910390fd5b610cf7612244565b5f5b82811015610e275736848483818110610d1457610d14613927565b9050602002810190610d26919061396b565b335f81815260ce60209081526040808320549051949550939192610d509290918591879101613ab9565b604051602081830303815290604052805190602001209050610d718361229d565b335f90815260d0602090815260408083208484529091529020805460ff19166001908117909155610da3908390613ae8565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf27048290610dea908890613afb565b60405180910390a4610e1c333060408601803590610e0b90602089016134e6565b6001600160a01b031692919061238d565b505050600101610cf9565b50610e326001609755565b505050565b606654600290600490811603610e605760405163840a48d560e01b815260040160405180910390fd5b610e68612244565b610e7283836123f8565b610e326001609755565b606654600390600890811603610ea55760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b03163314610ed057604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b909104811690831611610f0357604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff1610610f29576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f90610f4890600160a01b900463ffffffff1642613b0d565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036110995760405163840a48d560e01b815260040160405180910390fd5b6110a1612244565b5f5b838110156110e0576110d88585838181106110c0576110c0613927565b90506020028101906110d29190613b29565b846123f8565b6001016110a3565b506110eb6001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff169082015261114690612680565b92915050565b6111546121ad565b61115d816126f0565b50565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156111c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e69190613950565b61120357604051631d77d47760e21b815260040160405180910390fd5b61120d5f19612207565b565b5f6112928260ca61122360208301836136f8565b63ffffffff168154811061123957611239613927565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152612761565b506001919050565b6112a26121ad565b61120d5f612904565b6112b36121ad565b61115d81612955565b604080516080810182525f80825260208201819052918101829052606081019190915260ca80546112ef90600190613914565b815481106112ff576112ff613927565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036113815760405163840a48d560e01b815260040160405180910390fd5b8361138b816129b0565b6113a85760405163932d94f760e01b815260040160405180910390fd5b6113b0612244565b5f5b838110156114f157368585838181106113cd576113cd613927565b90506020028101906113df9190613b3d565b6001600160a01b0388165f90815260ce6020908152604080832054905193945092611410918b918591879101613cab565b6040516020818303038152906040528051906020012090505f61143284612a5a565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611470908490613ae8565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906114c39088908a90613cd1565b60405180910390a46114e1333083610e0b6040890160208a016134e6565b5050600190920191506113b29050565b506114fc6001609755565b5050505050565b33610c1e8183612c40565b6115166121ad565b61115d81612ca3565b6066546007906080908116036115485760405163840a48d560e01b815260040160405180910390fd5b82611552816129b0565b61156f5760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061158b90600160a01b900463ffffffff1642613b0d565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906115e490612680565b6001600160a01b0387165f90815260d560205260409020909150611609908684612d0e565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b6066546006906040908116036116915760405163840a48d560e01b815260040160405180910390fd5b8361169b816129b0565b6116b85760405163932d94f760e01b815260040160405180910390fd5b60cb545f906116d490600160a01b900463ffffffff1642613b0d565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff169281019290925291925061173b90612680565b6001600160a01b038089165f90815260d460209081526040808320938b1683529290522090915061176d908684612d0e565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca828154811061180957611809613927565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252906118c890612680565b9392505050565b60ca545f905b63ffffffff811615611936578260ca6118ef600184613ce9565b63ffffffff168154811061190557611905613927565b905f5260205f2090600202015f015403611924576118c8600182613ce9565b8061192e81613d05565b9150506118d5565b5060405163504570e360e01b815260040160405180910390fd5b8161195a816129b0565b6119775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156119db573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119ff9190613950565b80611a93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063ba1a84e590602401602060405180830381865afa158015611a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a919190613d23565b115b611ab05760405163fb494ea160e01b815260040160405180910390fd5b610e328383612c40565b611ac26121ad565b6001600160a01b038116611b2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61115d81612904565b5f54610100900460ff1615808015611b5357505f54600160ff909116105b80611b6c5750303b158015611b6c57505f5460ff166001145b611bcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611b23565b5f805460ff191660011790558015611bf0575f805461ff0019166101001790555b611bf985612207565b611c0286612904565b611c0b84612955565b611c14836126f0565b611c1d82612ca3565b8015611c62575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b5f6001610c3160208401846134e6565b606654600390600890811603611ca35760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b03163314611cce57604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff831610611cf6576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff1681548110611d1057611d10613927565b905f5260205f20906002020190508060010160089054906101000a900460ff1615611d4e57604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff164210611d7f57604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e25573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e499190613d3a565b6001600160a01b0316336001600160a01b031614611e7a5760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614611ea15760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f90600190811603611f075760405163840a48d560e01b815260040160405180910390fd5b611f0f612244565b5f5b82811015610e275736848483818110611f2c57611f2c613927565b9050602002810190611f3e919061396b565b335f81815260ce60209081526040808320549051949550939192611f689290918591879101613ab9565b604051602081830303815290604052805190602001209050611f898361229d565b335f90815260cf602090815260408083208484529091529020805460ff19166001908117909155611fbb908390613ae8565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e628190612002908890613afb565b60405180910390a4612023333060408601803590610e0b90602089016134e6565b505050600101611f11565b6066546004906010908116036120575760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661208657604051635c427cd960e01b815260040160405180910390fd5b61208e612244565b5f5b82811015610e2757368484838181106120ab576120ab613927565b90506020028101906120bd919061396b565b335f81815260ce602090815260408083205490519495509391926120e79290918591879101613ab9565b6040516020818303038152906040528051906020012090506121088361229d565b335f90815260d2602090815260408083208484529091529020805460ff1916600190811790915561213a908390613ae8565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b90612181908890613afb565b60405180910390a46121a2333060408601803590610e0b90602089016134e6565b505050600101612090565b6033546001600160a01b0316331461120d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611b23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6002609754036122965760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611b23565b6002609755565b6122cf6122aa8280613d55565b6122ba60808501606086016136f8565b6122ca60a08601608087016136f8565b612ddd565b5f8160400135116122f3576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff816040013511156123285760405163070b5a6f60e21b815260040160405180910390fd5b61235863ffffffff7f00000000000000000000000000000000000000000000000000000000000000001642613ae8565b61236860808301606084016136f8565b63ffffffff16111561115d57604051637ee2b44360e01b815260040160405180910390fd5b6040516001600160a01b03808516602483015283166044820152606481018290526110eb9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526130b5565b5f60ca61240860208501856136f8565b63ffffffff168154811061241e5761241e613927565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152905061247e8382612761565b5f61248f60808501606086016134e6565b6001600160a01b038082165f90815260cc602052604090205491925016806124b45750805b336001600160a01b038216146124dd57604051635c427cd960e01b815260040160405180910390fd5b5f5b6124ec60a0870187613d9b565b9050811015611c62573661250360e0880188613d55565b8381811061251357612513613927565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612547908501856134e6565b6001600160a01b03166001600160a01b031681526020019081526020015f205490508082602001351161258d5760405163aa385e8160e01b815260040160405180910390fd5b5f61259c826020850135613914565b6001600160a01b0387165f90815260cd602090815260408220929350850180359291906125c990876134e6565b6001600160a01b031681526020808201929092526040015f209190915561260a90899083906125fa908701876134e6565b6001600160a01b03169190613188565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce319061264e60208901896134e6565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a45050506001016124df565b5f816040015163ffffffff165f14806126b25750815161ffff9081161480156126b25750816040015163ffffffff1642105b156126ca57505060cb54600160e01b900461ffff1690565b816040015163ffffffff164210156126e3578151611146565b506020015190565b919050565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561278457604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff164210156127af57604051631437a2bb60e31b815260040160405180910390fd5b6127bc60c0830183613d9b565b90506127cb60a0840184613d9b565b9050146127eb576040516343714afd60e01b815260040160405180910390fd5b6127f860e0830183613d55565b905061280760c0840184613d9b565b905014612827576040516343714afd60e01b815260040160405180910390fd5b80516128539061283d60408501602086016136f8565b61284a6040860186613de1565b866060016131b8565b5f5b61286260a0840184613d9b565b9050811015610e32576128fc608084013561288060a0860186613d9b565b8481811061289057612890613927565b90506020020160208101906128a591906136f8565b6128b260c0870187613d9b565b858181106128c2576128c2613927565b90506020028101906128d49190613de1565b6128e160e0890189613d55565b878181106128f1576128f1613927565b90506040020161325c565b600101612855565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015612a36573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111469190613950565b5f612a88612a688380613d55565b612a7860808601606087016136f8565b6122ca60a08701608088016136f8565b5f612a966040840184613d55565b905011612ab65760405163796cc52560e01b815260040160405180910390fd5b42612ac760a08401608085016136f8565b612ad760808501606086016136f8565b612ae19190613b0d565b63ffffffff1610612b055760405163150358a160e21b815260040160405180910390fd5b5f80805b612b166040860186613d55565b9050811015612c075736612b2d6040870187613d55565b83818110612b3d57612b3d613927565b6040029190910191505f9050612b5660208301836134e6565b6001600160a01b031603612b7d57604051630863a45360e11b815260040160405180910390fd5b612b8a60208201826134e6565b6001600160a01b0316836001600160a01b031610612bbb576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612bdf576040516310eb483f60e21b815260040160405180910390fd5b612bec60208201826134e6565b9250612bfc602082013585613ae8565b935050600101612b09565b506f4b3b4ca85a86c47a098a223fffffffff821115612c395760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff83161115612d355760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff164211612d6357604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f03612d8a57825461ffff191661ffff178355612da1565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b82612dfb5760405163796cc52560e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff161115612e4857604051630dd0b9f560e21b815260040160405180910390fd5b612e727f000000000000000000000000000000000000000000000000000000000000000082613e38565b63ffffffff1615612e965760405163ee66470560e01b815260040160405180910390fd5b612ec07f000000000000000000000000000000000000000000000000000000000000000083613e38565b63ffffffff1615612ee457604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1642612f1d9190613914565b11158015612f5757508163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b612f745760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015611c62575f868683818110612f9257612f92613927565b612fa892602060409092020190810191506134e6565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa158015613011573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130359190613950565b8061305c57506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61307957604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106130ab5760405163dfad9ca160e01b815260040160405180910390fd5b9150600101612f77565b5f613109826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661329a9092919063ffffffff16565b905080515f14806131295750808060200190518101906131299190613950565b610e325760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611b23565b6040516001600160a01b038316602482015260448101829052610e3290849063a9059cbb60e01b906064016123c1565b6131c3602083613e5f565b6001901b8463ffffffff16106131eb5760405162c6c39d60e71b815260040160405180910390fd5b5f6131f582610c22565b905061323f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff89166132b0565b611c62576040516369ca16c960e01b815260040160405180910390fd5b613267602083613e5f565b6001901b8463ffffffff16106132905760405163054ff4df60e51b815260040160405180910390fd5b5f6131f582611c6a565b60606132a884845f856132c7565b949350505050565b5f836132bd86858561339e565b1495945050505050565b6060824710156133285760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611b23565b5f5f866001600160a01b031685876040516133439190613e72565b5f6040518083038185875af1925050503d805f811461337d576040519150601f19603f3d011682016040523d82523d5f602084013e613382565b606091505b509150915061339387838387613435565b979650505050505050565b5f602084516133ad9190613e88565b156133cb576040516313717da960e21b815260040160405180910390fd5b8260205b8551811161342c576133e2600285613e88565b5f0361340357815f528086015160205260405f20915060028404935061341a565b808601515f528160205260405f2091506002840493505b613425602082613ae8565b90506133cf565b50949350505050565b606083156134a35782515f0361349c576001600160a01b0385163b61349c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611b23565b50816132a8565b6132a883838151156134b85781518083602001fd5b8060405162461bcd60e51b8152600401611b239190613e9b565b6001600160a01b038116811461115d575f5ffd5b5f602082840312156134f6575f5ffd5b81356118c8816134d2565b801515811461115d575f5ffd5b5f5f6040838503121561351f575f5ffd5b823561352a816134d2565b9150602083013561353a81613501565b809150509250929050565b5f60208284031215613555575f5ffd5b5035919050565b5f6040828403121561356c575f5ffd5b50919050565b5f60408284031215613582575f5ffd5b6118c8838361355c565b5f5f83601f84011261359c575f5ffd5b50813567ffffffffffffffff8111156135b3575f5ffd5b6020830191508360208260051b85010111156135cd575f5ffd5b9250929050565b5f5f602083850312156135e5575f5ffd5b823567ffffffffffffffff8111156135fb575f5ffd5b6136078582860161358c565b90969095509350505050565b5f610100828403121561356c575f5ffd5b5f5f60408385031215613635575f5ffd5b823567ffffffffffffffff81111561364b575f5ffd5b61365785828601613613565b925050602083013561353a816134d2565b803563ffffffff811681146126eb575f5ffd5b5f5f6040838503121561368c575f5ffd5b8235915061369c60208401613668565b90509250929050565b5f5f5f604084860312156136b7575f5ffd5b833567ffffffffffffffff8111156136cd575f5ffd5b6136d98682870161358c565b90945092505060208401356136ed816134d2565b809150509250925092565b5f60208284031215613708575f5ffd5b6118c882613668565b5f60208284031215613721575f5ffd5b813560ff811681146118c8575f5ffd5b5f60208284031215613741575f5ffd5b813567ffffffffffffffff811115613757575f5ffd5b6132a884828501613613565b5f5f60408385031215613774575f5ffd5b823561377f816134d2565b946020939093013593505050565b5f5f6040838503121561379e575f5ffd5b82356137a9816134d2565b9150602083013561353a816134d2565b5f5f5f604084860312156137cb575f5ffd5b83356137d6816134d2565b9250602084013567ffffffffffffffff8111156137f1575f5ffd5b6137fd8682870161358c565b9497909650939450505050565b803561ffff811681146126eb575f5ffd5b5f6020828403121561382b575f5ffd5b6118c88261380a565b5f5f60408385031215613845575f5ffd5b8235613850816134d2565b915061369c6020840161380a565b5f5f5f60608486031215613870575f5ffd5b833561387b816134d2565b9250602084013561388b816134d2565b91506138996040850161380a565b90509250925092565b5f5f5f5f5f60a086880312156138b6575f5ffd5b85356138c1816134d2565b94506020860135935060408601356138d8816134d2565b92506138e660608701613668565b91506138f46080870161380a565b90509295509295909350565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561114657611146613900565b634e487b7160e01b5f52603260045260245ffd5b5f8161394957613949613900565b505f190190565b5f60208284031215613960575f5ffd5b81516118c881613501565b5f8235609e1983360301811261397f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261399e575f5ffd5b830160208101925035905067ffffffffffffffff8111156139bd575f5ffd5b8060061b36038213156135cd575f5ffd5b8183526020830192505f815f5b84811015613a315781356139ee816134d2565b6001600160a01b0316865260208201356bffffffffffffffffffffffff8116808214613a18575f5ffd5b60208801525060409586019591909101906001016139db565b5093949350505050565b5f613a468283613989565b60a08552613a5860a0860182846139ce565b9150506020830135613a69816134d2565b6001600160a01b031660208501526040838101359085015263ffffffff613a9260608501613668565b16606085015263ffffffff613aa960808501613668565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f613adf6060830184613a3b565b95945050505050565b8082018082111561114657611146613900565b602081525f6118c86020830184613a3b565b63ffffffff818116838216019081111561114657611146613900565b5f823560fe1983360301811261397f575f5ffd5b5f823560be1983360301811261397f575f5ffd5b5f5f8335601e19843603018112613b66575f5ffd5b830160208101925035905067ffffffffffffffff811115613b85575f5ffd5b8036038213156135cd575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f613bc68283613989565b60c08552613bd860c0860182846139ce565b9150506020830135613be9816134d2565b6001600160a01b03166020850152613c046040840184613989565b858303604087015280835290915f91906020015b81831015613c53578335613c2b816134d2565b6001600160a01b03168152602084810135908201526040938401936001939093019201613c18565b613c5f60608701613668565b63ffffffff811660608901529350613c7960808701613668565b63ffffffff811660808901529350613c9460a0870187613b51565b9450925086810360a0880152613393818585613b93565b60018060a01b0384168152826020820152606060408201525f613adf6060830184613bbb565b828152604060208201525f6132a86040830184613bbb565b63ffffffff828116828216039081111561114657611146613900565b5f63ffffffff821680613d1a57613d1a613900565b5f190192915050565b5f60208284031215613d33575f5ffd5b5051919050565b5f60208284031215613d4a575f5ffd5b81516118c8816134d2565b5f5f8335601e19843603018112613d6a575f5ffd5b83018035915067ffffffffffffffff821115613d84575f5ffd5b6020019150600681901b36038213156135cd575f5ffd5b5f5f8335601e19843603018112613db0575f5ffd5b83018035915067ffffffffffffffff821115613dca575f5ffd5b6020019150600581901b36038213156135cd575f5ffd5b5f5f8335601e19843603018112613df6575f5ffd5b83018035915067ffffffffffffffff821115613e10575f5ffd5b6020019150368190038213156135cd575f5ffd5b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680613e4d57613e4d613e24565b8063ffffffff84160691505092915050565b5f82613e6d57613e6d613e24565b500490565b5f82518060208501845e5f920191825250919050565b5f82613e9657613e96613e24565b500690565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fea26469706673582212206e80bedbb6b3ce4c9903361c1aa7c4613c7d3e70cc3a47bb89d3c7bb5e321a9664736f6c634300081b0033",
}
// RewardsCoordinatorABI is the input ABI used to generate the binding from.
@@ -106,7 +106,7 @@ var RewardsCoordinatorABI = RewardsCoordinatorMetaData.ABI
var RewardsCoordinatorBin = RewardsCoordinatorMetaData.Bin
// DeployRewardsCoordinator deploys a new Ethereum contract, binding an instance of RewardsCoordinator to it.
-func DeployRewardsCoordinator(auth *bind.TransactOpts, backend bind.ContractBackend, _delegationManager common.Address, _strategyManager common.Address, _CALCULATION_INTERVAL_SECONDS uint32, _MAX_REWARDS_DURATION uint32, _MAX_RETROACTIVE_LENGTH uint32, _MAX_FUTURE_LENGTH uint32, __GENESIS_REWARDS_TIMESTAMP uint32) (common.Address, *types.Transaction, *RewardsCoordinator, error) {
+func DeployRewardsCoordinator(auth *bind.TransactOpts, backend bind.ContractBackend, _delegationManager common.Address, _strategyManager common.Address, _allocationManager common.Address, _pauserRegistry common.Address, _permissionController common.Address, _CALCULATION_INTERVAL_SECONDS uint32, _MAX_REWARDS_DURATION uint32, _MAX_RETROACTIVE_LENGTH uint32, _MAX_FUTURE_LENGTH uint32, _GENESIS_REWARDS_TIMESTAMP uint32) (common.Address, *types.Transaction, *RewardsCoordinator, error) {
parsed, err := RewardsCoordinatorMetaData.GetAbi()
if err != nil {
return common.Address{}, nil, nil, err
@@ -115,7 +115,7 @@ func DeployRewardsCoordinator(auth *bind.TransactOpts, backend bind.ContractBack
return common.Address{}, nil, nil, errors.New("GetABI returned nil")
}
- address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(RewardsCoordinatorBin), backend, _delegationManager, _strategyManager, _CALCULATION_INTERVAL_SECONDS, _MAX_REWARDS_DURATION, _MAX_RETROACTIVE_LENGTH, _MAX_FUTURE_LENGTH, __GENESIS_REWARDS_TIMESTAMP)
+ address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(RewardsCoordinatorBin), backend, _delegationManager, _strategyManager, _allocationManager, _pauserRegistry, _permissionController, _CALCULATION_INTERVAL_SECONDS, _MAX_REWARDS_DURATION, _MAX_RETROACTIVE_LENGTH, _MAX_FUTURE_LENGTH, _GENESIS_REWARDS_TIMESTAMP)
if err != nil {
return common.Address{}, nil, nil, err
}
@@ -450,6 +450,37 @@ func (_RewardsCoordinator *RewardsCoordinatorCallerSession) ActivationDelay() (u
return _RewardsCoordinator.Contract.ActivationDelay(&_RewardsCoordinator.CallOpts)
}
+// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7.
+//
+// Solidity: function allocationManager() view returns(address)
+func (_RewardsCoordinator *RewardsCoordinatorCaller) AllocationManager(opts *bind.CallOpts) (common.Address, error) {
+ var out []interface{}
+ err := _RewardsCoordinator.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 (_RewardsCoordinator *RewardsCoordinatorSession) AllocationManager() (common.Address, error) {
+ return _RewardsCoordinator.Contract.AllocationManager(&_RewardsCoordinator.CallOpts)
+}
+
+// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7.
+//
+// Solidity: function allocationManager() view returns(address)
+func (_RewardsCoordinator *RewardsCoordinatorCallerSession) AllocationManager() (common.Address, error) {
+ return _RewardsCoordinator.Contract.AllocationManager(&_RewardsCoordinator.CallOpts)
+}
+
// BeaconChainETHStrategy is a free data retrieval call binding the contract method 0x9104c319.
//
// Solidity: function beaconChainETHStrategy() view returns(address)
@@ -484,7 +515,7 @@ func (_RewardsCoordinator *RewardsCoordinatorCallerSession) BeaconChainETHStrate
// CalculateEarnerLeafHash is a free data retrieval call binding the contract method 0x149bc872.
//
// Solidity: function calculateEarnerLeafHash((address,bytes32) leaf) pure returns(bytes32)
-func (_RewardsCoordinator *RewardsCoordinatorCaller) CalculateEarnerLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorEarnerTreeMerkleLeaf) ([32]byte, error) {
+func (_RewardsCoordinator *RewardsCoordinatorCaller) CalculateEarnerLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorTypesEarnerTreeMerkleLeaf) ([32]byte, error) {
var out []interface{}
err := _RewardsCoordinator.contract.Call(opts, &out, "calculateEarnerLeafHash", leaf)
@@ -501,21 +532,21 @@ func (_RewardsCoordinator *RewardsCoordinatorCaller) CalculateEarnerLeafHash(opt
// CalculateEarnerLeafHash is a free data retrieval call binding the contract method 0x149bc872.
//
// Solidity: function calculateEarnerLeafHash((address,bytes32) leaf) pure returns(bytes32)
-func (_RewardsCoordinator *RewardsCoordinatorSession) CalculateEarnerLeafHash(leaf IRewardsCoordinatorEarnerTreeMerkleLeaf) ([32]byte, error) {
+func (_RewardsCoordinator *RewardsCoordinatorSession) CalculateEarnerLeafHash(leaf IRewardsCoordinatorTypesEarnerTreeMerkleLeaf) ([32]byte, error) {
return _RewardsCoordinator.Contract.CalculateEarnerLeafHash(&_RewardsCoordinator.CallOpts, leaf)
}
// CalculateEarnerLeafHash is a free data retrieval call binding the contract method 0x149bc872.
//
// Solidity: function calculateEarnerLeafHash((address,bytes32) leaf) pure returns(bytes32)
-func (_RewardsCoordinator *RewardsCoordinatorCallerSession) CalculateEarnerLeafHash(leaf IRewardsCoordinatorEarnerTreeMerkleLeaf) ([32]byte, error) {
+func (_RewardsCoordinator *RewardsCoordinatorCallerSession) CalculateEarnerLeafHash(leaf IRewardsCoordinatorTypesEarnerTreeMerkleLeaf) ([32]byte, error) {
return _RewardsCoordinator.Contract.CalculateEarnerLeafHash(&_RewardsCoordinator.CallOpts, leaf)
}
// CalculateTokenLeafHash is a free data retrieval call binding the contract method 0xf8cd8448.
//
// Solidity: function calculateTokenLeafHash((address,uint256) leaf) pure returns(bytes32)
-func (_RewardsCoordinator *RewardsCoordinatorCaller) CalculateTokenLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorTokenTreeMerkleLeaf) ([32]byte, error) {
+func (_RewardsCoordinator *RewardsCoordinatorCaller) CalculateTokenLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorTypesTokenTreeMerkleLeaf) ([32]byte, error) {
var out []interface{}
err := _RewardsCoordinator.contract.Call(opts, &out, "calculateTokenLeafHash", leaf)
@@ -532,21 +563,21 @@ func (_RewardsCoordinator *RewardsCoordinatorCaller) CalculateTokenLeafHash(opts
// CalculateTokenLeafHash is a free data retrieval call binding the contract method 0xf8cd8448.
//
// Solidity: function calculateTokenLeafHash((address,uint256) leaf) pure returns(bytes32)
-func (_RewardsCoordinator *RewardsCoordinatorSession) CalculateTokenLeafHash(leaf IRewardsCoordinatorTokenTreeMerkleLeaf) ([32]byte, error) {
+func (_RewardsCoordinator *RewardsCoordinatorSession) CalculateTokenLeafHash(leaf IRewardsCoordinatorTypesTokenTreeMerkleLeaf) ([32]byte, error) {
return _RewardsCoordinator.Contract.CalculateTokenLeafHash(&_RewardsCoordinator.CallOpts, leaf)
}
// CalculateTokenLeafHash is a free data retrieval call binding the contract method 0xf8cd8448.
//
// Solidity: function calculateTokenLeafHash((address,uint256) leaf) pure returns(bytes32)
-func (_RewardsCoordinator *RewardsCoordinatorCallerSession) CalculateTokenLeafHash(leaf IRewardsCoordinatorTokenTreeMerkleLeaf) ([32]byte, error) {
+func (_RewardsCoordinator *RewardsCoordinatorCallerSession) CalculateTokenLeafHash(leaf IRewardsCoordinatorTypesTokenTreeMerkleLeaf) ([32]byte, error) {
return _RewardsCoordinator.Contract.CalculateTokenLeafHash(&_RewardsCoordinator.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 (_RewardsCoordinator *RewardsCoordinatorCaller) CheckClaim(opts *bind.CallOpts, claim IRewardsCoordinatorRewardsMerkleClaim) (bool, error) {
+func (_RewardsCoordinator *RewardsCoordinatorCaller) CheckClaim(opts *bind.CallOpts, claim IRewardsCoordinatorTypesRewardsMerkleClaim) (bool, error) {
var out []interface{}
err := _RewardsCoordinator.contract.Call(opts, &out, "checkClaim", claim)
@@ -563,23 +594,23 @@ func (_RewardsCoordinator *RewardsCoordinatorCaller) CheckClaim(opts *bind.CallO
// 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 (_RewardsCoordinator *RewardsCoordinatorSession) CheckClaim(claim IRewardsCoordinatorRewardsMerkleClaim) (bool, error) {
+func (_RewardsCoordinator *RewardsCoordinatorSession) CheckClaim(claim IRewardsCoordinatorTypesRewardsMerkleClaim) (bool, error) {
return _RewardsCoordinator.Contract.CheckClaim(&_RewardsCoordinator.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 (_RewardsCoordinator *RewardsCoordinatorCallerSession) CheckClaim(claim IRewardsCoordinatorRewardsMerkleClaim) (bool, error) {
+func (_RewardsCoordinator *RewardsCoordinatorCallerSession) CheckClaim(claim IRewardsCoordinatorTypesRewardsMerkleClaim) (bool, error) {
return _RewardsCoordinator.Contract.CheckClaim(&_RewardsCoordinator.CallOpts, claim)
}
// ClaimerFor is a free data retrieval call binding the contract method 0x2b9f64a4.
//
-// Solidity: function claimerFor(address ) view returns(address)
-func (_RewardsCoordinator *RewardsCoordinatorCaller) ClaimerFor(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
+// Solidity: function claimerFor(address earner) view returns(address claimer)
+func (_RewardsCoordinator *RewardsCoordinatorCaller) ClaimerFor(opts *bind.CallOpts, earner common.Address) (common.Address, error) {
var out []interface{}
- err := _RewardsCoordinator.contract.Call(opts, &out, "claimerFor", arg0)
+ err := _RewardsCoordinator.contract.Call(opts, &out, "claimerFor", earner)
if err != nil {
return *new(common.Address), err
@@ -593,24 +624,24 @@ func (_RewardsCoordinator *RewardsCoordinatorCaller) ClaimerFor(opts *bind.CallO
// ClaimerFor is a free data retrieval call binding the contract method 0x2b9f64a4.
//
-// Solidity: function claimerFor(address ) view returns(address)
-func (_RewardsCoordinator *RewardsCoordinatorSession) ClaimerFor(arg0 common.Address) (common.Address, error) {
- return _RewardsCoordinator.Contract.ClaimerFor(&_RewardsCoordinator.CallOpts, arg0)
+// Solidity: function claimerFor(address earner) view returns(address claimer)
+func (_RewardsCoordinator *RewardsCoordinatorSession) ClaimerFor(earner common.Address) (common.Address, error) {
+ return _RewardsCoordinator.Contract.ClaimerFor(&_RewardsCoordinator.CallOpts, earner)
}
// ClaimerFor is a free data retrieval call binding the contract method 0x2b9f64a4.
//
-// Solidity: function claimerFor(address ) view returns(address)
-func (_RewardsCoordinator *RewardsCoordinatorCallerSession) ClaimerFor(arg0 common.Address) (common.Address, error) {
- return _RewardsCoordinator.Contract.ClaimerFor(&_RewardsCoordinator.CallOpts, arg0)
+// Solidity: function claimerFor(address earner) view returns(address claimer)
+func (_RewardsCoordinator *RewardsCoordinatorCallerSession) ClaimerFor(earner common.Address) (common.Address, error) {
+ return _RewardsCoordinator.Contract.ClaimerFor(&_RewardsCoordinator.CallOpts, earner)
}
// CumulativeClaimed is a free data retrieval call binding the contract method 0x865c6953.
//
-// Solidity: function cumulativeClaimed(address , address ) view returns(uint256)
-func (_RewardsCoordinator *RewardsCoordinatorCaller) CumulativeClaimed(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) {
+// Solidity: function cumulativeClaimed(address earner, address token) view returns(uint256 totalClaimed)
+func (_RewardsCoordinator *RewardsCoordinatorCaller) CumulativeClaimed(opts *bind.CallOpts, earner common.Address, token common.Address) (*big.Int, error) {
var out []interface{}
- err := _RewardsCoordinator.contract.Call(opts, &out, "cumulativeClaimed", arg0, arg1)
+ err := _RewardsCoordinator.contract.Call(opts, &out, "cumulativeClaimed", earner, token)
if err != nil {
return *new(*big.Int), err
@@ -624,16 +655,16 @@ func (_RewardsCoordinator *RewardsCoordinatorCaller) CumulativeClaimed(opts *bin
// CumulativeClaimed is a free data retrieval call binding the contract method 0x865c6953.
//
-// Solidity: function cumulativeClaimed(address , address ) view returns(uint256)
-func (_RewardsCoordinator *RewardsCoordinatorSession) CumulativeClaimed(arg0 common.Address, arg1 common.Address) (*big.Int, error) {
- return _RewardsCoordinator.Contract.CumulativeClaimed(&_RewardsCoordinator.CallOpts, arg0, arg1)
+// Solidity: function cumulativeClaimed(address earner, address token) view returns(uint256 totalClaimed)
+func (_RewardsCoordinator *RewardsCoordinatorSession) CumulativeClaimed(earner common.Address, token common.Address) (*big.Int, error) {
+ return _RewardsCoordinator.Contract.CumulativeClaimed(&_RewardsCoordinator.CallOpts, earner, token)
}
// CumulativeClaimed is a free data retrieval call binding the contract method 0x865c6953.
//
-// Solidity: function cumulativeClaimed(address , address ) view returns(uint256)
-func (_RewardsCoordinator *RewardsCoordinatorCallerSession) CumulativeClaimed(arg0 common.Address, arg1 common.Address) (*big.Int, error) {
- return _RewardsCoordinator.Contract.CumulativeClaimed(&_RewardsCoordinator.CallOpts, arg0, arg1)
+// Solidity: function cumulativeClaimed(address earner, address token) view returns(uint256 totalClaimed)
+func (_RewardsCoordinator *RewardsCoordinatorCallerSession) CumulativeClaimed(earner common.Address, token common.Address) (*big.Int, error) {
+ return _RewardsCoordinator.Contract.CumulativeClaimed(&_RewardsCoordinator.CallOpts, earner, token)
}
// CurrRewardsCalculationEndTimestamp is a free data retrieval call binding the contract method 0x4d18cc35.
@@ -729,49 +760,18 @@ func (_RewardsCoordinator *RewardsCoordinatorCallerSession) DelegationManager()
return _RewardsCoordinator.Contract.DelegationManager(&_RewardsCoordinator.CallOpts)
}
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
-//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_RewardsCoordinator *RewardsCoordinatorCaller) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) {
- var out []interface{}
- err := _RewardsCoordinator.contract.Call(opts, &out, "domainSeparator")
-
- if err != nil {
- return *new([32]byte), err
- }
-
- out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
-
- return out0, err
-
-}
-
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
-//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_RewardsCoordinator *RewardsCoordinatorSession) DomainSeparator() ([32]byte, error) {
- return _RewardsCoordinator.Contract.DomainSeparator(&_RewardsCoordinator.CallOpts)
-}
-
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
-//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_RewardsCoordinator *RewardsCoordinatorCallerSession) DomainSeparator() ([32]byte, error) {
- return _RewardsCoordinator.Contract.DomainSeparator(&_RewardsCoordinator.CallOpts)
-}
-
// GetCurrentClaimableDistributionRoot is a free data retrieval call binding the contract method 0x0e9a53cf.
//
// Solidity: function getCurrentClaimableDistributionRoot() view returns((bytes32,uint32,uint32,bool))
-func (_RewardsCoordinator *RewardsCoordinatorCaller) GetCurrentClaimableDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorDistributionRoot, error) {
+func (_RewardsCoordinator *RewardsCoordinatorCaller) GetCurrentClaimableDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorTypesDistributionRoot, error) {
var out []interface{}
err := _RewardsCoordinator.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
@@ -780,29 +780,29 @@ func (_RewardsCoordinator *RewardsCoordinatorCaller) GetCurrentClaimableDistribu
// GetCurrentClaimableDistributionRoot is a free data retrieval call binding the contract method 0x0e9a53cf.
//
// Solidity: function getCurrentClaimableDistributionRoot() view returns((bytes32,uint32,uint32,bool))
-func (_RewardsCoordinator *RewardsCoordinatorSession) GetCurrentClaimableDistributionRoot() (IRewardsCoordinatorDistributionRoot, error) {
+func (_RewardsCoordinator *RewardsCoordinatorSession) GetCurrentClaimableDistributionRoot() (IRewardsCoordinatorTypesDistributionRoot, error) {
return _RewardsCoordinator.Contract.GetCurrentClaimableDistributionRoot(&_RewardsCoordinator.CallOpts)
}
// GetCurrentClaimableDistributionRoot is a free data retrieval call binding the contract method 0x0e9a53cf.
//
// Solidity: function getCurrentClaimableDistributionRoot() view returns((bytes32,uint32,uint32,bool))
-func (_RewardsCoordinator *RewardsCoordinatorCallerSession) GetCurrentClaimableDistributionRoot() (IRewardsCoordinatorDistributionRoot, error) {
+func (_RewardsCoordinator *RewardsCoordinatorCallerSession) GetCurrentClaimableDistributionRoot() (IRewardsCoordinatorTypesDistributionRoot, error) {
return _RewardsCoordinator.Contract.GetCurrentClaimableDistributionRoot(&_RewardsCoordinator.CallOpts)
}
// GetCurrentDistributionRoot is a free data retrieval call binding the contract method 0x9be3d4e4.
//
// Solidity: function getCurrentDistributionRoot() view returns((bytes32,uint32,uint32,bool))
-func (_RewardsCoordinator *RewardsCoordinatorCaller) GetCurrentDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorDistributionRoot, error) {
+func (_RewardsCoordinator *RewardsCoordinatorCaller) GetCurrentDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorTypesDistributionRoot, error) {
var out []interface{}
err := _RewardsCoordinator.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
@@ -811,29 +811,29 @@ func (_RewardsCoordinator *RewardsCoordinatorCaller) GetCurrentDistributionRoot(
// GetCurrentDistributionRoot is a free data retrieval call binding the contract method 0x9be3d4e4.
//
// Solidity: function getCurrentDistributionRoot() view returns((bytes32,uint32,uint32,bool))
-func (_RewardsCoordinator *RewardsCoordinatorSession) GetCurrentDistributionRoot() (IRewardsCoordinatorDistributionRoot, error) {
+func (_RewardsCoordinator *RewardsCoordinatorSession) GetCurrentDistributionRoot() (IRewardsCoordinatorTypesDistributionRoot, error) {
return _RewardsCoordinator.Contract.GetCurrentDistributionRoot(&_RewardsCoordinator.CallOpts)
}
// GetCurrentDistributionRoot is a free data retrieval call binding the contract method 0x9be3d4e4.
//
// Solidity: function getCurrentDistributionRoot() view returns((bytes32,uint32,uint32,bool))
-func (_RewardsCoordinator *RewardsCoordinatorCallerSession) GetCurrentDistributionRoot() (IRewardsCoordinatorDistributionRoot, error) {
+func (_RewardsCoordinator *RewardsCoordinatorCallerSession) GetCurrentDistributionRoot() (IRewardsCoordinatorTypesDistributionRoot, error) {
return _RewardsCoordinator.Contract.GetCurrentDistributionRoot(&_RewardsCoordinator.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 (_RewardsCoordinator *RewardsCoordinatorCaller) GetDistributionRootAtIndex(opts *bind.CallOpts, index *big.Int) (IRewardsCoordinatorDistributionRoot, error) {
+func (_RewardsCoordinator *RewardsCoordinatorCaller) GetDistributionRootAtIndex(opts *bind.CallOpts, index *big.Int) (IRewardsCoordinatorTypesDistributionRoot, error) {
var out []interface{}
err := _RewardsCoordinator.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
@@ -842,14 +842,14 @@ func (_RewardsCoordinator *RewardsCoordinatorCaller) GetDistributionRootAtIndex(
// GetDistributionRootAtIndex is a free data retrieval call binding the contract method 0xde02e503.
//
// Solidity: function getDistributionRootAtIndex(uint256 index) view returns((bytes32,uint32,uint32,bool))
-func (_RewardsCoordinator *RewardsCoordinatorSession) GetDistributionRootAtIndex(index *big.Int) (IRewardsCoordinatorDistributionRoot, error) {
+func (_RewardsCoordinator *RewardsCoordinatorSession) GetDistributionRootAtIndex(index *big.Int) (IRewardsCoordinatorTypesDistributionRoot, error) {
return _RewardsCoordinator.Contract.GetDistributionRootAtIndex(&_RewardsCoordinator.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 (_RewardsCoordinator *RewardsCoordinatorCallerSession) GetDistributionRootAtIndex(index *big.Int) (IRewardsCoordinatorDistributionRoot, error) {
+func (_RewardsCoordinator *RewardsCoordinatorCallerSession) GetDistributionRootAtIndex(index *big.Int) (IRewardsCoordinatorTypesDistributionRoot, error) {
return _RewardsCoordinator.Contract.GetDistributionRootAtIndex(&_RewardsCoordinator.CallOpts, index)
}
@@ -979,10 +979,10 @@ func (_RewardsCoordinator *RewardsCoordinatorCallerSession) GetRootIndexFromHash
// IsAVSRewardsSubmissionHash is a free data retrieval call binding the contract method 0x6d21117e.
//
-// Solidity: function isAVSRewardsSubmissionHash(address , bytes32 ) view returns(bool)
-func (_RewardsCoordinator *RewardsCoordinatorCaller) IsAVSRewardsSubmissionHash(opts *bind.CallOpts, arg0 common.Address, arg1 [32]byte) (bool, error) {
+// Solidity: function isAVSRewardsSubmissionHash(address avs, bytes32 hash) view returns(bool valid)
+func (_RewardsCoordinator *RewardsCoordinatorCaller) IsAVSRewardsSubmissionHash(opts *bind.CallOpts, avs common.Address, hash [32]byte) (bool, error) {
var out []interface{}
- err := _RewardsCoordinator.contract.Call(opts, &out, "isAVSRewardsSubmissionHash", arg0, arg1)
+ err := _RewardsCoordinator.contract.Call(opts, &out, "isAVSRewardsSubmissionHash", avs, hash)
if err != nil {
return *new(bool), err
@@ -996,16 +996,16 @@ func (_RewardsCoordinator *RewardsCoordinatorCaller) IsAVSRewardsSubmissionHash(
// IsAVSRewardsSubmissionHash is a free data retrieval call binding the contract method 0x6d21117e.
//
-// Solidity: function isAVSRewardsSubmissionHash(address , bytes32 ) view returns(bool)
-func (_RewardsCoordinator *RewardsCoordinatorSession) IsAVSRewardsSubmissionHash(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _RewardsCoordinator.Contract.IsAVSRewardsSubmissionHash(&_RewardsCoordinator.CallOpts, arg0, arg1)
+// Solidity: function isAVSRewardsSubmissionHash(address avs, bytes32 hash) view returns(bool valid)
+func (_RewardsCoordinator *RewardsCoordinatorSession) IsAVSRewardsSubmissionHash(avs common.Address, hash [32]byte) (bool, error) {
+ return _RewardsCoordinator.Contract.IsAVSRewardsSubmissionHash(&_RewardsCoordinator.CallOpts, avs, hash)
}
// IsAVSRewardsSubmissionHash is a free data retrieval call binding the contract method 0x6d21117e.
//
-// Solidity: function isAVSRewardsSubmissionHash(address , bytes32 ) view returns(bool)
-func (_RewardsCoordinator *RewardsCoordinatorCallerSession) IsAVSRewardsSubmissionHash(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _RewardsCoordinator.Contract.IsAVSRewardsSubmissionHash(&_RewardsCoordinator.CallOpts, arg0, arg1)
+// Solidity: function isAVSRewardsSubmissionHash(address avs, bytes32 hash) view returns(bool valid)
+func (_RewardsCoordinator *RewardsCoordinatorCallerSession) IsAVSRewardsSubmissionHash(avs common.Address, hash [32]byte) (bool, error) {
+ return _RewardsCoordinator.Contract.IsAVSRewardsSubmissionHash(&_RewardsCoordinator.CallOpts, avs, hash)
}
// IsOperatorDirectedAVSRewardsSubmissionHash is a free data retrieval call binding the contract method 0xed71e6a2.
@@ -1041,10 +1041,10 @@ func (_RewardsCoordinator *RewardsCoordinatorCallerSession) IsOperatorDirectedAV
// IsRewardsForAllSubmitter is a free data retrieval call binding the contract method 0x0018572c.
//
-// Solidity: function isRewardsForAllSubmitter(address ) view returns(bool)
-func (_RewardsCoordinator *RewardsCoordinatorCaller) IsRewardsForAllSubmitter(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
+// Solidity: function isRewardsForAllSubmitter(address submitter) view returns(bool valid)
+func (_RewardsCoordinator *RewardsCoordinatorCaller) IsRewardsForAllSubmitter(opts *bind.CallOpts, submitter common.Address) (bool, error) {
var out []interface{}
- err := _RewardsCoordinator.contract.Call(opts, &out, "isRewardsForAllSubmitter", arg0)
+ err := _RewardsCoordinator.contract.Call(opts, &out, "isRewardsForAllSubmitter", submitter)
if err != nil {
return *new(bool), err
@@ -1058,24 +1058,24 @@ func (_RewardsCoordinator *RewardsCoordinatorCaller) IsRewardsForAllSubmitter(op
// IsRewardsForAllSubmitter is a free data retrieval call binding the contract method 0x0018572c.
//
-// Solidity: function isRewardsForAllSubmitter(address ) view returns(bool)
-func (_RewardsCoordinator *RewardsCoordinatorSession) IsRewardsForAllSubmitter(arg0 common.Address) (bool, error) {
- return _RewardsCoordinator.Contract.IsRewardsForAllSubmitter(&_RewardsCoordinator.CallOpts, arg0)
+// Solidity: function isRewardsForAllSubmitter(address submitter) view returns(bool valid)
+func (_RewardsCoordinator *RewardsCoordinatorSession) IsRewardsForAllSubmitter(submitter common.Address) (bool, error) {
+ return _RewardsCoordinator.Contract.IsRewardsForAllSubmitter(&_RewardsCoordinator.CallOpts, submitter)
}
// IsRewardsForAllSubmitter is a free data retrieval call binding the contract method 0x0018572c.
//
-// Solidity: function isRewardsForAllSubmitter(address ) view returns(bool)
-func (_RewardsCoordinator *RewardsCoordinatorCallerSession) IsRewardsForAllSubmitter(arg0 common.Address) (bool, error) {
- return _RewardsCoordinator.Contract.IsRewardsForAllSubmitter(&_RewardsCoordinator.CallOpts, arg0)
+// Solidity: function isRewardsForAllSubmitter(address submitter) view returns(bool valid)
+func (_RewardsCoordinator *RewardsCoordinatorCallerSession) IsRewardsForAllSubmitter(submitter common.Address) (bool, error) {
+ return _RewardsCoordinator.Contract.IsRewardsForAllSubmitter(&_RewardsCoordinator.CallOpts, submitter)
}
// IsRewardsSubmissionForAllEarnersHash is a free data retrieval call binding the contract method 0xaebd8bae.
//
-// Solidity: function isRewardsSubmissionForAllEarnersHash(address , bytes32 ) view returns(bool)
-func (_RewardsCoordinator *RewardsCoordinatorCaller) IsRewardsSubmissionForAllEarnersHash(opts *bind.CallOpts, arg0 common.Address, arg1 [32]byte) (bool, error) {
+// Solidity: function isRewardsSubmissionForAllEarnersHash(address avs, bytes32 hash) view returns(bool valid)
+func (_RewardsCoordinator *RewardsCoordinatorCaller) IsRewardsSubmissionForAllEarnersHash(opts *bind.CallOpts, avs common.Address, hash [32]byte) (bool, error) {
var out []interface{}
- err := _RewardsCoordinator.contract.Call(opts, &out, "isRewardsSubmissionForAllEarnersHash", arg0, arg1)
+ err := _RewardsCoordinator.contract.Call(opts, &out, "isRewardsSubmissionForAllEarnersHash", avs, hash)
if err != nil {
return *new(bool), err
@@ -1089,24 +1089,24 @@ func (_RewardsCoordinator *RewardsCoordinatorCaller) IsRewardsSubmissionForAllEa
// IsRewardsSubmissionForAllEarnersHash is a free data retrieval call binding the contract method 0xaebd8bae.
//
-// Solidity: function isRewardsSubmissionForAllEarnersHash(address , bytes32 ) view returns(bool)
-func (_RewardsCoordinator *RewardsCoordinatorSession) IsRewardsSubmissionForAllEarnersHash(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _RewardsCoordinator.Contract.IsRewardsSubmissionForAllEarnersHash(&_RewardsCoordinator.CallOpts, arg0, arg1)
+// Solidity: function isRewardsSubmissionForAllEarnersHash(address avs, bytes32 hash) view returns(bool valid)
+func (_RewardsCoordinator *RewardsCoordinatorSession) IsRewardsSubmissionForAllEarnersHash(avs common.Address, hash [32]byte) (bool, error) {
+ return _RewardsCoordinator.Contract.IsRewardsSubmissionForAllEarnersHash(&_RewardsCoordinator.CallOpts, avs, hash)
}
// IsRewardsSubmissionForAllEarnersHash is a free data retrieval call binding the contract method 0xaebd8bae.
//
-// Solidity: function isRewardsSubmissionForAllEarnersHash(address , bytes32 ) view returns(bool)
-func (_RewardsCoordinator *RewardsCoordinatorCallerSession) IsRewardsSubmissionForAllEarnersHash(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _RewardsCoordinator.Contract.IsRewardsSubmissionForAllEarnersHash(&_RewardsCoordinator.CallOpts, arg0, arg1)
+// Solidity: function isRewardsSubmissionForAllEarnersHash(address avs, bytes32 hash) view returns(bool valid)
+func (_RewardsCoordinator *RewardsCoordinatorCallerSession) IsRewardsSubmissionForAllEarnersHash(avs common.Address, hash [32]byte) (bool, error) {
+ return _RewardsCoordinator.Contract.IsRewardsSubmissionForAllEarnersHash(&_RewardsCoordinator.CallOpts, avs, hash)
}
// IsRewardsSubmissionForAllHash is a free data retrieval call binding the contract method 0xc46db606.
//
-// Solidity: function isRewardsSubmissionForAllHash(address , bytes32 ) view returns(bool)
-func (_RewardsCoordinator *RewardsCoordinatorCaller) IsRewardsSubmissionForAllHash(opts *bind.CallOpts, arg0 common.Address, arg1 [32]byte) (bool, error) {
+// Solidity: function isRewardsSubmissionForAllHash(address avs, bytes32 hash) view returns(bool valid)
+func (_RewardsCoordinator *RewardsCoordinatorCaller) IsRewardsSubmissionForAllHash(opts *bind.CallOpts, avs common.Address, hash [32]byte) (bool, error) {
var out []interface{}
- err := _RewardsCoordinator.contract.Call(opts, &out, "isRewardsSubmissionForAllHash", arg0, arg1)
+ err := _RewardsCoordinator.contract.Call(opts, &out, "isRewardsSubmissionForAllHash", avs, hash)
if err != nil {
return *new(bool), err
@@ -1120,16 +1120,16 @@ func (_RewardsCoordinator *RewardsCoordinatorCaller) IsRewardsSubmissionForAllHa
// IsRewardsSubmissionForAllHash is a free data retrieval call binding the contract method 0xc46db606.
//
-// Solidity: function isRewardsSubmissionForAllHash(address , bytes32 ) view returns(bool)
-func (_RewardsCoordinator *RewardsCoordinatorSession) IsRewardsSubmissionForAllHash(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _RewardsCoordinator.Contract.IsRewardsSubmissionForAllHash(&_RewardsCoordinator.CallOpts, arg0, arg1)
+// Solidity: function isRewardsSubmissionForAllHash(address avs, bytes32 hash) view returns(bool valid)
+func (_RewardsCoordinator *RewardsCoordinatorSession) IsRewardsSubmissionForAllHash(avs common.Address, hash [32]byte) (bool, error) {
+ return _RewardsCoordinator.Contract.IsRewardsSubmissionForAllHash(&_RewardsCoordinator.CallOpts, avs, hash)
}
// IsRewardsSubmissionForAllHash is a free data retrieval call binding the contract method 0xc46db606.
//
-// Solidity: function isRewardsSubmissionForAllHash(address , bytes32 ) view returns(bool)
-func (_RewardsCoordinator *RewardsCoordinatorCallerSession) IsRewardsSubmissionForAllHash(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _RewardsCoordinator.Contract.IsRewardsSubmissionForAllHash(&_RewardsCoordinator.CallOpts, arg0, arg1)
+// Solidity: function isRewardsSubmissionForAllHash(address avs, bytes32 hash) view returns(bool valid)
+func (_RewardsCoordinator *RewardsCoordinatorCallerSession) IsRewardsSubmissionForAllHash(avs common.Address, hash [32]byte) (bool, error) {
+ return _RewardsCoordinator.Contract.IsRewardsSubmissionForAllHash(&_RewardsCoordinator.CallOpts, avs, hash)
}
// Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
@@ -1256,6 +1256,37 @@ func (_RewardsCoordinator *RewardsCoordinatorCallerSession) PauserRegistry() (co
return _RewardsCoordinator.Contract.PauserRegistry(&_RewardsCoordinator.CallOpts)
}
+// PermissionController is a free data retrieval call binding the contract method 0x4657e26a.
+//
+// Solidity: function permissionController() view returns(address)
+func (_RewardsCoordinator *RewardsCoordinatorCaller) PermissionController(opts *bind.CallOpts) (common.Address, error) {
+ var out []interface{}
+ err := _RewardsCoordinator.contract.Call(opts, &out, "permissionController")
+
+ if err != nil {
+ return *new(common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
+
+ return out0, err
+
+}
+
+// PermissionController is a free data retrieval call binding the contract method 0x4657e26a.
+//
+// Solidity: function permissionController() view returns(address)
+func (_RewardsCoordinator *RewardsCoordinatorSession) PermissionController() (common.Address, error) {
+ return _RewardsCoordinator.Contract.PermissionController(&_RewardsCoordinator.CallOpts)
+}
+
+// PermissionController is a free data retrieval call binding the contract method 0x4657e26a.
+//
+// Solidity: function permissionController() view returns(address)
+func (_RewardsCoordinator *RewardsCoordinatorCallerSession) PermissionController() (common.Address, error) {
+ return _RewardsCoordinator.Contract.PermissionController(&_RewardsCoordinator.CallOpts)
+}
+
// RewardsUpdater is a free data retrieval call binding the contract method 0xfbf1e2c1.
//
// Solidity: function rewardsUpdater() view returns(address)
@@ -1320,10 +1351,10 @@ func (_RewardsCoordinator *RewardsCoordinatorCallerSession) StrategyManager() (c
// SubmissionNonce is a free data retrieval call binding the contract method 0xbb7e451f.
//
-// Solidity: function submissionNonce(address ) view returns(uint256)
-func (_RewardsCoordinator *RewardsCoordinatorCaller) SubmissionNonce(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
+// Solidity: function submissionNonce(address avs) view returns(uint256 nonce)
+func (_RewardsCoordinator *RewardsCoordinatorCaller) SubmissionNonce(opts *bind.CallOpts, avs common.Address) (*big.Int, error) {
var out []interface{}
- err := _RewardsCoordinator.contract.Call(opts, &out, "submissionNonce", arg0)
+ err := _RewardsCoordinator.contract.Call(opts, &out, "submissionNonce", avs)
if err != nil {
return *new(*big.Int), err
@@ -1337,99 +1368,99 @@ func (_RewardsCoordinator *RewardsCoordinatorCaller) SubmissionNonce(opts *bind.
// SubmissionNonce is a free data retrieval call binding the contract method 0xbb7e451f.
//
-// Solidity: function submissionNonce(address ) view returns(uint256)
-func (_RewardsCoordinator *RewardsCoordinatorSession) SubmissionNonce(arg0 common.Address) (*big.Int, error) {
- return _RewardsCoordinator.Contract.SubmissionNonce(&_RewardsCoordinator.CallOpts, arg0)
+// Solidity: function submissionNonce(address avs) view returns(uint256 nonce)
+func (_RewardsCoordinator *RewardsCoordinatorSession) SubmissionNonce(avs common.Address) (*big.Int, error) {
+ return _RewardsCoordinator.Contract.SubmissionNonce(&_RewardsCoordinator.CallOpts, avs)
}
// SubmissionNonce is a free data retrieval call binding the contract method 0xbb7e451f.
//
-// Solidity: function submissionNonce(address ) view returns(uint256)
-func (_RewardsCoordinator *RewardsCoordinatorCallerSession) SubmissionNonce(arg0 common.Address) (*big.Int, error) {
- return _RewardsCoordinator.Contract.SubmissionNonce(&_RewardsCoordinator.CallOpts, arg0)
+// Solidity: function submissionNonce(address avs) view returns(uint256 nonce)
+func (_RewardsCoordinator *RewardsCoordinatorCallerSession) SubmissionNonce(avs common.Address) (*big.Int, error) {
+ return _RewardsCoordinator.Contract.SubmissionNonce(&_RewardsCoordinator.CallOpts, avs)
}
// CreateAVSRewardsSubmission is a paid mutator transaction binding the contract method 0xfce36c7d.
//
// Solidity: function createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns()
-func (_RewardsCoordinator *RewardsCoordinatorTransactor) CreateAVSRewardsSubmission(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinator *RewardsCoordinatorTransactor) CreateAVSRewardsSubmission(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinator.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 (_RewardsCoordinator *RewardsCoordinatorSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinator *RewardsCoordinatorSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinator.Contract.CreateAVSRewardsSubmission(&_RewardsCoordinator.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 (_RewardsCoordinator *RewardsCoordinatorTransactorSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinator *RewardsCoordinatorTransactorSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinator.Contract.CreateAVSRewardsSubmission(&_RewardsCoordinator.TransactOpts, rewardsSubmissions)
}
// CreateOperatorDirectedAVSRewardsSubmission is a paid mutator transaction binding the contract method 0x9cb9a5fa.
//
// Solidity: function createOperatorDirectedAVSRewardsSubmission(address avs, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[] operatorDirectedRewardsSubmissions) returns()
-func (_RewardsCoordinator *RewardsCoordinatorTransactor) CreateOperatorDirectedAVSRewardsSubmission(opts *bind.TransactOpts, avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorOperatorDirectedRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinator *RewardsCoordinatorTransactor) CreateOperatorDirectedAVSRewardsSubmission(opts *bind.TransactOpts, avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinator.contract.Transact(opts, "createOperatorDirectedAVSRewardsSubmission", avs, operatorDirectedRewardsSubmissions)
}
// CreateOperatorDirectedAVSRewardsSubmission is a paid mutator transaction binding the contract method 0x9cb9a5fa.
//
// Solidity: function createOperatorDirectedAVSRewardsSubmission(address avs, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[] operatorDirectedRewardsSubmissions) returns()
-func (_RewardsCoordinator *RewardsCoordinatorSession) CreateOperatorDirectedAVSRewardsSubmission(avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorOperatorDirectedRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinator *RewardsCoordinatorSession) CreateOperatorDirectedAVSRewardsSubmission(avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinator.Contract.CreateOperatorDirectedAVSRewardsSubmission(&_RewardsCoordinator.TransactOpts, avs, operatorDirectedRewardsSubmissions)
}
// CreateOperatorDirectedAVSRewardsSubmission is a paid mutator transaction binding the contract method 0x9cb9a5fa.
//
// Solidity: function createOperatorDirectedAVSRewardsSubmission(address avs, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[] operatorDirectedRewardsSubmissions) returns()
-func (_RewardsCoordinator *RewardsCoordinatorTransactorSession) CreateOperatorDirectedAVSRewardsSubmission(avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorOperatorDirectedRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinator *RewardsCoordinatorTransactorSession) CreateOperatorDirectedAVSRewardsSubmission(avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinator.Contract.CreateOperatorDirectedAVSRewardsSubmission(&_RewardsCoordinator.TransactOpts, avs, operatorDirectedRewardsSubmissions)
}
// CreateRewardsForAllEarners is a paid mutator transaction binding the contract method 0xff9f6cce.
//
// Solidity: function createRewardsForAllEarners(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns()
-func (_RewardsCoordinator *RewardsCoordinatorTransactor) CreateRewardsForAllEarners(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinator *RewardsCoordinatorTransactor) CreateRewardsForAllEarners(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinator.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 (_RewardsCoordinator *RewardsCoordinatorSession) CreateRewardsForAllEarners(rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinator *RewardsCoordinatorSession) CreateRewardsForAllEarners(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinator.Contract.CreateRewardsForAllEarners(&_RewardsCoordinator.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 (_RewardsCoordinator *RewardsCoordinatorTransactorSession) CreateRewardsForAllEarners(rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinator *RewardsCoordinatorTransactorSession) CreateRewardsForAllEarners(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinator.Contract.CreateRewardsForAllEarners(&_RewardsCoordinator.TransactOpts, rewardsSubmissions)
}
// CreateRewardsForAllSubmission is a paid mutator transaction binding the contract method 0x36af41fa.
//
// Solidity: function createRewardsForAllSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns()
-func (_RewardsCoordinator *RewardsCoordinatorTransactor) CreateRewardsForAllSubmission(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinator *RewardsCoordinatorTransactor) CreateRewardsForAllSubmission(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinator.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)[] rewardsSubmissions) returns()
-func (_RewardsCoordinator *RewardsCoordinatorSession) CreateRewardsForAllSubmission(rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinator *RewardsCoordinatorSession) CreateRewardsForAllSubmission(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinator.Contract.CreateRewardsForAllSubmission(&_RewardsCoordinator.TransactOpts, rewardsSubmissions)
}
// CreateRewardsForAllSubmission is a paid mutator transaction binding the contract method 0x36af41fa.
//
// Solidity: function createRewardsForAllSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns()
-func (_RewardsCoordinator *RewardsCoordinatorTransactorSession) CreateRewardsForAllSubmission(rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinator *RewardsCoordinatorTransactorSession) CreateRewardsForAllSubmission(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinator.Contract.CreateRewardsForAllSubmission(&_RewardsCoordinator.TransactOpts, rewardsSubmissions)
}
@@ -1454,25 +1485,25 @@ func (_RewardsCoordinator *RewardsCoordinatorTransactorSession) DisableRoot(root
return _RewardsCoordinator.Contract.DisableRoot(&_RewardsCoordinator.TransactOpts, rootIndex)
}
-// Initialize is a paid mutator transaction binding the contract method 0xd4540a55.
+// Initialize is a paid mutator transaction binding the contract method 0xf6efbb59.
//
-// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _defaultSplitBips) returns()
-func (_RewardsCoordinator *RewardsCoordinatorTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _defaultSplitBips uint16) (*types.Transaction, error) {
- return _RewardsCoordinator.contract.Transact(opts, "initialize", initialOwner, _pauserRegistry, initialPausedStatus, _rewardsUpdater, _activationDelay, _defaultSplitBips)
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _defaultSplitBips) returns()
+func (_RewardsCoordinator *RewardsCoordinatorTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _defaultSplitBips uint16) (*types.Transaction, error) {
+ return _RewardsCoordinator.contract.Transact(opts, "initialize", initialOwner, initialPausedStatus, _rewardsUpdater, _activationDelay, _defaultSplitBips)
}
-// Initialize is a paid mutator transaction binding the contract method 0xd4540a55.
+// Initialize is a paid mutator transaction binding the contract method 0xf6efbb59.
//
-// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _defaultSplitBips) returns()
-func (_RewardsCoordinator *RewardsCoordinatorSession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _defaultSplitBips uint16) (*types.Transaction, error) {
- return _RewardsCoordinator.Contract.Initialize(&_RewardsCoordinator.TransactOpts, initialOwner, _pauserRegistry, initialPausedStatus, _rewardsUpdater, _activationDelay, _defaultSplitBips)
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _defaultSplitBips) returns()
+func (_RewardsCoordinator *RewardsCoordinatorSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _defaultSplitBips uint16) (*types.Transaction, error) {
+ return _RewardsCoordinator.Contract.Initialize(&_RewardsCoordinator.TransactOpts, initialOwner, initialPausedStatus, _rewardsUpdater, _activationDelay, _defaultSplitBips)
}
-// Initialize is a paid mutator transaction binding the contract method 0xd4540a55.
+// Initialize is a paid mutator transaction binding the contract method 0xf6efbb59.
//
-// Solidity: function initialize(address initialOwner, address _pauserRegistry, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _defaultSplitBips) returns()
-func (_RewardsCoordinator *RewardsCoordinatorTransactorSession) Initialize(initialOwner common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _defaultSplitBips uint16) (*types.Transaction, error) {
- return _RewardsCoordinator.Contract.Initialize(&_RewardsCoordinator.TransactOpts, initialOwner, _pauserRegistry, initialPausedStatus, _rewardsUpdater, _activationDelay, _defaultSplitBips)
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _defaultSplitBips) returns()
+func (_RewardsCoordinator *RewardsCoordinatorTransactorSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _defaultSplitBips uint16) (*types.Transaction, error) {
+ return _RewardsCoordinator.Contract.Initialize(&_RewardsCoordinator.TransactOpts, initialOwner, initialPausedStatus, _rewardsUpdater, _activationDelay, _defaultSplitBips)
}
// Pause is a paid mutator transaction binding the contract method 0x136439dd.
@@ -1520,42 +1551,42 @@ func (_RewardsCoordinator *RewardsCoordinatorTransactorSession) PauseAll() (*typ
// ProcessClaim is a paid mutator transaction binding the contract method 0x3ccc861d.
//
// Solidity: function processClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]) claim, address recipient) returns()
-func (_RewardsCoordinator *RewardsCoordinatorTransactor) ProcessClaim(opts *bind.TransactOpts, claim IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
+func (_RewardsCoordinator *RewardsCoordinatorTransactor) ProcessClaim(opts *bind.TransactOpts, claim IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
return _RewardsCoordinator.contract.Transact(opts, "processClaim", claim, recipient)
}
// ProcessClaim is a paid mutator transaction binding the contract method 0x3ccc861d.
//
// Solidity: function processClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]) claim, address recipient) returns()
-func (_RewardsCoordinator *RewardsCoordinatorSession) ProcessClaim(claim IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
+func (_RewardsCoordinator *RewardsCoordinatorSession) ProcessClaim(claim IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
return _RewardsCoordinator.Contract.ProcessClaim(&_RewardsCoordinator.TransactOpts, claim, recipient)
}
// ProcessClaim is a paid mutator transaction binding the contract method 0x3ccc861d.
//
// Solidity: function processClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]) claim, address recipient) returns()
-func (_RewardsCoordinator *RewardsCoordinatorTransactorSession) ProcessClaim(claim IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
+func (_RewardsCoordinator *RewardsCoordinatorTransactorSession) ProcessClaim(claim IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
return _RewardsCoordinator.Contract.ProcessClaim(&_RewardsCoordinator.TransactOpts, claim, recipient)
}
// ProcessClaims is a paid mutator transaction binding the contract method 0x4596021c.
//
// Solidity: function processClaims((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[])[] claims, address recipient) returns()
-func (_RewardsCoordinator *RewardsCoordinatorTransactor) ProcessClaims(opts *bind.TransactOpts, claims []IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
+func (_RewardsCoordinator *RewardsCoordinatorTransactor) ProcessClaims(opts *bind.TransactOpts, claims []IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
return _RewardsCoordinator.contract.Transact(opts, "processClaims", claims, recipient)
}
// ProcessClaims is a paid mutator transaction binding the contract method 0x4596021c.
//
// Solidity: function processClaims((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[])[] claims, address recipient) returns()
-func (_RewardsCoordinator *RewardsCoordinatorSession) ProcessClaims(claims []IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
+func (_RewardsCoordinator *RewardsCoordinatorSession) ProcessClaims(claims []IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
return _RewardsCoordinator.Contract.ProcessClaims(&_RewardsCoordinator.TransactOpts, claims, recipient)
}
// ProcessClaims is a paid mutator transaction binding the contract method 0x4596021c.
//
// Solidity: function processClaims((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[])[] claims, address recipient) returns()
-func (_RewardsCoordinator *RewardsCoordinatorTransactorSession) ProcessClaims(claims []IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
+func (_RewardsCoordinator *RewardsCoordinatorTransactorSession) ProcessClaims(claims []IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
return _RewardsCoordinator.Contract.ProcessClaims(&_RewardsCoordinator.TransactOpts, claims, recipient)
}
@@ -1622,6 +1653,27 @@ func (_RewardsCoordinator *RewardsCoordinatorTransactorSession) SetClaimerFor(cl
return _RewardsCoordinator.Contract.SetClaimerFor(&_RewardsCoordinator.TransactOpts, claimer)
}
+// SetClaimerFor0 is a paid mutator transaction binding the contract method 0xf22cef85.
+//
+// Solidity: function setClaimerFor(address earner, address claimer) returns()
+func (_RewardsCoordinator *RewardsCoordinatorTransactor) SetClaimerFor0(opts *bind.TransactOpts, earner common.Address, claimer common.Address) (*types.Transaction, error) {
+ return _RewardsCoordinator.contract.Transact(opts, "setClaimerFor0", earner, claimer)
+}
+
+// SetClaimerFor0 is a paid mutator transaction binding the contract method 0xf22cef85.
+//
+// Solidity: function setClaimerFor(address earner, address claimer) returns()
+func (_RewardsCoordinator *RewardsCoordinatorSession) SetClaimerFor0(earner common.Address, claimer common.Address) (*types.Transaction, error) {
+ return _RewardsCoordinator.Contract.SetClaimerFor0(&_RewardsCoordinator.TransactOpts, earner, claimer)
+}
+
+// SetClaimerFor0 is a paid mutator transaction binding the contract method 0xf22cef85.
+//
+// Solidity: function setClaimerFor(address earner, address claimer) returns()
+func (_RewardsCoordinator *RewardsCoordinatorTransactorSession) SetClaimerFor0(earner common.Address, claimer common.Address) (*types.Transaction, error) {
+ return _RewardsCoordinator.Contract.SetClaimerFor0(&_RewardsCoordinator.TransactOpts, earner, claimer)
+}
+
// SetDefaultOperatorSplit is a paid mutator transaction binding the contract method 0xa50a1d9c.
//
// Solidity: function setDefaultOperatorSplit(uint16 split) returns()
@@ -1685,27 +1737,6 @@ func (_RewardsCoordinator *RewardsCoordinatorTransactorSession) SetOperatorPISpl
return _RewardsCoordinator.Contract.SetOperatorPISplit(&_RewardsCoordinator.TransactOpts, operator, split)
}
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_RewardsCoordinator *RewardsCoordinatorTransactor) SetPauserRegistry(opts *bind.TransactOpts, newPauserRegistry common.Address) (*types.Transaction, error) {
- return _RewardsCoordinator.contract.Transact(opts, "setPauserRegistry", newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_RewardsCoordinator *RewardsCoordinatorSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _RewardsCoordinator.Contract.SetPauserRegistry(&_RewardsCoordinator.TransactOpts, newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_RewardsCoordinator *RewardsCoordinatorTransactorSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _RewardsCoordinator.Contract.SetPauserRegistry(&_RewardsCoordinator.TransactOpts, newPauserRegistry)
-}
-
// SetRewardsForAllSubmitter is a paid mutator transaction binding the contract method 0x0eb38345.
//
// Solidity: function setRewardsForAllSubmitter(address _submitter, bool _newValue) returns()
@@ -1883,7 +1914,7 @@ type RewardsCoordinatorAVSRewardsSubmissionCreated struct {
Avs common.Address
SubmissionNonce *big.Int
RewardsSubmissionHash [32]byte
- RewardsSubmission IRewardsCoordinatorRewardsSubmission
+ RewardsSubmission IRewardsCoordinatorTypesRewardsSubmission
Raw types.Log // Blockchain specific contextual infos
}
@@ -3085,7 +3116,7 @@ type RewardsCoordinatorOperatorDirectedAVSRewardsSubmissionCreated struct {
Avs common.Address
OperatorDirectedRewardsSubmissionHash [32]byte
SubmissionNonce *big.Int
- OperatorDirectedRewardsSubmission IRewardsCoordinatorOperatorDirectedRewardsSubmission
+ OperatorDirectedRewardsSubmission IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission
Raw types.Log // Blockchain specific contextual infos
}
@@ -3630,141 +3661,6 @@ func (_RewardsCoordinator *RewardsCoordinatorFilterer) ParsePaused(log types.Log
return event, nil
}
-// RewardsCoordinatorPauserRegistrySetIterator is returned from FilterPauserRegistrySet and is used to iterate over the raw logs and unpacked data for PauserRegistrySet events raised by the RewardsCoordinator contract.
-type RewardsCoordinatorPauserRegistrySetIterator struct {
- Event *RewardsCoordinatorPauserRegistrySet // 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 *RewardsCoordinatorPauserRegistrySetIterator) 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(RewardsCoordinatorPauserRegistrySet)
- 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(RewardsCoordinatorPauserRegistrySet)
- 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 *RewardsCoordinatorPauserRegistrySetIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *RewardsCoordinatorPauserRegistrySetIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// RewardsCoordinatorPauserRegistrySet represents a PauserRegistrySet event raised by the RewardsCoordinator contract.
-type RewardsCoordinatorPauserRegistrySet struct {
- PauserRegistry common.Address
- NewPauserRegistry common.Address
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterPauserRegistrySet is a free log retrieval operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_RewardsCoordinator *RewardsCoordinatorFilterer) FilterPauserRegistrySet(opts *bind.FilterOpts) (*RewardsCoordinatorPauserRegistrySetIterator, error) {
-
- logs, sub, err := _RewardsCoordinator.contract.FilterLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return &RewardsCoordinatorPauserRegistrySetIterator{contract: _RewardsCoordinator.contract, event: "PauserRegistrySet", logs: logs, sub: sub}, nil
-}
-
-// WatchPauserRegistrySet is a free log subscription operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_RewardsCoordinator *RewardsCoordinatorFilterer) WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *RewardsCoordinatorPauserRegistrySet) (event.Subscription, error) {
-
- logs, sub, err := _RewardsCoordinator.contract.WatchLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(RewardsCoordinatorPauserRegistrySet)
- if err := _RewardsCoordinator.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return err
- }
- event.Raw = log
-
- select {
- case sink <- event:
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- }
- }), nil
-}
-
-// ParsePauserRegistrySet is a log parse operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_RewardsCoordinator *RewardsCoordinatorFilterer) ParsePauserRegistrySet(log types.Log) (*RewardsCoordinatorPauserRegistrySet, error) {
- event := new(RewardsCoordinatorPauserRegistrySet)
- if err := _RewardsCoordinator.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
// RewardsCoordinatorRewardsClaimedIterator is returned from FilterRewardsClaimed and is used to iterate over the raw logs and unpacked data for RewardsClaimed events raised by the RewardsCoordinator contract.
type RewardsCoordinatorRewardsClaimedIterator struct {
Event *RewardsCoordinatorRewardsClaimed // Event containing the contract specifics and raw log
@@ -4164,7 +4060,7 @@ type RewardsCoordinatorRewardsSubmissionForAllCreated struct {
Submitter common.Address
SubmissionNonce *big.Int
RewardsSubmissionHash [32]byte
- RewardsSubmission IRewardsCoordinatorRewardsSubmission
+ RewardsSubmission IRewardsCoordinatorTypesRewardsSubmission
Raw types.Log // Blockchain specific contextual infos
}
@@ -4327,7 +4223,7 @@ type RewardsCoordinatorRewardsSubmissionForAllEarnersCreated struct {
TokenHopper common.Address
SubmissionNonce *big.Int
RewardsSubmissionHash [32]byte
- RewardsSubmission IRewardsCoordinatorRewardsSubmission
+ RewardsSubmission IRewardsCoordinatorTypesRewardsSubmission
Raw types.Log // Blockchain specific contextual infos
}
diff --git a/pkg/bindings/RewardsCoordinatorStorage/binding.go b/pkg/bindings/RewardsCoordinatorStorage/binding.go
index adaad400b2..de315db87a 100644
--- a/pkg/bindings/RewardsCoordinatorStorage/binding.go
+++ b/pkg/bindings/RewardsCoordinatorStorage/binding.go
@@ -29,71 +29,71 @@ var (
_ = abi.ConvertType
)
-// 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
}
-// IRewardsCoordinatorOperatorDirectedRewardsSubmission is an auto generated low-level Go binding around an user-defined struct.
-type IRewardsCoordinatorOperatorDirectedRewardsSubmission struct {
- StrategiesAndMultipliers []IRewardsCoordinatorStrategyAndMultiplier
+// IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission is an auto generated low-level Go binding around an user-defined struct.
+type IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission struct {
+ StrategiesAndMultipliers []IRewardsCoordinatorTypesStrategyAndMultiplier
Token common.Address
- OperatorRewards []IRewardsCoordinatorOperatorReward
+ OperatorRewards []IRewardsCoordinatorTypesOperatorReward
StartTimestamp uint32
Duration uint32
Description string
}
-// IRewardsCoordinatorOperatorReward is an auto generated low-level Go binding around an user-defined struct.
-type IRewardsCoordinatorOperatorReward struct {
+// IRewardsCoordinatorTypesOperatorReward is an auto generated low-level Go binding around an user-defined struct.
+type IRewardsCoordinatorTypesOperatorReward struct {
Operator common.Address
Amount *big.Int
}
-// 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
}
// RewardsCoordinatorStorageMetaData contains all meta data concerning the RewardsCoordinatorStorage contract.
var RewardsCoordinatorStorageMetaData = &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\":\"\",\"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\":\"createOperatorDirectedAVSRewardsSubmission\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.OperatorDirectedRewardsSubmission[]\",\"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\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllEarners\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"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\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currRewardsCalculationEndTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"defaultOperatorSplitBips\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"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\":\"getOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRootIndexFromHash\",\"inputs\":[{\"name\":\"rootHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isAVSRewardsSubmissionHash\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorDirectedAVSRewardsSubmissionHash\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsForAllSubmitter\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsSubmissionForAllEarnersHash\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsSubmissionForAllHash\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"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\":\"processClaims\",\"inputs\":[{\"name\":\"claims\",\"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\":\"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\":\"setDefaultOperatorSplit\",\"inputs\":[{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsForAllSubmitter\",\"inputs\":[{\"name\":\"_submitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_newValue\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsUpdater\",\"inputs\":[{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"submissionNonce\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"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\":\"DefaultOperatorSplitBipsSet\",\"inputs\":[{\"name\":\"oldDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootDisabled\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootSubmitted\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAVSSplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDirectedAVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorDirectedRewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinator.OperatorDirectedRewardsSubmission\",\"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\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorPISplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsClaimed\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"claimedAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsForAllSubmitterSet\",\"inputs\":[{\"name\":\"rewardsForAllSubmitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"},{\"name\":\"newValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsSubmissionForAllCreated\",\"inputs\":[{\"name\":\"submitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"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\":\"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\":\"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\":\"allocationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIAllocationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"beaconChainETHStrategy\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"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\":\"claimer\",\"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\":\"createOperatorDirectedAVSRewardsSubmission\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllEarners\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createRewardsForAllSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cumulativeClaimed\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"totalClaimed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currRewardsCalculationEndTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"defaultOperatorSplitBips\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"delegationManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disableRoot\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getCurrentClaimableDistributionRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentDistributionRoot\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDistributionRootAtIndex\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.DistributionRoot\",\"components\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"disabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDistributionRootsLength\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRootIndexFromHash\",\"inputs\":[{\"name\":\"rootHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_defaultSplitBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isAVSRewardsSubmissionHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"valid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorDirectedAVSRewardsSubmissionHash\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsForAllSubmitter\",\"inputs\":[{\"name\":\"submitter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"valid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsSubmissionForAllEarnersHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"valid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRewardsSubmissionForAllHash\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"valid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"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\":\"processClaims\",\"inputs\":[{\"name\":\"claims\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.RewardsMerkleClaim[]\",\"components\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"earnerTreeProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"earnerLeaf\",\"type\":\"tuple\",\"internalType\":\"structIRewardsCoordinatorTypes.EarnerTreeMerkleLeaf\",\"components\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"earnerTokenRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"tokenIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"tokenTreeProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"tokenLeaves\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.TokenTreeMerkleLeaf[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"cumulativeEarnings\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rewardsUpdater\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setActivationDelay\",\"inputs\":[{\"name\":\"_activationDelay\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClaimerFor\",\"inputs\":[{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setClaimerFor\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setDefaultOperatorSplit\",\"inputs\":[{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorAVSSplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorPISplit\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"split\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsForAllSubmitter\",\"inputs\":[{\"name\":\"_submitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_newValue\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsUpdater\",\"inputs\":[{\"name\":\"_rewardsUpdater\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"submissionNonce\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"submitRoot\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ActivationDelaySet\",\"inputs\":[{\"name\":\"oldActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"newActivationDelay\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ClaimerForSet\",\"inputs\":[{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldClaimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DefaultOperatorSplitBipsSet\",\"inputs\":[{\"name\":\"oldDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newDefaultOperatorSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootDisabled\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DistributionRootSubmitted\",\"inputs\":[{\"name\":\"rootIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsCalculationEndTimestamp\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorAVSSplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorAVSSplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDirectedAVSRewardsSubmissionCreated\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"avs\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDirectedRewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorDirectedRewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.OperatorDirectedRewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"operatorRewards\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.OperatorReward[]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"description\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorPISplitBipsSet\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"activatedAt\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"oldOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"newOperatorPISplitBips\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsClaimed\",\"inputs\":[{\"name\":\"root\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"earner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"claimer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"claimedAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsForAllSubmitterSet\",\"inputs\":[{\"name\":\"rewardsForAllSubmitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"},{\"name\":\"newValue\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsSubmissionForAllCreated\",\"inputs\":[{\"name\":\"submitter\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsSubmissionForAllEarnersCreated\",\"inputs\":[{\"name\":\"tokenHopper\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"submissionNonce\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"rewardsSubmissionHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"rewardsSubmission\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRewardsCoordinatorTypes.RewardsSubmission\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinatorTypes.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsUpdaterSet\",\"inputs\":[{\"name\":\"oldRewardsUpdater\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newRewardsUpdater\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AmountExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AmountIsZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DurationExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EarningsNotGreaterThanClaimed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthMismatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputArrayLengthZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCalculationIntervalSecondsRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidClaimProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidDurationRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEarner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEarnerLeafIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidGenesisRewardsTimestampRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRootIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStartTimestampRemainder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTokenLeafIndex\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewRootMustBeForNewCalculatedPeriod\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OperatorsNotInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PreviousSplitPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RewardsEndTimestampNotElapsed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootAlreadyActivated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootDisabled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RootNotActivated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SplitExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StartTimestampTooFarInFuture\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StartTimestampTooFarInPast\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategiesNotInAscendingOrder\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotWhitelisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SubmissionNotRetroactive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UnauthorizedCaller\",\"inputs\":[]}]",
}
// RewardsCoordinatorStorageABI is the input ABI used to generate the binding from.
@@ -428,10 +428,72 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) Activa
return _RewardsCoordinatorStorage.Contract.ActivationDelay(&_RewardsCoordinatorStorage.CallOpts)
}
+// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7.
+//
+// Solidity: function allocationManager() view returns(address)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) AllocationManager(opts *bind.CallOpts) (common.Address, error) {
+ var out []interface{}
+ err := _RewardsCoordinatorStorage.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 (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) AllocationManager() (common.Address, error) {
+ return _RewardsCoordinatorStorage.Contract.AllocationManager(&_RewardsCoordinatorStorage.CallOpts)
+}
+
+// AllocationManager is a free data retrieval call binding the contract method 0xca8aa7c7.
+//
+// Solidity: function allocationManager() view returns(address)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) AllocationManager() (common.Address, error) {
+ return _RewardsCoordinatorStorage.Contract.AllocationManager(&_RewardsCoordinatorStorage.CallOpts)
+}
+
+// BeaconChainETHStrategy is a free data retrieval call binding the contract method 0x9104c319.
+//
+// Solidity: function beaconChainETHStrategy() view returns(address)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) BeaconChainETHStrategy(opts *bind.CallOpts) (common.Address, error) {
+ var out []interface{}
+ err := _RewardsCoordinatorStorage.contract.Call(opts, &out, "beaconChainETHStrategy")
+
+ if err != nil {
+ return *new(common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
+
+ return out0, err
+
+}
+
+// BeaconChainETHStrategy is a free data retrieval call binding the contract method 0x9104c319.
+//
+// Solidity: function beaconChainETHStrategy() view returns(address)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) BeaconChainETHStrategy() (common.Address, error) {
+ return _RewardsCoordinatorStorage.Contract.BeaconChainETHStrategy(&_RewardsCoordinatorStorage.CallOpts)
+}
+
+// BeaconChainETHStrategy is a free data retrieval call binding the contract method 0x9104c319.
+//
+// Solidity: function beaconChainETHStrategy() view returns(address)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) BeaconChainETHStrategy() (common.Address, error) {
+ return _RewardsCoordinatorStorage.Contract.BeaconChainETHStrategy(&_RewardsCoordinatorStorage.CallOpts)
+}
+
// CalculateEarnerLeafHash is a free data retrieval call binding the contract method 0x149bc872.
//
// Solidity: function calculateEarnerLeafHash((address,bytes32) leaf) pure returns(bytes32)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) CalculateEarnerLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorEarnerTreeMerkleLeaf) ([32]byte, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) CalculateEarnerLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorTypesEarnerTreeMerkleLeaf) ([32]byte, error) {
var out []interface{}
err := _RewardsCoordinatorStorage.contract.Call(opts, &out, "calculateEarnerLeafHash", leaf)
@@ -448,21 +510,21 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) CalculateEarn
// CalculateEarnerLeafHash is a free data retrieval call binding the contract method 0x149bc872.
//
// Solidity: function calculateEarnerLeafHash((address,bytes32) leaf) pure returns(bytes32)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) CalculateEarnerLeafHash(leaf IRewardsCoordinatorEarnerTreeMerkleLeaf) ([32]byte, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) CalculateEarnerLeafHash(leaf IRewardsCoordinatorTypesEarnerTreeMerkleLeaf) ([32]byte, error) {
return _RewardsCoordinatorStorage.Contract.CalculateEarnerLeafHash(&_RewardsCoordinatorStorage.CallOpts, leaf)
}
// CalculateEarnerLeafHash is a free data retrieval call binding the contract method 0x149bc872.
//
// Solidity: function calculateEarnerLeafHash((address,bytes32) leaf) pure returns(bytes32)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) CalculateEarnerLeafHash(leaf IRewardsCoordinatorEarnerTreeMerkleLeaf) ([32]byte, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) CalculateEarnerLeafHash(leaf IRewardsCoordinatorTypesEarnerTreeMerkleLeaf) ([32]byte, error) {
return _RewardsCoordinatorStorage.Contract.CalculateEarnerLeafHash(&_RewardsCoordinatorStorage.CallOpts, leaf)
}
// CalculateTokenLeafHash is a free data retrieval call binding the contract method 0xf8cd8448.
//
// Solidity: function calculateTokenLeafHash((address,uint256) leaf) pure returns(bytes32)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) CalculateTokenLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorTokenTreeMerkleLeaf) ([32]byte, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) CalculateTokenLeafHash(opts *bind.CallOpts, leaf IRewardsCoordinatorTypesTokenTreeMerkleLeaf) ([32]byte, error) {
var out []interface{}
err := _RewardsCoordinatorStorage.contract.Call(opts, &out, "calculateTokenLeafHash", leaf)
@@ -479,21 +541,21 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) CalculateToke
// CalculateTokenLeafHash is a free data retrieval call binding the contract method 0xf8cd8448.
//
// Solidity: function calculateTokenLeafHash((address,uint256) leaf) pure returns(bytes32)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) CalculateTokenLeafHash(leaf IRewardsCoordinatorTokenTreeMerkleLeaf) ([32]byte, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) CalculateTokenLeafHash(leaf IRewardsCoordinatorTypesTokenTreeMerkleLeaf) ([32]byte, error) {
return _RewardsCoordinatorStorage.Contract.CalculateTokenLeafHash(&_RewardsCoordinatorStorage.CallOpts, leaf)
}
// CalculateTokenLeafHash is a free data retrieval call binding the contract method 0xf8cd8448.
//
// Solidity: function calculateTokenLeafHash((address,uint256) leaf) pure returns(bytes32)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) CalculateTokenLeafHash(leaf IRewardsCoordinatorTokenTreeMerkleLeaf) ([32]byte, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) CalculateTokenLeafHash(leaf IRewardsCoordinatorTypesTokenTreeMerkleLeaf) ([32]byte, error) {
return _RewardsCoordinatorStorage.Contract.CalculateTokenLeafHash(&_RewardsCoordinatorStorage.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 (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) CheckClaim(opts *bind.CallOpts, claim IRewardsCoordinatorRewardsMerkleClaim) (bool, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) CheckClaim(opts *bind.CallOpts, claim IRewardsCoordinatorTypesRewardsMerkleClaim) (bool, error) {
var out []interface{}
err := _RewardsCoordinatorStorage.contract.Call(opts, &out, "checkClaim", claim)
@@ -510,23 +572,23 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) CheckClaim(op
// 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 (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) CheckClaim(claim IRewardsCoordinatorRewardsMerkleClaim) (bool, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) CheckClaim(claim IRewardsCoordinatorTypesRewardsMerkleClaim) (bool, error) {
return _RewardsCoordinatorStorage.Contract.CheckClaim(&_RewardsCoordinatorStorage.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 (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) CheckClaim(claim IRewardsCoordinatorRewardsMerkleClaim) (bool, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) CheckClaim(claim IRewardsCoordinatorTypesRewardsMerkleClaim) (bool, error) {
return _RewardsCoordinatorStorage.Contract.CheckClaim(&_RewardsCoordinatorStorage.CallOpts, claim)
}
// ClaimerFor is a free data retrieval call binding the contract method 0x2b9f64a4.
//
-// Solidity: function claimerFor(address ) view returns(address)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) ClaimerFor(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
+// Solidity: function claimerFor(address earner) view returns(address claimer)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) ClaimerFor(opts *bind.CallOpts, earner common.Address) (common.Address, error) {
var out []interface{}
- err := _RewardsCoordinatorStorage.contract.Call(opts, &out, "claimerFor", arg0)
+ err := _RewardsCoordinatorStorage.contract.Call(opts, &out, "claimerFor", earner)
if err != nil {
return *new(common.Address), err
@@ -540,24 +602,24 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) ClaimerFor(op
// ClaimerFor is a free data retrieval call binding the contract method 0x2b9f64a4.
//
-// Solidity: function claimerFor(address ) view returns(address)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) ClaimerFor(arg0 common.Address) (common.Address, error) {
- return _RewardsCoordinatorStorage.Contract.ClaimerFor(&_RewardsCoordinatorStorage.CallOpts, arg0)
+// Solidity: function claimerFor(address earner) view returns(address claimer)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) ClaimerFor(earner common.Address) (common.Address, error) {
+ return _RewardsCoordinatorStorage.Contract.ClaimerFor(&_RewardsCoordinatorStorage.CallOpts, earner)
}
// ClaimerFor is a free data retrieval call binding the contract method 0x2b9f64a4.
//
-// Solidity: function claimerFor(address ) view returns(address)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) ClaimerFor(arg0 common.Address) (common.Address, error) {
- return _RewardsCoordinatorStorage.Contract.ClaimerFor(&_RewardsCoordinatorStorage.CallOpts, arg0)
+// Solidity: function claimerFor(address earner) view returns(address claimer)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) ClaimerFor(earner common.Address) (common.Address, error) {
+ return _RewardsCoordinatorStorage.Contract.ClaimerFor(&_RewardsCoordinatorStorage.CallOpts, earner)
}
// CumulativeClaimed is a free data retrieval call binding the contract method 0x865c6953.
//
-// Solidity: function cumulativeClaimed(address , address ) view returns(uint256)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) CumulativeClaimed(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) {
+// Solidity: function cumulativeClaimed(address earner, address token) view returns(uint256 totalClaimed)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) CumulativeClaimed(opts *bind.CallOpts, earner common.Address, token common.Address) (*big.Int, error) {
var out []interface{}
- err := _RewardsCoordinatorStorage.contract.Call(opts, &out, "cumulativeClaimed", arg0, arg1)
+ err := _RewardsCoordinatorStorage.contract.Call(opts, &out, "cumulativeClaimed", earner, token)
if err != nil {
return *new(*big.Int), err
@@ -571,16 +633,16 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) CumulativeCla
// CumulativeClaimed is a free data retrieval call binding the contract method 0x865c6953.
//
-// Solidity: function cumulativeClaimed(address , address ) view returns(uint256)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) CumulativeClaimed(arg0 common.Address, arg1 common.Address) (*big.Int, error) {
- return _RewardsCoordinatorStorage.Contract.CumulativeClaimed(&_RewardsCoordinatorStorage.CallOpts, arg0, arg1)
+// Solidity: function cumulativeClaimed(address earner, address token) view returns(uint256 totalClaimed)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) CumulativeClaimed(earner common.Address, token common.Address) (*big.Int, error) {
+ return _RewardsCoordinatorStorage.Contract.CumulativeClaimed(&_RewardsCoordinatorStorage.CallOpts, earner, token)
}
// CumulativeClaimed is a free data retrieval call binding the contract method 0x865c6953.
//
-// Solidity: function cumulativeClaimed(address , address ) view returns(uint256)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) CumulativeClaimed(arg0 common.Address, arg1 common.Address) (*big.Int, error) {
- return _RewardsCoordinatorStorage.Contract.CumulativeClaimed(&_RewardsCoordinatorStorage.CallOpts, arg0, arg1)
+// Solidity: function cumulativeClaimed(address earner, address token) view returns(uint256 totalClaimed)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) CumulativeClaimed(earner common.Address, token common.Address) (*big.Int, error) {
+ return _RewardsCoordinatorStorage.Contract.CumulativeClaimed(&_RewardsCoordinatorStorage.CallOpts, earner, token)
}
// CurrRewardsCalculationEndTimestamp is a free data retrieval call binding the contract method 0x4d18cc35.
@@ -676,49 +738,18 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) Delega
return _RewardsCoordinatorStorage.Contract.DelegationManager(&_RewardsCoordinatorStorage.CallOpts)
}
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
-//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) {
- var out []interface{}
- err := _RewardsCoordinatorStorage.contract.Call(opts, &out, "domainSeparator")
-
- if err != nil {
- return *new([32]byte), err
- }
-
- out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
-
- return out0, err
-
-}
-
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
-//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) DomainSeparator() ([32]byte, error) {
- return _RewardsCoordinatorStorage.Contract.DomainSeparator(&_RewardsCoordinatorStorage.CallOpts)
-}
-
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
-//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) DomainSeparator() ([32]byte, error) {
- return _RewardsCoordinatorStorage.Contract.DomainSeparator(&_RewardsCoordinatorStorage.CallOpts)
-}
-
// GetCurrentClaimableDistributionRoot is a free data retrieval call binding the contract method 0x0e9a53cf.
//
// Solidity: function getCurrentClaimableDistributionRoot() view returns((bytes32,uint32,uint32,bool))
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) GetCurrentClaimableDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorDistributionRoot, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) GetCurrentClaimableDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorTypesDistributionRoot, error) {
var out []interface{}
err := _RewardsCoordinatorStorage.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
@@ -727,29 +758,29 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) GetCurrentCla
// GetCurrentClaimableDistributionRoot is a free data retrieval call binding the contract method 0x0e9a53cf.
//
// Solidity: function getCurrentClaimableDistributionRoot() view returns((bytes32,uint32,uint32,bool))
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) GetCurrentClaimableDistributionRoot() (IRewardsCoordinatorDistributionRoot, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) GetCurrentClaimableDistributionRoot() (IRewardsCoordinatorTypesDistributionRoot, error) {
return _RewardsCoordinatorStorage.Contract.GetCurrentClaimableDistributionRoot(&_RewardsCoordinatorStorage.CallOpts)
}
// GetCurrentClaimableDistributionRoot is a free data retrieval call binding the contract method 0x0e9a53cf.
//
// Solidity: function getCurrentClaimableDistributionRoot() view returns((bytes32,uint32,uint32,bool))
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) GetCurrentClaimableDistributionRoot() (IRewardsCoordinatorDistributionRoot, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) GetCurrentClaimableDistributionRoot() (IRewardsCoordinatorTypesDistributionRoot, error) {
return _RewardsCoordinatorStorage.Contract.GetCurrentClaimableDistributionRoot(&_RewardsCoordinatorStorage.CallOpts)
}
// GetCurrentDistributionRoot is a free data retrieval call binding the contract method 0x9be3d4e4.
//
// Solidity: function getCurrentDistributionRoot() view returns((bytes32,uint32,uint32,bool))
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) GetCurrentDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorDistributionRoot, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) GetCurrentDistributionRoot(opts *bind.CallOpts) (IRewardsCoordinatorTypesDistributionRoot, error) {
var out []interface{}
err := _RewardsCoordinatorStorage.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
@@ -758,29 +789,29 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) GetCurrentDis
// GetCurrentDistributionRoot is a free data retrieval call binding the contract method 0x9be3d4e4.
//
// Solidity: function getCurrentDistributionRoot() view returns((bytes32,uint32,uint32,bool))
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) GetCurrentDistributionRoot() (IRewardsCoordinatorDistributionRoot, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) GetCurrentDistributionRoot() (IRewardsCoordinatorTypesDistributionRoot, error) {
return _RewardsCoordinatorStorage.Contract.GetCurrentDistributionRoot(&_RewardsCoordinatorStorage.CallOpts)
}
// GetCurrentDistributionRoot is a free data retrieval call binding the contract method 0x9be3d4e4.
//
// Solidity: function getCurrentDistributionRoot() view returns((bytes32,uint32,uint32,bool))
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) GetCurrentDistributionRoot() (IRewardsCoordinatorDistributionRoot, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) GetCurrentDistributionRoot() (IRewardsCoordinatorTypesDistributionRoot, error) {
return _RewardsCoordinatorStorage.Contract.GetCurrentDistributionRoot(&_RewardsCoordinatorStorage.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 (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) GetDistributionRootAtIndex(opts *bind.CallOpts, index *big.Int) (IRewardsCoordinatorDistributionRoot, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) GetDistributionRootAtIndex(opts *bind.CallOpts, index *big.Int) (IRewardsCoordinatorTypesDistributionRoot, error) {
var out []interface{}
err := _RewardsCoordinatorStorage.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
@@ -789,14 +820,14 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) GetDistributi
// GetDistributionRootAtIndex is a free data retrieval call binding the contract method 0xde02e503.
//
// Solidity: function getDistributionRootAtIndex(uint256 index) view returns((bytes32,uint32,uint32,bool))
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) GetDistributionRootAtIndex(index *big.Int) (IRewardsCoordinatorDistributionRoot, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) GetDistributionRootAtIndex(index *big.Int) (IRewardsCoordinatorTypesDistributionRoot, error) {
return _RewardsCoordinatorStorage.Contract.GetDistributionRootAtIndex(&_RewardsCoordinatorStorage.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 (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) GetDistributionRootAtIndex(index *big.Int) (IRewardsCoordinatorDistributionRoot, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) GetDistributionRootAtIndex(index *big.Int) (IRewardsCoordinatorTypesDistributionRoot, error) {
return _RewardsCoordinatorStorage.Contract.GetDistributionRootAtIndex(&_RewardsCoordinatorStorage.CallOpts, index)
}
@@ -926,10 +957,10 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) GetRoo
// IsAVSRewardsSubmissionHash is a free data retrieval call binding the contract method 0x6d21117e.
//
-// Solidity: function isAVSRewardsSubmissionHash(address , bytes32 ) view returns(bool)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) IsAVSRewardsSubmissionHash(opts *bind.CallOpts, arg0 common.Address, arg1 [32]byte) (bool, error) {
+// Solidity: function isAVSRewardsSubmissionHash(address avs, bytes32 hash) view returns(bool valid)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) IsAVSRewardsSubmissionHash(opts *bind.CallOpts, avs common.Address, hash [32]byte) (bool, error) {
var out []interface{}
- err := _RewardsCoordinatorStorage.contract.Call(opts, &out, "isAVSRewardsSubmissionHash", arg0, arg1)
+ err := _RewardsCoordinatorStorage.contract.Call(opts, &out, "isAVSRewardsSubmissionHash", avs, hash)
if err != nil {
return *new(bool), err
@@ -943,16 +974,16 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) IsAVSRewardsS
// IsAVSRewardsSubmissionHash is a free data retrieval call binding the contract method 0x6d21117e.
//
-// Solidity: function isAVSRewardsSubmissionHash(address , bytes32 ) view returns(bool)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) IsAVSRewardsSubmissionHash(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _RewardsCoordinatorStorage.Contract.IsAVSRewardsSubmissionHash(&_RewardsCoordinatorStorage.CallOpts, arg0, arg1)
+// Solidity: function isAVSRewardsSubmissionHash(address avs, bytes32 hash) view returns(bool valid)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) IsAVSRewardsSubmissionHash(avs common.Address, hash [32]byte) (bool, error) {
+ return _RewardsCoordinatorStorage.Contract.IsAVSRewardsSubmissionHash(&_RewardsCoordinatorStorage.CallOpts, avs, hash)
}
// IsAVSRewardsSubmissionHash is a free data retrieval call binding the contract method 0x6d21117e.
//
-// Solidity: function isAVSRewardsSubmissionHash(address , bytes32 ) view returns(bool)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) IsAVSRewardsSubmissionHash(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _RewardsCoordinatorStorage.Contract.IsAVSRewardsSubmissionHash(&_RewardsCoordinatorStorage.CallOpts, arg0, arg1)
+// Solidity: function isAVSRewardsSubmissionHash(address avs, bytes32 hash) view returns(bool valid)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) IsAVSRewardsSubmissionHash(avs common.Address, hash [32]byte) (bool, error) {
+ return _RewardsCoordinatorStorage.Contract.IsAVSRewardsSubmissionHash(&_RewardsCoordinatorStorage.CallOpts, avs, hash)
}
// IsOperatorDirectedAVSRewardsSubmissionHash is a free data retrieval call binding the contract method 0xed71e6a2.
@@ -988,10 +1019,10 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) IsOper
// IsRewardsForAllSubmitter is a free data retrieval call binding the contract method 0x0018572c.
//
-// Solidity: function isRewardsForAllSubmitter(address ) view returns(bool)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) IsRewardsForAllSubmitter(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
+// Solidity: function isRewardsForAllSubmitter(address submitter) view returns(bool valid)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) IsRewardsForAllSubmitter(opts *bind.CallOpts, submitter common.Address) (bool, error) {
var out []interface{}
- err := _RewardsCoordinatorStorage.contract.Call(opts, &out, "isRewardsForAllSubmitter", arg0)
+ err := _RewardsCoordinatorStorage.contract.Call(opts, &out, "isRewardsForAllSubmitter", submitter)
if err != nil {
return *new(bool), err
@@ -1005,24 +1036,24 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) IsRewardsForA
// IsRewardsForAllSubmitter is a free data retrieval call binding the contract method 0x0018572c.
//
-// Solidity: function isRewardsForAllSubmitter(address ) view returns(bool)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) IsRewardsForAllSubmitter(arg0 common.Address) (bool, error) {
- return _RewardsCoordinatorStorage.Contract.IsRewardsForAllSubmitter(&_RewardsCoordinatorStorage.CallOpts, arg0)
+// Solidity: function isRewardsForAllSubmitter(address submitter) view returns(bool valid)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) IsRewardsForAllSubmitter(submitter common.Address) (bool, error) {
+ return _RewardsCoordinatorStorage.Contract.IsRewardsForAllSubmitter(&_RewardsCoordinatorStorage.CallOpts, submitter)
}
// IsRewardsForAllSubmitter is a free data retrieval call binding the contract method 0x0018572c.
//
-// Solidity: function isRewardsForAllSubmitter(address ) view returns(bool)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) IsRewardsForAllSubmitter(arg0 common.Address) (bool, error) {
- return _RewardsCoordinatorStorage.Contract.IsRewardsForAllSubmitter(&_RewardsCoordinatorStorage.CallOpts, arg0)
+// Solidity: function isRewardsForAllSubmitter(address submitter) view returns(bool valid)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) IsRewardsForAllSubmitter(submitter common.Address) (bool, error) {
+ return _RewardsCoordinatorStorage.Contract.IsRewardsForAllSubmitter(&_RewardsCoordinatorStorage.CallOpts, submitter)
}
// IsRewardsSubmissionForAllEarnersHash is a free data retrieval call binding the contract method 0xaebd8bae.
//
-// Solidity: function isRewardsSubmissionForAllEarnersHash(address , bytes32 ) view returns(bool)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) IsRewardsSubmissionForAllEarnersHash(opts *bind.CallOpts, arg0 common.Address, arg1 [32]byte) (bool, error) {
+// Solidity: function isRewardsSubmissionForAllEarnersHash(address avs, bytes32 hash) view returns(bool valid)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) IsRewardsSubmissionForAllEarnersHash(opts *bind.CallOpts, avs common.Address, hash [32]byte) (bool, error) {
var out []interface{}
- err := _RewardsCoordinatorStorage.contract.Call(opts, &out, "isRewardsSubmissionForAllEarnersHash", arg0, arg1)
+ err := _RewardsCoordinatorStorage.contract.Call(opts, &out, "isRewardsSubmissionForAllEarnersHash", avs, hash)
if err != nil {
return *new(bool), err
@@ -1036,24 +1067,24 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) IsRewardsSubm
// IsRewardsSubmissionForAllEarnersHash is a free data retrieval call binding the contract method 0xaebd8bae.
//
-// Solidity: function isRewardsSubmissionForAllEarnersHash(address , bytes32 ) view returns(bool)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) IsRewardsSubmissionForAllEarnersHash(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _RewardsCoordinatorStorage.Contract.IsRewardsSubmissionForAllEarnersHash(&_RewardsCoordinatorStorage.CallOpts, arg0, arg1)
+// Solidity: function isRewardsSubmissionForAllEarnersHash(address avs, bytes32 hash) view returns(bool valid)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) IsRewardsSubmissionForAllEarnersHash(avs common.Address, hash [32]byte) (bool, error) {
+ return _RewardsCoordinatorStorage.Contract.IsRewardsSubmissionForAllEarnersHash(&_RewardsCoordinatorStorage.CallOpts, avs, hash)
}
// IsRewardsSubmissionForAllEarnersHash is a free data retrieval call binding the contract method 0xaebd8bae.
//
-// Solidity: function isRewardsSubmissionForAllEarnersHash(address , bytes32 ) view returns(bool)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) IsRewardsSubmissionForAllEarnersHash(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _RewardsCoordinatorStorage.Contract.IsRewardsSubmissionForAllEarnersHash(&_RewardsCoordinatorStorage.CallOpts, arg0, arg1)
+// Solidity: function isRewardsSubmissionForAllEarnersHash(address avs, bytes32 hash) view returns(bool valid)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) IsRewardsSubmissionForAllEarnersHash(avs common.Address, hash [32]byte) (bool, error) {
+ return _RewardsCoordinatorStorage.Contract.IsRewardsSubmissionForAllEarnersHash(&_RewardsCoordinatorStorage.CallOpts, avs, hash)
}
// IsRewardsSubmissionForAllHash is a free data retrieval call binding the contract method 0xc46db606.
//
-// Solidity: function isRewardsSubmissionForAllHash(address , bytes32 ) view returns(bool)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) IsRewardsSubmissionForAllHash(opts *bind.CallOpts, arg0 common.Address, arg1 [32]byte) (bool, error) {
+// Solidity: function isRewardsSubmissionForAllHash(address avs, bytes32 hash) view returns(bool valid)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) IsRewardsSubmissionForAllHash(opts *bind.CallOpts, avs common.Address, hash [32]byte) (bool, error) {
var out []interface{}
- err := _RewardsCoordinatorStorage.contract.Call(opts, &out, "isRewardsSubmissionForAllHash", arg0, arg1)
+ err := _RewardsCoordinatorStorage.contract.Call(opts, &out, "isRewardsSubmissionForAllHash", avs, hash)
if err != nil {
return *new(bool), err
@@ -1067,16 +1098,16 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) IsRewardsSubm
// IsRewardsSubmissionForAllHash is a free data retrieval call binding the contract method 0xc46db606.
//
-// Solidity: function isRewardsSubmissionForAllHash(address , bytes32 ) view returns(bool)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) IsRewardsSubmissionForAllHash(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _RewardsCoordinatorStorage.Contract.IsRewardsSubmissionForAllHash(&_RewardsCoordinatorStorage.CallOpts, arg0, arg1)
+// Solidity: function isRewardsSubmissionForAllHash(address avs, bytes32 hash) view returns(bool valid)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) IsRewardsSubmissionForAllHash(avs common.Address, hash [32]byte) (bool, error) {
+ return _RewardsCoordinatorStorage.Contract.IsRewardsSubmissionForAllHash(&_RewardsCoordinatorStorage.CallOpts, avs, hash)
}
// IsRewardsSubmissionForAllHash is a free data retrieval call binding the contract method 0xc46db606.
//
-// Solidity: function isRewardsSubmissionForAllHash(address , bytes32 ) view returns(bool)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) IsRewardsSubmissionForAllHash(arg0 common.Address, arg1 [32]byte) (bool, error) {
- return _RewardsCoordinatorStorage.Contract.IsRewardsSubmissionForAllHash(&_RewardsCoordinatorStorage.CallOpts, arg0, arg1)
+// Solidity: function isRewardsSubmissionForAllHash(address avs, bytes32 hash) view returns(bool valid)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) IsRewardsSubmissionForAllHash(avs common.Address, hash [32]byte) (bool, error) {
+ return _RewardsCoordinatorStorage.Contract.IsRewardsSubmissionForAllHash(&_RewardsCoordinatorStorage.CallOpts, avs, hash)
}
// RewardsUpdater is a free data retrieval call binding the contract method 0xfbf1e2c1.
@@ -1143,10 +1174,10 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) Strate
// SubmissionNonce is a free data retrieval call binding the contract method 0xbb7e451f.
//
-// Solidity: function submissionNonce(address ) view returns(uint256)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) SubmissionNonce(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
+// Solidity: function submissionNonce(address avs) view returns(uint256 nonce)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) SubmissionNonce(opts *bind.CallOpts, avs common.Address) (*big.Int, error) {
var out []interface{}
- err := _RewardsCoordinatorStorage.contract.Call(opts, &out, "submissionNonce", arg0)
+ err := _RewardsCoordinatorStorage.contract.Call(opts, &out, "submissionNonce", avs)
if err != nil {
return *new(*big.Int), err
@@ -1160,100 +1191,100 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCaller) SubmissionNon
// SubmissionNonce is a free data retrieval call binding the contract method 0xbb7e451f.
//
-// Solidity: function submissionNonce(address ) view returns(uint256)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) SubmissionNonce(arg0 common.Address) (*big.Int, error) {
- return _RewardsCoordinatorStorage.Contract.SubmissionNonce(&_RewardsCoordinatorStorage.CallOpts, arg0)
+// Solidity: function submissionNonce(address avs) view returns(uint256 nonce)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) SubmissionNonce(avs common.Address) (*big.Int, error) {
+ return _RewardsCoordinatorStorage.Contract.SubmissionNonce(&_RewardsCoordinatorStorage.CallOpts, avs)
}
// SubmissionNonce is a free data retrieval call binding the contract method 0xbb7e451f.
//
-// Solidity: function submissionNonce(address ) view returns(uint256)
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) SubmissionNonce(arg0 common.Address) (*big.Int, error) {
- return _RewardsCoordinatorStorage.Contract.SubmissionNonce(&_RewardsCoordinatorStorage.CallOpts, arg0)
+// Solidity: function submissionNonce(address avs) view returns(uint256 nonce)
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageCallerSession) SubmissionNonce(avs common.Address) (*big.Int, error) {
+ return _RewardsCoordinatorStorage.Contract.SubmissionNonce(&_RewardsCoordinatorStorage.CallOpts, avs)
}
// CreateAVSRewardsSubmission is a paid mutator transaction binding the contract method 0xfce36c7d.
//
// Solidity: function createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns()
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactor) CreateAVSRewardsSubmission(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactor) CreateAVSRewardsSubmission(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinatorStorage.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 (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinatorStorage.Contract.CreateAVSRewardsSubmission(&_RewardsCoordinatorStorage.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 (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactorSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactorSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinatorStorage.Contract.CreateAVSRewardsSubmission(&_RewardsCoordinatorStorage.TransactOpts, rewardsSubmissions)
}
// CreateOperatorDirectedAVSRewardsSubmission is a paid mutator transaction binding the contract method 0x9cb9a5fa.
//
// Solidity: function createOperatorDirectedAVSRewardsSubmission(address avs, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[] operatorDirectedRewardsSubmissions) returns()
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactor) CreateOperatorDirectedAVSRewardsSubmission(opts *bind.TransactOpts, avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorOperatorDirectedRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactor) CreateOperatorDirectedAVSRewardsSubmission(opts *bind.TransactOpts, avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinatorStorage.contract.Transact(opts, "createOperatorDirectedAVSRewardsSubmission", avs, operatorDirectedRewardsSubmissions)
}
// CreateOperatorDirectedAVSRewardsSubmission is a paid mutator transaction binding the contract method 0x9cb9a5fa.
//
// Solidity: function createOperatorDirectedAVSRewardsSubmission(address avs, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[] operatorDirectedRewardsSubmissions) returns()
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) CreateOperatorDirectedAVSRewardsSubmission(avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorOperatorDirectedRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) CreateOperatorDirectedAVSRewardsSubmission(avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinatorStorage.Contract.CreateOperatorDirectedAVSRewardsSubmission(&_RewardsCoordinatorStorage.TransactOpts, avs, operatorDirectedRewardsSubmissions)
}
// CreateOperatorDirectedAVSRewardsSubmission is a paid mutator transaction binding the contract method 0x9cb9a5fa.
//
// Solidity: function createOperatorDirectedAVSRewardsSubmission(address avs, ((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[] operatorDirectedRewardsSubmissions) returns()
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactorSession) CreateOperatorDirectedAVSRewardsSubmission(avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorOperatorDirectedRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactorSession) CreateOperatorDirectedAVSRewardsSubmission(avs common.Address, operatorDirectedRewardsSubmissions []IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinatorStorage.Contract.CreateOperatorDirectedAVSRewardsSubmission(&_RewardsCoordinatorStorage.TransactOpts, avs, operatorDirectedRewardsSubmissions)
}
// CreateRewardsForAllEarners is a paid mutator transaction binding the contract method 0xff9f6cce.
//
// Solidity: function createRewardsForAllEarners(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns()
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactor) CreateRewardsForAllEarners(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactor) CreateRewardsForAllEarners(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinatorStorage.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 (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) CreateRewardsForAllEarners(rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) CreateRewardsForAllEarners(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinatorStorage.Contract.CreateRewardsForAllEarners(&_RewardsCoordinatorStorage.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 (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactorSession) CreateRewardsForAllEarners(rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactorSession) CreateRewardsForAllEarners(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
return _RewardsCoordinatorStorage.Contract.CreateRewardsForAllEarners(&_RewardsCoordinatorStorage.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 (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactor) CreateRewardsForAllSubmission(opts *bind.TransactOpts, rewardsSubmission []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
- return _RewardsCoordinatorStorage.contract.Transact(opts, "createRewardsForAllSubmission", rewardsSubmission)
+// Solidity: function createRewardsForAllSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns()
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactor) CreateRewardsForAllSubmission(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
+ return _RewardsCoordinatorStorage.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 (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) CreateRewardsForAllSubmission(rewardsSubmission []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
- return _RewardsCoordinatorStorage.Contract.CreateRewardsForAllSubmission(&_RewardsCoordinatorStorage.TransactOpts, rewardsSubmission)
+// Solidity: function createRewardsForAllSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns()
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) CreateRewardsForAllSubmission(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
+ return _RewardsCoordinatorStorage.Contract.CreateRewardsForAllSubmission(&_RewardsCoordinatorStorage.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 (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactorSession) CreateRewardsForAllSubmission(rewardsSubmission []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) {
- return _RewardsCoordinatorStorage.Contract.CreateRewardsForAllSubmission(&_RewardsCoordinatorStorage.TransactOpts, rewardsSubmission)
+// Solidity: function createRewardsForAllSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns()
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactorSession) CreateRewardsForAllSubmission(rewardsSubmissions []IRewardsCoordinatorTypesRewardsSubmission) (*types.Transaction, error) {
+ return _RewardsCoordinatorStorage.Contract.CreateRewardsForAllSubmission(&_RewardsCoordinatorStorage.TransactOpts, rewardsSubmissions)
}
// DisableRoot is a paid mutator transaction binding the contract method 0xf96abf2e.
@@ -1277,45 +1308,66 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactorSession) Di
return _RewardsCoordinatorStorage.Contract.DisableRoot(&_RewardsCoordinatorStorage.TransactOpts, rootIndex)
}
+// Initialize is a paid mutator transaction binding the contract method 0xf6efbb59.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _defaultSplitBips) returns()
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _defaultSplitBips uint16) (*types.Transaction, error) {
+ return _RewardsCoordinatorStorage.contract.Transact(opts, "initialize", initialOwner, initialPausedStatus, _rewardsUpdater, _activationDelay, _defaultSplitBips)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0xf6efbb59.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _defaultSplitBips) returns()
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _defaultSplitBips uint16) (*types.Transaction, error) {
+ return _RewardsCoordinatorStorage.Contract.Initialize(&_RewardsCoordinatorStorage.TransactOpts, initialOwner, initialPausedStatus, _rewardsUpdater, _activationDelay, _defaultSplitBips)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0xf6efbb59.
+//
+// Solidity: function initialize(address initialOwner, uint256 initialPausedStatus, address _rewardsUpdater, uint32 _activationDelay, uint16 _defaultSplitBips) returns()
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactorSession) Initialize(initialOwner common.Address, initialPausedStatus *big.Int, _rewardsUpdater common.Address, _activationDelay uint32, _defaultSplitBips uint16) (*types.Transaction, error) {
+ return _RewardsCoordinatorStorage.Contract.Initialize(&_RewardsCoordinatorStorage.TransactOpts, initialOwner, initialPausedStatus, _rewardsUpdater, _activationDelay, _defaultSplitBips)
+}
+
// ProcessClaim is a paid mutator transaction binding the contract method 0x3ccc861d.
//
// Solidity: function processClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]) claim, address recipient) returns()
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactor) ProcessClaim(opts *bind.TransactOpts, claim IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactor) ProcessClaim(opts *bind.TransactOpts, claim IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
return _RewardsCoordinatorStorage.contract.Transact(opts, "processClaim", claim, recipient)
}
// ProcessClaim is a paid mutator transaction binding the contract method 0x3ccc861d.
//
// Solidity: function processClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]) claim, address recipient) returns()
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) ProcessClaim(claim IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) ProcessClaim(claim IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
return _RewardsCoordinatorStorage.Contract.ProcessClaim(&_RewardsCoordinatorStorage.TransactOpts, claim, recipient)
}
// ProcessClaim is a paid mutator transaction binding the contract method 0x3ccc861d.
//
// Solidity: function processClaim((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[]) claim, address recipient) returns()
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactorSession) ProcessClaim(claim IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactorSession) ProcessClaim(claim IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
return _RewardsCoordinatorStorage.Contract.ProcessClaim(&_RewardsCoordinatorStorage.TransactOpts, claim, recipient)
}
// ProcessClaims is a paid mutator transaction binding the contract method 0x4596021c.
//
// Solidity: function processClaims((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[])[] claims, address recipient) returns()
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactor) ProcessClaims(opts *bind.TransactOpts, claims []IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactor) ProcessClaims(opts *bind.TransactOpts, claims []IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
return _RewardsCoordinatorStorage.contract.Transact(opts, "processClaims", claims, recipient)
}
// ProcessClaims is a paid mutator transaction binding the contract method 0x4596021c.
//
// Solidity: function processClaims((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[])[] claims, address recipient) returns()
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) ProcessClaims(claims []IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) ProcessClaims(claims []IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
return _RewardsCoordinatorStorage.Contract.ProcessClaims(&_RewardsCoordinatorStorage.TransactOpts, claims, recipient)
}
// ProcessClaims is a paid mutator transaction binding the contract method 0x4596021c.
//
// Solidity: function processClaims((uint32,uint32,bytes,(address,bytes32),uint32[],bytes[],(address,uint256)[])[] claims, address recipient) returns()
-func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactorSession) ProcessClaims(claims []IRewardsCoordinatorRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactorSession) ProcessClaims(claims []IRewardsCoordinatorTypesRewardsMerkleClaim, recipient common.Address) (*types.Transaction, error) {
return _RewardsCoordinatorStorage.Contract.ProcessClaims(&_RewardsCoordinatorStorage.TransactOpts, claims, recipient)
}
@@ -1361,6 +1413,27 @@ func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactorSession) Se
return _RewardsCoordinatorStorage.Contract.SetClaimerFor(&_RewardsCoordinatorStorage.TransactOpts, claimer)
}
+// SetClaimerFor0 is a paid mutator transaction binding the contract method 0xf22cef85.
+//
+// Solidity: function setClaimerFor(address earner, address claimer) returns()
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactor) SetClaimerFor0(opts *bind.TransactOpts, earner common.Address, claimer common.Address) (*types.Transaction, error) {
+ return _RewardsCoordinatorStorage.contract.Transact(opts, "setClaimerFor0", earner, claimer)
+}
+
+// SetClaimerFor0 is a paid mutator transaction binding the contract method 0xf22cef85.
+//
+// Solidity: function setClaimerFor(address earner, address claimer) returns()
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageSession) SetClaimerFor0(earner common.Address, claimer common.Address) (*types.Transaction, error) {
+ return _RewardsCoordinatorStorage.Contract.SetClaimerFor0(&_RewardsCoordinatorStorage.TransactOpts, earner, claimer)
+}
+
+// SetClaimerFor0 is a paid mutator transaction binding the contract method 0xf22cef85.
+//
+// Solidity: function setClaimerFor(address earner, address claimer) returns()
+func (_RewardsCoordinatorStorage *RewardsCoordinatorStorageTransactorSession) SetClaimerFor0(earner common.Address, claimer common.Address) (*types.Transaction, error) {
+ return _RewardsCoordinatorStorage.Contract.SetClaimerFor0(&_RewardsCoordinatorStorage.TransactOpts, earner, claimer)
+}
+
// SetDefaultOperatorSplit is a paid mutator transaction binding the contract method 0xa50a1d9c.
//
// Solidity: function setDefaultOperatorSplit(uint16 split) returns()
@@ -1559,7 +1632,7 @@ type RewardsCoordinatorStorageAVSRewardsSubmissionCreated struct {
Avs common.Address
SubmissionNonce *big.Int
RewardsSubmissionHash [32]byte
- RewardsSubmission IRewardsCoordinatorRewardsSubmission
+ RewardsSubmission IRewardsCoordinatorTypesRewardsSubmission
Raw types.Log // Blockchain specific contextual infos
}
@@ -2627,7 +2700,7 @@ type RewardsCoordinatorStorageOperatorDirectedAVSRewardsSubmissionCreated struct
Avs common.Address
OperatorDirectedRewardsSubmissionHash [32]byte
SubmissionNonce *big.Int
- OperatorDirectedRewardsSubmission IRewardsCoordinatorOperatorDirectedRewardsSubmission
+ OperatorDirectedRewardsSubmission IRewardsCoordinatorTypesOperatorDirectedRewardsSubmission
Raw types.Log // Blockchain specific contextual infos
}
@@ -3273,7 +3346,7 @@ type RewardsCoordinatorStorageRewardsSubmissionForAllCreated struct {
Submitter common.Address
SubmissionNonce *big.Int
RewardsSubmissionHash [32]byte
- RewardsSubmission IRewardsCoordinatorRewardsSubmission
+ RewardsSubmission IRewardsCoordinatorTypesRewardsSubmission
Raw types.Log // Blockchain specific contextual infos
}
@@ -3436,7 +3509,7 @@ type RewardsCoordinatorStorageRewardsSubmissionForAllEarnersCreated struct {
TokenHopper common.Address
SubmissionNonce *big.Int
RewardsSubmissionHash [32]byte
- RewardsSubmission IRewardsCoordinatorRewardsSubmission
+ RewardsSubmission IRewardsCoordinatorTypesRewardsSubmission
Raw types.Log // Blockchain specific contextual infos
}
diff --git a/pkg/bindings/SignatureUtils/binding.go b/pkg/bindings/SignatureUtils/binding.go
new file mode 100644
index 0000000000..eadb661ab5
--- /dev/null
+++ b/pkg/bindings/SignatureUtils/binding.go
@@ -0,0 +1,212 @@
+// Code generated - DO NOT EDIT.
+// This file is a generated binding and any manual changes will be lost.
+
+package SignatureUtils
+
+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
+)
+
+// SignatureUtilsMetaData contains all meta data concerning the SignatureUtils contract.
+var SignatureUtilsMetaData = &bind.MetaData{
+ ABI: "[{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SignatureExpired\",\"inputs\":[]}]",
+}
+
+// SignatureUtilsABI is the input ABI used to generate the binding from.
+// Deprecated: Use SignatureUtilsMetaData.ABI instead.
+var SignatureUtilsABI = SignatureUtilsMetaData.ABI
+
+// SignatureUtils is an auto generated Go binding around an Ethereum contract.
+type SignatureUtils struct {
+ SignatureUtilsCaller // Read-only binding to the contract
+ SignatureUtilsTransactor // Write-only binding to the contract
+ SignatureUtilsFilterer // Log filterer for contract events
+}
+
+// SignatureUtilsCaller is an auto generated read-only Go binding around an Ethereum contract.
+type SignatureUtilsCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// SignatureUtilsTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type SignatureUtilsTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// SignatureUtilsFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
+type SignatureUtilsFilterer struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// SignatureUtilsSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type SignatureUtilsSession struct {
+ Contract *SignatureUtils // 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
+}
+
+// SignatureUtilsCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type SignatureUtilsCallerSession struct {
+ Contract *SignatureUtilsCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// SignatureUtilsTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type SignatureUtilsTransactorSession struct {
+ Contract *SignatureUtilsTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// SignatureUtilsRaw is an auto generated low-level Go binding around an Ethereum contract.
+type SignatureUtilsRaw struct {
+ Contract *SignatureUtils // Generic contract binding to access the raw methods on
+}
+
+// SignatureUtilsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type SignatureUtilsCallerRaw struct {
+ Contract *SignatureUtilsCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// SignatureUtilsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type SignatureUtilsTransactorRaw struct {
+ Contract *SignatureUtilsTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewSignatureUtils creates a new instance of SignatureUtils, bound to a specific deployed contract.
+func NewSignatureUtils(address common.Address, backend bind.ContractBackend) (*SignatureUtils, error) {
+ contract, err := bindSignatureUtils(address, backend, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &SignatureUtils{SignatureUtilsCaller: SignatureUtilsCaller{contract: contract}, SignatureUtilsTransactor: SignatureUtilsTransactor{contract: contract}, SignatureUtilsFilterer: SignatureUtilsFilterer{contract: contract}}, nil
+}
+
+// NewSignatureUtilsCaller creates a new read-only instance of SignatureUtils, bound to a specific deployed contract.
+func NewSignatureUtilsCaller(address common.Address, caller bind.ContractCaller) (*SignatureUtilsCaller, error) {
+ contract, err := bindSignatureUtils(address, caller, nil, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &SignatureUtilsCaller{contract: contract}, nil
+}
+
+// NewSignatureUtilsTransactor creates a new write-only instance of SignatureUtils, bound to a specific deployed contract.
+func NewSignatureUtilsTransactor(address common.Address, transactor bind.ContractTransactor) (*SignatureUtilsTransactor, error) {
+ contract, err := bindSignatureUtils(address, nil, transactor, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &SignatureUtilsTransactor{contract: contract}, nil
+}
+
+// NewSignatureUtilsFilterer creates a new log filterer instance of SignatureUtils, bound to a specific deployed contract.
+func NewSignatureUtilsFilterer(address common.Address, filterer bind.ContractFilterer) (*SignatureUtilsFilterer, error) {
+ contract, err := bindSignatureUtils(address, nil, nil, filterer)
+ if err != nil {
+ return nil, err
+ }
+ return &SignatureUtilsFilterer{contract: contract}, nil
+}
+
+// bindSignatureUtils binds a generic wrapper to an already deployed contract.
+func bindSignatureUtils(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
+ parsed, err := SignatureUtilsMetaData.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 (_SignatureUtils *SignatureUtilsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _SignatureUtils.Contract.SignatureUtilsCaller.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 (_SignatureUtils *SignatureUtilsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _SignatureUtils.Contract.SignatureUtilsTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_SignatureUtils *SignatureUtilsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _SignatureUtils.Contract.SignatureUtilsTransactor.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 (_SignatureUtils *SignatureUtilsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _SignatureUtils.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 (_SignatureUtils *SignatureUtilsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _SignatureUtils.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_SignatureUtils *SignatureUtilsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _SignatureUtils.Contract.contract.Transact(opts, method, params...)
+}
+
+// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
+//
+// Solidity: function domainSeparator() view returns(bytes32)
+func (_SignatureUtils *SignatureUtilsCaller) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) {
+ var out []interface{}
+ err := _SignatureUtils.contract.Call(opts, &out, "domainSeparator")
+
+ if err != nil {
+ return *new([32]byte), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
+
+ return out0, err
+
+}
+
+// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
+//
+// Solidity: function domainSeparator() view returns(bytes32)
+func (_SignatureUtils *SignatureUtilsSession) DomainSeparator() ([32]byte, error) {
+ return _SignatureUtils.Contract.DomainSeparator(&_SignatureUtils.CallOpts)
+}
+
+// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
+//
+// Solidity: function domainSeparator() view returns(bytes32)
+func (_SignatureUtils *SignatureUtilsCallerSession) DomainSeparator() ([32]byte, error) {
+ return _SignatureUtils.Contract.DomainSeparator(&_SignatureUtils.CallOpts)
+}
diff --git a/pkg/bindings/SlashingLib/binding.go b/pkg/bindings/SlashingLib/binding.go
new file mode 100644
index 0000000000..7d63923c31
--- /dev/null
+++ b/pkg/bindings/SlashingLib/binding.go
@@ -0,0 +1,203 @@
+// Code generated - DO NOT EDIT.
+// This file is a generated binding and any manual changes will be lost.
+
+package SlashingLib
+
+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
+)
+
+// SlashingLibMetaData contains all meta data concerning the SlashingLib contract.
+var SlashingLibMetaData = &bind.MetaData{
+ ABI: "[]",
+ Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122079d8acd82faee8c5e28651bbc1515549e1c13cf6bb3869d1f31aa11a796fa9f664736f6c634300081b0033",
+}
+
+// SlashingLibABI is the input ABI used to generate the binding from.
+// Deprecated: Use SlashingLibMetaData.ABI instead.
+var SlashingLibABI = SlashingLibMetaData.ABI
+
+// SlashingLibBin is the compiled bytecode used for deploying new contracts.
+// Deprecated: Use SlashingLibMetaData.Bin instead.
+var SlashingLibBin = SlashingLibMetaData.Bin
+
+// DeploySlashingLib deploys a new Ethereum contract, binding an instance of SlashingLib to it.
+func DeploySlashingLib(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SlashingLib, error) {
+ parsed, err := SlashingLibMetaData.GetAbi()
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ if parsed == nil {
+ return common.Address{}, nil, nil, errors.New("GetABI returned nil")
+ }
+
+ address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SlashingLibBin), backend)
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ return address, tx, &SlashingLib{SlashingLibCaller: SlashingLibCaller{contract: contract}, SlashingLibTransactor: SlashingLibTransactor{contract: contract}, SlashingLibFilterer: SlashingLibFilterer{contract: contract}}, nil
+}
+
+// SlashingLib is an auto generated Go binding around an Ethereum contract.
+type SlashingLib struct {
+ SlashingLibCaller // Read-only binding to the contract
+ SlashingLibTransactor // Write-only binding to the contract
+ SlashingLibFilterer // Log filterer for contract events
+}
+
+// SlashingLibCaller is an auto generated read-only Go binding around an Ethereum contract.
+type SlashingLibCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// SlashingLibTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type SlashingLibTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// SlashingLibFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
+type SlashingLibFilterer struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// SlashingLibSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type SlashingLibSession struct {
+ Contract *SlashingLib // 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
+}
+
+// SlashingLibCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type SlashingLibCallerSession struct {
+ Contract *SlashingLibCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// SlashingLibTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type SlashingLibTransactorSession struct {
+ Contract *SlashingLibTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// SlashingLibRaw is an auto generated low-level Go binding around an Ethereum contract.
+type SlashingLibRaw struct {
+ Contract *SlashingLib // Generic contract binding to access the raw methods on
+}
+
+// SlashingLibCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type SlashingLibCallerRaw struct {
+ Contract *SlashingLibCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// SlashingLibTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type SlashingLibTransactorRaw struct {
+ Contract *SlashingLibTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewSlashingLib creates a new instance of SlashingLib, bound to a specific deployed contract.
+func NewSlashingLib(address common.Address, backend bind.ContractBackend) (*SlashingLib, error) {
+ contract, err := bindSlashingLib(address, backend, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &SlashingLib{SlashingLibCaller: SlashingLibCaller{contract: contract}, SlashingLibTransactor: SlashingLibTransactor{contract: contract}, SlashingLibFilterer: SlashingLibFilterer{contract: contract}}, nil
+}
+
+// NewSlashingLibCaller creates a new read-only instance of SlashingLib, bound to a specific deployed contract.
+func NewSlashingLibCaller(address common.Address, caller bind.ContractCaller) (*SlashingLibCaller, error) {
+ contract, err := bindSlashingLib(address, caller, nil, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &SlashingLibCaller{contract: contract}, nil
+}
+
+// NewSlashingLibTransactor creates a new write-only instance of SlashingLib, bound to a specific deployed contract.
+func NewSlashingLibTransactor(address common.Address, transactor bind.ContractTransactor) (*SlashingLibTransactor, error) {
+ contract, err := bindSlashingLib(address, nil, transactor, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &SlashingLibTransactor{contract: contract}, nil
+}
+
+// NewSlashingLibFilterer creates a new log filterer instance of SlashingLib, bound to a specific deployed contract.
+func NewSlashingLibFilterer(address common.Address, filterer bind.ContractFilterer) (*SlashingLibFilterer, error) {
+ contract, err := bindSlashingLib(address, nil, nil, filterer)
+ if err != nil {
+ return nil, err
+ }
+ return &SlashingLibFilterer{contract: contract}, nil
+}
+
+// bindSlashingLib binds a generic wrapper to an already deployed contract.
+func bindSlashingLib(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
+ parsed, err := SlashingLibMetaData.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 (_SlashingLib *SlashingLibRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _SlashingLib.Contract.SlashingLibCaller.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 (_SlashingLib *SlashingLibRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _SlashingLib.Contract.SlashingLibTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_SlashingLib *SlashingLibRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _SlashingLib.Contract.SlashingLibTransactor.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 (_SlashingLib *SlashingLibCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _SlashingLib.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 (_SlashingLib *SlashingLibTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _SlashingLib.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_SlashingLib *SlashingLibTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _SlashingLib.Contract.contract.Transact(opts, method, params...)
+}
diff --git a/pkg/bindings/Snapshots/binding.go b/pkg/bindings/Snapshots/binding.go
new file mode 100644
index 0000000000..2a6027eebf
--- /dev/null
+++ b/pkg/bindings/Snapshots/binding.go
@@ -0,0 +1,203 @@
+// Code generated - DO NOT EDIT.
+// This file is a generated binding and any manual changes will be lost.
+
+package Snapshots
+
+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
+)
+
+// SnapshotsMetaData contains all meta data concerning the Snapshots contract.
+var SnapshotsMetaData = &bind.MetaData{
+ ABI: "[{\"type\":\"error\",\"name\":\"InvalidSnapshotOrdering\",\"inputs\":[]}]",
+ Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122044bb5b18319bff57ed60efd0467beb2f05208fa5189c267bfd18f0a7f7417aa964736f6c634300081b0033",
+}
+
+// SnapshotsABI is the input ABI used to generate the binding from.
+// Deprecated: Use SnapshotsMetaData.ABI instead.
+var SnapshotsABI = SnapshotsMetaData.ABI
+
+// SnapshotsBin is the compiled bytecode used for deploying new contracts.
+// Deprecated: Use SnapshotsMetaData.Bin instead.
+var SnapshotsBin = SnapshotsMetaData.Bin
+
+// DeploySnapshots deploys a new Ethereum contract, binding an instance of Snapshots to it.
+func DeploySnapshots(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Snapshots, error) {
+ parsed, err := SnapshotsMetaData.GetAbi()
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ if parsed == nil {
+ return common.Address{}, nil, nil, errors.New("GetABI returned nil")
+ }
+
+ address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SnapshotsBin), backend)
+ if err != nil {
+ return common.Address{}, nil, nil, err
+ }
+ return address, tx, &Snapshots{SnapshotsCaller: SnapshotsCaller{contract: contract}, SnapshotsTransactor: SnapshotsTransactor{contract: contract}, SnapshotsFilterer: SnapshotsFilterer{contract: contract}}, nil
+}
+
+// Snapshots is an auto generated Go binding around an Ethereum contract.
+type Snapshots struct {
+ SnapshotsCaller // Read-only binding to the contract
+ SnapshotsTransactor // Write-only binding to the contract
+ SnapshotsFilterer // Log filterer for contract events
+}
+
+// SnapshotsCaller is an auto generated read-only Go binding around an Ethereum contract.
+type SnapshotsCaller struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// SnapshotsTransactor is an auto generated write-only Go binding around an Ethereum contract.
+type SnapshotsTransactor struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// SnapshotsFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
+type SnapshotsFilterer struct {
+ contract *bind.BoundContract // Generic contract wrapper for the low level calls
+}
+
+// SnapshotsSession is an auto generated Go binding around an Ethereum contract,
+// with pre-set call and transact options.
+type SnapshotsSession struct {
+ Contract *Snapshots // 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
+}
+
+// SnapshotsCallerSession is an auto generated read-only Go binding around an Ethereum contract,
+// with pre-set call options.
+type SnapshotsCallerSession struct {
+ Contract *SnapshotsCaller // Generic contract caller binding to set the session for
+ CallOpts bind.CallOpts // Call options to use throughout this session
+}
+
+// SnapshotsTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
+// with pre-set transact options.
+type SnapshotsTransactorSession struct {
+ Contract *SnapshotsTransactor // Generic contract transactor binding to set the session for
+ TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
+}
+
+// SnapshotsRaw is an auto generated low-level Go binding around an Ethereum contract.
+type SnapshotsRaw struct {
+ Contract *Snapshots // Generic contract binding to access the raw methods on
+}
+
+// SnapshotsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
+type SnapshotsCallerRaw struct {
+ Contract *SnapshotsCaller // Generic read-only contract binding to access the raw methods on
+}
+
+// SnapshotsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
+type SnapshotsTransactorRaw struct {
+ Contract *SnapshotsTransactor // Generic write-only contract binding to access the raw methods on
+}
+
+// NewSnapshots creates a new instance of Snapshots, bound to a specific deployed contract.
+func NewSnapshots(address common.Address, backend bind.ContractBackend) (*Snapshots, error) {
+ contract, err := bindSnapshots(address, backend, backend, backend)
+ if err != nil {
+ return nil, err
+ }
+ return &Snapshots{SnapshotsCaller: SnapshotsCaller{contract: contract}, SnapshotsTransactor: SnapshotsTransactor{contract: contract}, SnapshotsFilterer: SnapshotsFilterer{contract: contract}}, nil
+}
+
+// NewSnapshotsCaller creates a new read-only instance of Snapshots, bound to a specific deployed contract.
+func NewSnapshotsCaller(address common.Address, caller bind.ContractCaller) (*SnapshotsCaller, error) {
+ contract, err := bindSnapshots(address, caller, nil, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &SnapshotsCaller{contract: contract}, nil
+}
+
+// NewSnapshotsTransactor creates a new write-only instance of Snapshots, bound to a specific deployed contract.
+func NewSnapshotsTransactor(address common.Address, transactor bind.ContractTransactor) (*SnapshotsTransactor, error) {
+ contract, err := bindSnapshots(address, nil, transactor, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &SnapshotsTransactor{contract: contract}, nil
+}
+
+// NewSnapshotsFilterer creates a new log filterer instance of Snapshots, bound to a specific deployed contract.
+func NewSnapshotsFilterer(address common.Address, filterer bind.ContractFilterer) (*SnapshotsFilterer, error) {
+ contract, err := bindSnapshots(address, nil, nil, filterer)
+ if err != nil {
+ return nil, err
+ }
+ return &SnapshotsFilterer{contract: contract}, nil
+}
+
+// bindSnapshots binds a generic wrapper to an already deployed contract.
+func bindSnapshots(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
+ parsed, err := SnapshotsMetaData.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 (_Snapshots *SnapshotsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _Snapshots.Contract.SnapshotsCaller.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 (_Snapshots *SnapshotsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _Snapshots.Contract.SnapshotsTransactor.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_Snapshots *SnapshotsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _Snapshots.Contract.SnapshotsTransactor.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 (_Snapshots *SnapshotsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
+ return _Snapshots.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 (_Snapshots *SnapshotsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
+ return _Snapshots.Contract.contract.Transfer(opts)
+}
+
+// Transact invokes the (paid) contract method with params as input values.
+func (_Snapshots *SnapshotsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
+ return _Snapshots.Contract.contract.Transact(opts, method, params...)
+}
diff --git a/pkg/bindings/StrategyBase/binding.go b/pkg/bindings/StrategyBase/binding.go
index c929ed4783..ac35ee68e7 100644
--- a/pkg/bindings/StrategyBase/binding.go
+++ b/pkg/bindings/StrategyBase/binding.go
@@ -31,8 +31,8 @@ var (
// StrategyBaseMetaData contains all meta data concerning the StrategyBase contract.
var StrategyBaseMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"newShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"explanation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_underlyingToken\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"view\"},{\"type\":\"function\",\"name\":\"sharesToUnderlyingView\",\"inputs\":[{\"name\":\"amountShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"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\":\"view\"},{\"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\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"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\":\"StrategyTokenSet\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"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: "0x60a06040523480156200001157600080fd5b5060405162001ab438038062001ab4833981016040819052620000349162000114565b6001600160a01b0381166080526200004b62000052565b5062000146565b600054610100900460ff1615620000bf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000112576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012757600080fd5b81516001600160a01b03811681146200013f57600080fd5b9392505050565b60805161193d620001776000396000818161019901528181610570015281816109f50152610ac0015261193d6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046115a6565b610310565b005b61014f61015f3660046115c3565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e03660046115dc565b610510565b61014f6101f3366004611608565b610754565b6101c46102063660046115a6565b610869565b61014f61087d565b610232610221366004611650565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046115c3565b610949565b600054610177906201000090046001600160a01b031681565b6101c46102843660046115c3565b610994565b6101c46102973660046115a6565b61099f565b6102a46109ad565b60405161018b919061169d565b6101c46102bf3660046115a6565b6109cd565b61014f6102d23660046116d0565b610a62565b6101c46102e53660046115c3565b610c48565b6101c46102f83660046115c3565b610c81565b61014f61030b3660046115c3565b610c8c565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103879190611711565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061172e565b60405180910390fd5b6103c981610de8565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d9190611778565b6104595760405162461bcd60e51b81526004016103b79061179a565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610eed565b60335460006105f86103e8836117f8565b905060006103e8610607610f6d565b61061191906117f8565b9050600061061f8783611810565b90508061062c8489611827565b6106369190611846565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a686856117f8565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156107305760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f534841524553600000000060648201526084016103b7565b610749826103e860335461074491906117f8565b610fdf565b505050505092915050565b600054610100900460ff16158080156107745750600054600160ff909116105b8061078e5750303b15801561078e575060005460ff166001145b6107f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610814576000805461ff0019166101001790555b61081e8383611033565b8015610864576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610877610258836109cd565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190611778565b61090a5760405162461bcd60e51b81526004016103b79061179a565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e860335461095c91906117f8565b905060006103e861096b610f6d565b61097591906117f8565b9050816109828583611827565b61098c9190611846565b949350505050565b600061087782610c48565b60006108776102f8836109cd565b60606040518060800160405280604d81526020016118bb604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610a3e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190611868565b6001805460029081161415610ab55760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610b3884848461117e565b60335480831115610bc75760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610bd56103e8836117f8565b905060006103e8610be4610f6d565b610bee91906117f8565b9050600082610bfd8784611827565b610c079190611846565b9050610c138685611810565b603355610c33610c238284611810565b6103e860335461074491906117f8565b610c3e888883611201565b5050505050505050565b6000806103e8603354610c5b91906117f8565b905060006103e8610c6a610f6d565b610c7491906117f8565b9050806109828386611827565b600061087782610949565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190611711565b6001600160a01b0316336001600160a01b031614610d335760405162461bcd60e51b81526004016103b79061172e565b600154198119600154191614610db15760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610e765760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610f695760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190611868565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be88161101384670de0b6b3a7640000611827565b61101d9190611846565b6040519081526020015b60405180910390a15050565b600054610100900460ff1661109e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b0384161790556110c4816000611215565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507603260009054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190611881565b604080516001600160a01b03909316835260ff909116602083015201611027565b6032546001600160a01b038381169116146108645760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6108646001600160a01b0383168483611301565b6000546201000090046001600160a01b031615801561123c57506001600160a01b03821615155b6112be5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610f6982610de8565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526108649286929160009161139191851690849061140e565b80519091501561086457808060200190518101906113af9190611778565b6108645760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b606061141d8484600085611427565b90505b9392505050565b6060824710156114885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6114df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b031685876040516114fb919061189e565b60006040518083038185875af1925050503d8060008114611538576040519150601f19603f3d011682016040523d82523d6000602084013e61153d565b606091505b509150915061154d828286611558565b979650505050505050565b60608315611567575081611420565b8251156115775782518084602001fd5b8160405162461bcd60e51b81526004016103b7919061169d565b6001600160a01b03811681146103c957600080fd5b6000602082840312156115b857600080fd5b813561142081611591565b6000602082840312156115d557600080fd5b5035919050565b600080604083850312156115ef57600080fd5b82356115fa81611591565b946020939093013593505050565b6000806040838503121561161b57600080fd5b823561162681611591565b9150602083013561163681611591565b809150509250929050565b60ff811681146103c957600080fd5b60006020828403121561166257600080fd5b813561142081611641565b60005b83811015611688578181015183820152602001611670565b83811115611697576000848401525b50505050565b60208152600082518060208401526116bc81604085016020870161166d565b601f01601f19169190910160400192915050565b6000806000606084860312156116e557600080fd5b83356116f081611591565b9250602084013561170081611591565b929592945050506040919091013590565b60006020828403121561172357600080fd5b815161142081611591565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561178a57600080fd5b8151801515811461142057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561180b5761180b6117e2565b500190565b600082821015611822576118226117e2565b500390565b6000816000190483118215151615611841576118416117e2565b500290565b60008261186357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561187a57600080fd5b5051919050565b60006020828403121561189357600080fd5b815161142081611641565b600082516118b081846020870161166d565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212203c189594f4a16e52e7d942a144a63a3bdfbaea578dc8107360a1a2ab4061f65f64736f6c634300080c0033",
+ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"newShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"explanation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_underlyingToken\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"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\":\"view\"},{\"type\":\"function\",\"name\":\"sharesToUnderlyingView\",\"inputs\":[{\"name\":\"amountShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"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\":\"view\"},{\"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\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"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\":\"StrategyTokenSet\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"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\":\"BalanceExceedsMaxTotalDeposits\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxPerDepositExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewSharesZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnderlyingToken\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TotalSharesExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalAmountExceedsTotalDeposits\",\"inputs\":[]}]",
+ Bin: "0x60c060405234801561000f575f5ffd5b506040516113a63803806113a683398101604081905261002e9161014b565b806001600160a01b038116610056576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03908116608052821660a052610071610078565b5050610183565b5f54610100900460ff16156100e35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610132575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610148575f5ffd5b50565b5f5f6040838503121561015c575f5ffd5b825161016781610134565b602084015190925061017881610134565b809150509250929050565b60805160a0516111d86101ce5f395f81816101750152818161040201528181610796015261083301525f818161022b0152818161030f01528181610543015261096101526111d85ff3fe608060405234801561000f575f5ffd5b5060043610610127575f3560e01c8063886f1195116100a9578063ce7c2ac21161006e578063ce7c2ac21461029b578063d9caed12146102ae578063e3dae51c146102c1578063f3e73875146102d4578063fabc1cbc146102e7575f5ffd5b8063886f1195146102265780638c8710191461024d5780638f6a624014610260578063ab5921e114610273578063c4d66de814610288575f5ffd5b8063553ca5f8116100ef578063553ca5f8146101c1578063595c6a67146101d45780635ac86ab7146101dc5780635c975abb1461020b5780637a8b263714610213575f5ffd5b8063136439dd1461012b5780632495a5991461014057806339b70e38146101705780633a98ef391461019757806347e7ef24146101ae575b5f5ffd5b61013e610139366004610f4d565b6102fa565b005b603254610153906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101537f000000000000000000000000000000000000000000000000000000000000000081565b6101a060335481565b604051908152602001610167565b6101a06101bc366004610f7b565b6103cf565b6101a06101cf366004610fa5565b61051b565b61013e61052e565b6101fb6101ea366004610fd5565b6001805460ff9092161b9081161490565b6040519015158152602001610167565b6001546101a0565b6101a0610221366004610f4d565b6105dd565b6101537f000000000000000000000000000000000000000000000000000000000000000081565b6101a061025b366004610f4d565b610626565b6101a061026e366004610fa5565b610630565b61027b61063d565b6040516101679190610ff0565b61013e610296366004610fa5565b61065d565b6101a06102a9366004610fa5565b61076f565b61013e6102bc366004611025565b610801565b6101a06102cf366004610f4d565b61091e565b6101a06102e2366004610f4d565b610955565b61013e6102f5366004610f4d565b61095f565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561035c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103809190611063565b61039d57604051631d77d47760e21b815260040160405180910390fd5b60015481811681146103c25760405163c61dca5d60e01b815260040160405180910390fd5b6103cb82610a75565b5050565b600180545f9182918116036103f75760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610440576040516348da714f60e01b815260040160405180910390fd5b61044a8484610ab2565b6033545f61045a6103e883611096565b90505f6103e8610468610ae0565b6104729190611096565b90505f61047f87836110a9565b90508061048c84896110bc565b61049691906110d3565b9550855f036104b857604051630c392ed360e11b815260040160405180910390fd5b6104c28685611096565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156104f757604051632f14e8a360e11b815260040160405180910390fd5b610510826103e860335461050b9190611096565b610b4f565b505050505092915050565b5f6105286102218361076f565b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610590573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b49190611063565b6105d157604051631d77d47760e21b815260040160405180910390fd5b6105db5f19610a75565b565b5f5f6103e86033546105ef9190611096565b90505f6103e86105fd610ae0565b6106079190611096565b90508161061485836110bc565b61061e91906110d3565b949350505050565b5f6105288261091e565b5f6105286102e28361076f565b60606040518060800160405280604d8152602001611156604d9139905090565b5f54610100900460ff161580801561067b57505f54600160ff909116105b806106945750303b15801561069457505f5460ff166001145b6106fc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561071d575f805461ff0019166101001790555b61072682610b9b565b80156103cb575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa1580156107dd573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052891906110f2565b600180546002908116036108285760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610871576040516348da714f60e01b815260040160405180910390fd5b61087c848484610ce6565b603354808311156108a057604051630b469df360e41b815260040160405180910390fd5b5f6108ad6103e883611096565b90505f6103e86108bb610ae0565b6108c59190611096565b90505f826108d387846110bc565b6108dd91906110d3565b90506108e986856110a9565b6033556109096108f982846110a9565b6103e860335461050b9190611096565b610914888883610d19565b5050505050505050565b5f5f6103e86033546109309190611096565b90505f6103e861093e610ae0565b6109489190611096565b90508061061483866110bc565b5f610528826105dd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109df9190611109565b6001600160a01b0316336001600160a01b031614610a105760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610a375760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6032546001600160a01b038381169116146103cb57604051630312abdd60e61b815260040160405180910390fd5b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610b26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4a91906110f2565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610b8384670de0b6b3a76400006110bc565b610b8d91906110d3565b604051908152602001610763565b5f54610100900460ff16610c055760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106f3565b603280546001600160a01b0319166001600160a01b038316179055610c295f610a75565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c9b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cbf9190611124565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b03838116911614610d1457604051630312abdd60e61b815260040160405180910390fd5b505050565b604080516001600160a01b03858116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610d1492908516918691859185918591905f90610db19084908490610e30565b905080515f1480610dd1575080806020019051810190610dd19190611063565b610d145760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106f3565b606061061e84845f85855f5f866001600160a01b03168587604051610e55919061113f565b5f6040518083038185875af1925050503d805f8114610e8f576040519150601f19603f3d011682016040523d82523d5f602084013e610e94565b606091505b5091509150610ea587838387610eb0565b979650505050505050565b60608315610f1e5782515f03610f17576001600160a01b0385163b610f175760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106f3565b508161061e565b61061e8383815115610f335781518083602001fd5b8060405162461bcd60e51b81526004016106f39190610ff0565b5f60208284031215610f5d575f5ffd5b5035919050565b6001600160a01b0381168114610f78575f5ffd5b50565b5f5f60408385031215610f8c575f5ffd5b8235610f9781610f64565b946020939093013593505050565b5f60208284031215610fb5575f5ffd5b8135610fc081610f64565b9392505050565b60ff81168114610f78575f5ffd5b5f60208284031215610fe5575f5ffd5b8135610fc081610fc7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f60608486031215611037575f5ffd5b833561104281610f64565b9250602084013561105281610f64565b929592945050506040919091013590565b5f60208284031215611073575f5ffd5b81518015158114610fc0575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561052857610528611082565b8181038181111561052857610528611082565b808202811582820484141761052857610528611082565b5f826110ed57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611102575f5ffd5b5051919050565b5f60208284031215611119575f5ffd5b8151610fc081610f64565b5f60208284031215611134575f5ffd5b8151610fc081610fc7565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220601b35d308a21bc556eb3a47693a37c1997871cb19c44ae4188b093a82e9065f64736f6c634300081b0033",
}
// StrategyBaseABI is the input ABI used to generate the binding from.
@@ -44,7 +44,7 @@ var StrategyBaseABI = StrategyBaseMetaData.ABI
var StrategyBaseBin = StrategyBaseMetaData.Bin
// DeployStrategyBase deploys a new Ethereum contract, binding an instance of StrategyBase to it.
-func DeployStrategyBase(auth *bind.TransactOpts, backend bind.ContractBackend, _strategyManager common.Address) (common.Address, *types.Transaction, *StrategyBase, error) {
+func DeployStrategyBase(auth *bind.TransactOpts, backend bind.ContractBackend, _strategyManager common.Address, _pauserRegistry common.Address) (common.Address, *types.Transaction, *StrategyBase, error) {
parsed, err := StrategyBaseMetaData.GetAbi()
if err != nil {
return common.Address{}, nil, nil, err
@@ -53,7 +53,7 @@ func DeployStrategyBase(auth *bind.TransactOpts, backend bind.ContractBackend, _
return common.Address{}, nil, nil, errors.New("GetABI returned nil")
}
- address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StrategyBaseBin), backend, _strategyManager)
+ address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StrategyBaseBin), backend, _strategyManager, _pauserRegistry)
if err != nil {
return common.Address{}, nil, nil, err
}
@@ -626,25 +626,25 @@ func (_StrategyBase *StrategyBaseTransactorSession) Deposit(token common.Address
return _StrategyBase.Contract.Deposit(&_StrategyBase.TransactOpts, token, amount)
}
-// Initialize is a paid mutator transaction binding the contract method 0x485cc955.
+// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8.
//
-// Solidity: function initialize(address _underlyingToken, address _pauserRegistry) returns()
-func (_StrategyBase *StrategyBaseTransactor) Initialize(opts *bind.TransactOpts, _underlyingToken common.Address, _pauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyBase.contract.Transact(opts, "initialize", _underlyingToken, _pauserRegistry)
+// Solidity: function initialize(address _underlyingToken) returns()
+func (_StrategyBase *StrategyBaseTransactor) Initialize(opts *bind.TransactOpts, _underlyingToken common.Address) (*types.Transaction, error) {
+ return _StrategyBase.contract.Transact(opts, "initialize", _underlyingToken)
}
-// Initialize is a paid mutator transaction binding the contract method 0x485cc955.
+// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8.
//
-// Solidity: function initialize(address _underlyingToken, address _pauserRegistry) returns()
-func (_StrategyBase *StrategyBaseSession) Initialize(_underlyingToken common.Address, _pauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyBase.Contract.Initialize(&_StrategyBase.TransactOpts, _underlyingToken, _pauserRegistry)
+// Solidity: function initialize(address _underlyingToken) returns()
+func (_StrategyBase *StrategyBaseSession) Initialize(_underlyingToken common.Address) (*types.Transaction, error) {
+ return _StrategyBase.Contract.Initialize(&_StrategyBase.TransactOpts, _underlyingToken)
}
-// Initialize is a paid mutator transaction binding the contract method 0x485cc955.
+// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8.
//
-// Solidity: function initialize(address _underlyingToken, address _pauserRegistry) returns()
-func (_StrategyBase *StrategyBaseTransactorSession) Initialize(_underlyingToken common.Address, _pauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyBase.Contract.Initialize(&_StrategyBase.TransactOpts, _underlyingToken, _pauserRegistry)
+// Solidity: function initialize(address _underlyingToken) returns()
+func (_StrategyBase *StrategyBaseTransactorSession) Initialize(_underlyingToken common.Address) (*types.Transaction, error) {
+ return _StrategyBase.Contract.Initialize(&_StrategyBase.TransactOpts, _underlyingToken)
}
// Pause is a paid mutator transaction binding the contract method 0x136439dd.
@@ -689,27 +689,6 @@ func (_StrategyBase *StrategyBaseTransactorSession) PauseAll() (*types.Transacti
return _StrategyBase.Contract.PauseAll(&_StrategyBase.TransactOpts)
}
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_StrategyBase *StrategyBaseTransactor) SetPauserRegistry(opts *bind.TransactOpts, newPauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyBase.contract.Transact(opts, "setPauserRegistry", newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_StrategyBase *StrategyBaseSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyBase.Contract.SetPauserRegistry(&_StrategyBase.TransactOpts, newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_StrategyBase *StrategyBaseTransactorSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyBase.Contract.SetPauserRegistry(&_StrategyBase.TransactOpts, newPauserRegistry)
-}
-
// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc.
//
// Solidity: function unpause(uint256 newPausedStatus) returns()
@@ -1186,141 +1165,6 @@ func (_StrategyBase *StrategyBaseFilterer) ParsePaused(log types.Log) (*Strategy
return event, nil
}
-// StrategyBasePauserRegistrySetIterator is returned from FilterPauserRegistrySet and is used to iterate over the raw logs and unpacked data for PauserRegistrySet events raised by the StrategyBase contract.
-type StrategyBasePauserRegistrySetIterator struct {
- Event *StrategyBasePauserRegistrySet // 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 *StrategyBasePauserRegistrySetIterator) 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(StrategyBasePauserRegistrySet)
- 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(StrategyBasePauserRegistrySet)
- 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 *StrategyBasePauserRegistrySetIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *StrategyBasePauserRegistrySetIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// StrategyBasePauserRegistrySet represents a PauserRegistrySet event raised by the StrategyBase contract.
-type StrategyBasePauserRegistrySet struct {
- PauserRegistry common.Address
- NewPauserRegistry common.Address
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterPauserRegistrySet is a free log retrieval operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_StrategyBase *StrategyBaseFilterer) FilterPauserRegistrySet(opts *bind.FilterOpts) (*StrategyBasePauserRegistrySetIterator, error) {
-
- logs, sub, err := _StrategyBase.contract.FilterLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return &StrategyBasePauserRegistrySetIterator{contract: _StrategyBase.contract, event: "PauserRegistrySet", logs: logs, sub: sub}, nil
-}
-
-// WatchPauserRegistrySet is a free log subscription operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_StrategyBase *StrategyBaseFilterer) WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *StrategyBasePauserRegistrySet) (event.Subscription, error) {
-
- logs, sub, err := _StrategyBase.contract.WatchLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(StrategyBasePauserRegistrySet)
- if err := _StrategyBase.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return err
- }
- event.Raw = log
-
- select {
- case sink <- event:
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- }
- }), nil
-}
-
-// ParsePauserRegistrySet is a log parse operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_StrategyBase *StrategyBaseFilterer) ParsePauserRegistrySet(log types.Log) (*StrategyBasePauserRegistrySet, error) {
- event := new(StrategyBasePauserRegistrySet)
- if err := _StrategyBase.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
// StrategyBaseStrategyTokenSetIterator is returned from FilterStrategyTokenSet and is used to iterate over the raw logs and unpacked data for StrategyTokenSet events raised by the StrategyBase contract.
type StrategyBaseStrategyTokenSetIterator struct {
Event *StrategyBaseStrategyTokenSet // Event containing the contract specifics and raw log
diff --git a/pkg/bindings/StrategyBaseTVLLimits/binding.go b/pkg/bindings/StrategyBaseTVLLimits/binding.go
index f38799fa14..fa4679dba3 100644
--- a/pkg/bindings/StrategyBaseTVLLimits/binding.go
+++ b/pkg/bindings/StrategyBaseTVLLimits/binding.go
@@ -31,8 +31,8 @@ var (
// StrategyBaseTVLLimitsMetaData contains all meta data concerning the StrategyBaseTVLLimits contract.
var StrategyBaseTVLLimitsMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"newShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"explanation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getTVLLimits\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_maxPerDeposit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_maxTotalDeposits\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_underlyingToken\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_underlyingToken\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"maxPerDeposit\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"maxTotalDeposits\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setTVLLimits\",\"inputs\":[{\"name\":\"newMaxPerDeposit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"newMaxTotalDeposits\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"view\"},{\"type\":\"function\",\"name\":\"sharesToUnderlyingView\",\"inputs\":[{\"name\":\"amountShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"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\":\"view\"},{\"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\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxPerDepositUpdated\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxTotalDepositsUpdated\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"StrategyTokenSet\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"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: "0x60a06040523480156200001157600080fd5b5060405162001f4d38038062001f4d833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611dd46200017960003960008181610216015281816107a901528181610be70152610cb20152611dd46000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a1366004611983565b6103ba565b005b6101a66101b63660046119cd565b61049d565b6101a66101c93660046119ea565b610550565b6101a66101dc366004611a0c565b610605565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f000000000000000000000000000000000000000000000000000000000000000081565b61024160335481565b604051908152602001610208565b61024160645481565b610241610266366004611a25565b610749565b6101a6610279366004611a51565b61098d565b61024161028c3660046119cd565b610a5b565b6101a6610a6f565b6102b86102a7366004611a99565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e7366004611a0c565b610b3b565b6000546101f4906201000090046001600160a01b031681565b610241610313366004611a0c565b610b86565b6102416103263660046119cd565b610b91565b610333610b9f565b6040516102089190611ae6565b61024161034e3660046119cd565b610bbf565b6101a6610361366004611b19565b610c54565b60645460655460408051928352602083019190915201610208565b61024161038f366004611a0c565b610e3a565b6102416103a2366004611a0c565b610e73565b6101a66103b5366004611a0c565b610e7e565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b815260040161041090611b5a565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b6104468585610fda565b61045083836110e7565b8015610496576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105149190611ba8565b6001600160a01b0316336001600160a01b0316146105445760405162461bcd60e51b815260040161041090611bc5565b61054d8161123a565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c79190611ba8565b6001600160a01b0316336001600160a01b0316146105f75760405162461bcd60e51b815260040161041090611bc5565b6106018282610fda565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106769190611c0f565b6106925760405162461bcd60e51b815260040161041090611c31565b6001548181161461070b5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001805460009182918116141561079e5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108165760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610820848461133f565b60335460006108316103e883611c8f565b905060006103e8610840611421565b61084a9190611c8f565b905060006108588783611ca7565b9050806108658489611cbe565b61086f9190611cdd565b9550856108d55760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6108df8685611c8f565b60338190556f4b3b4ca85a86c47a098a223fffffffff10156109695760405162461bcd60e51b815260206004820152603c60248201527f5374726174656779426173652e6465706f7369743a20746f74616c536861726560448201527f73206578636565647320604d41585f544f54414c5f53484152455360000000006064820152608401610410565b610982826103e860335461097d9190611c8f565b611493565b505050505092915050565b600054610100900460ff16158080156109ad5750600054600160ff909116105b806109c75750303b1580156109c7575060005460ff166001145b6109e35760405162461bcd60e51b815260040161041090611b5a565b6000805460ff191660011790558015610a06576000805461ff0019166101001790555b610a1083836110e7565b8015610a56576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610a696102e783610bbf565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610abc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae09190611c0f565b610afc5760405162461bcd60e51b815260040161041090611c31565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610b4e9190611c8f565b905060006103e8610b5d611421565b610b679190611c8f565b905081610b748583611cbe565b610b7e9190611cdd565b949350505050565b6000610a6982610e3a565b6000610a696103a283610bbf565b60606040518060800160405280604d8152602001611d52604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a699190611cff565b6001805460029081161415610ca75760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d1f5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610d2a8484846114df565b60335480831115610db95760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610dc76103e883611c8f565b905060006103e8610dd6611421565b610de09190611c8f565b9050600082610def8784611cbe565b610df99190611cdd565b9050610e058685611ca7565b603355610e25610e158284611ca7565b6103e860335461097d9190611c8f565b610e30888883611562565b5050505050505050565b6000806103e8603354610e4d9190611c8f565b905060006103e8610e5c611421565b610e669190611c8f565b905080610b748386611cbe565b6000610a6982610b3b565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef59190611ba8565b6001600160a01b0316336001600160a01b031614610f255760405162461bcd60e51b815260040161041090611bc5565b600154198119600154191614610fa35760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161073e565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a1808211156110dc5760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166111525760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b038416179055611178816000611576565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507603260009054906101000a90046001600160a01b0316836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112119190611d18565b604080516001600160a01b03909316835260ff9091166020830152015b60405180910390a15050565b6001600160a01b0381166112c85760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6064548111156113a95760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b6065546113b4611421565b11156114175760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b6106018282611662565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561146a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148e9190611cff565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be8816114c784670de0b6b3a7640000611cbe565b6114d19190611cdd565b60405190815260200161122e565b6032546001600160a01b03838116911614610a565760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b610a566001600160a01b03831684836116de565b6000546201000090046001600160a01b031615801561159d57506001600160a01b03821615155b61161f5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26106018261123a565b6032546001600160a01b038381169116146106015760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610a569286929160009161176e9185169084906117eb565b805190915015610a56578080602001905181019061178c9190611c0f565b610a565760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b60606117fa8484600085611804565b90505b9392505050565b6060824710156118655760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6118bc5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b031685876040516118d89190611d35565b60006040518083038185875af1925050503d8060008114611915576040519150601f19603f3d011682016040523d82523d6000602084013e61191a565b606091505b509150915061192a828286611935565b979650505050505050565b606083156119445750816117fd565b8251156119545782518084602001fd5b8160405162461bcd60e51b81526004016104109190611ae6565b6001600160a01b038116811461054d57600080fd5b6000806000806080858703121561199957600080fd5b843593506020850135925060408501356119b28161196e565b915060608501356119c28161196e565b939692955090935050565b6000602082840312156119df57600080fd5b81356117fd8161196e565b600080604083850312156119fd57600080fd5b50508035926020909101359150565b600060208284031215611a1e57600080fd5b5035919050565b60008060408385031215611a3857600080fd5b8235611a438161196e565b946020939093013593505050565b60008060408385031215611a6457600080fd5b8235611a6f8161196e565b91506020830135611a7f8161196e565b809150509250929050565b60ff8116811461054d57600080fd5b600060208284031215611aab57600080fd5b81356117fd81611a8a565b60005b83811015611ad1578181015183820152602001611ab9565b83811115611ae0576000848401525b50505050565b6020815260008251806020840152611b05816040850160208701611ab6565b601f01601f19169190910160400192915050565b600080600060608486031215611b2e57600080fd5b8335611b398161196e565b92506020840135611b498161196e565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600060208284031215611bba57600080fd5b81516117fd8161196e565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c2157600080fd5b815180151581146117fd57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611ca257611ca2611c79565b500190565b600082821015611cb957611cb9611c79565b500390565b6000816000190483118215151615611cd857611cd8611c79565b500290565b600082611cfa57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611d1157600080fd5b5051919050565b600060208284031215611d2a57600080fd5b81516117fd81611a8a565b60008251611d47818460208701611ab6565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220ae191a686b20435062f14027adbcd93bce8ba8dab6896d1d893b5478c9d9197f64736f6c634300080c0033",
+ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"newShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"explanation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getTVLLimits\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_maxPerDeposit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_maxTotalDeposits\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_underlyingToken\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_underlyingToken\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"maxPerDeposit\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"maxTotalDeposits\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"setTVLLimits\",\"inputs\":[{\"name\":\"newMaxPerDeposit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"newMaxTotalDeposits\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"view\"},{\"type\":\"function\",\"name\":\"sharesToUnderlyingView\",\"inputs\":[{\"name\":\"amountShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"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\":\"view\"},{\"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\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxPerDepositUpdated\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MaxTotalDepositsUpdated\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"StrategyTokenSet\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"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\":\"BalanceExceedsMaxTotalDeposits\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MaxPerDepositExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewSharesZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnderlyingToken\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TotalSharesExceedsMax\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalAmountExceedsTotalDeposits\",\"inputs\":[]}]",
+ Bin: "0x60c060405234801561000f575f5ffd5b5060405161173e38038061173e83398101604081905261002e9161014f565b8181806001600160a01b038116610058576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03908116608052821660a05261007361007c565b50505050610187565b5f54610100900460ff16156100e75760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610136575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461014c575f5ffd5b50565b5f5f60408385031215610160575f5ffd5b825161016b81610138565b602084015190925061017c81610138565b809150509250929050565b60805160a0516115656101d95f395f81816101ce01528181610556015281816109790152610a1601525f81816102960152818161039501528181610467015281816106970152610b4401526115655ff3fe608060405234801561000f575f5ffd5b506004361061016d575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc11461033f578063e3dae51c1461035a578063f3e738751461036d578063fabc1cbc14610380575f5ffd5b8063c4d66de814610306578063ce7c2ac214610319578063d9caed121461032c575f5ffd5b80637a8b26371461027e578063886f1195146102915780638c871019146102b85780638f6a6240146102cb578063a6ab36f2146102de578063ab5921e1146102f1575f5ffd5b806347e7ef241161012a57806347e7ef2414610210578063553ca5f814610223578063595c6a67146102365780635ac86ab71461023e5780635c975abb1461026d57806361b01b5d14610275575f5ffd5b806311c70c9d14610171578063136439dd146101865780632495a5991461019957806339b70e38146101c95780633a98ef39146101f057806343fe08b014610207575b5f5ffd5b61018461017f366004611236565b610393565b005b610184610194366004611256565b610452565b6032546101ac906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101ac7f000000000000000000000000000000000000000000000000000000000000000081565b6101f960335481565b6040519081526020016101c0565b6101f960645481565b6101f961021e366004611284565b610523565b6101f96102313660046112ae565b61066f565b610184610682565b61025d61024c3660046112de565b6001805460ff9092161b9081161490565b60405190151581526020016101c0565b6001546101f9565b6101f960655481565b6101f961028c366004611256565b610731565b6101ac7f000000000000000000000000000000000000000000000000000000000000000081565b6101f96102c6366004611256565b61077a565b6101f96102d93660046112ae565b610784565b6101846102ec3660046112f9565b610791565b6102f961086c565b6040516101c0919061132f565b6101846103143660046112ae565b61088c565b6101f96103273660046112ae565b610952565b61018461033a366004611364565b6109e4565b606454606554604080519283526020830191909152016101c0565b6101f9610368366004611256565b610b01565b6101f961037b366004611256565b610b38565b61018461038e366004611256565b610b42565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ef573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061041391906113a2565b6001600160a01b0316336001600160a01b0316146104445760405163794821ff60e01b815260040160405180910390fd5b61044e8282610c58565b5050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d891906113bd565b6104f557604051631d77d47760e21b815260040160405180910390fd5b600154818116811461051a5760405163c61dca5d60e01b815260040160405180910390fd5b61044e82610cfc565b600180545f91829181160361054b5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610594576040516348da714f60e01b815260040160405180910390fd5b61059e8484610d39565b6033545f6105ae6103e8836113f0565b90505f6103e86105bc610d90565b6105c691906113f0565b90505f6105d38783611403565b9050806105e08489611416565b6105ea919061142d565b9550855f0361060c57604051630c392ed360e11b815260040160405180910390fd5b61061686856113f0565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561064b57604051632f14e8a360e11b815260040160405180910390fd5b610664826103e860335461065f91906113f0565b610dff565b505050505092915050565b5f61067c61028c83610952565b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156106e4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070891906113bd565b61072557604051631d77d47760e21b815260040160405180910390fd5b61072f5f19610cfc565b565b5f5f6103e860335461074391906113f0565b90505f6103e8610751610d90565b61075b91906113f0565b9050816107688583611416565b610772919061142d565b949350505050565b5f61067c82610b01565b5f61067c61037b83610952565b5f54610100900460ff16158080156107af57505f54600160ff909116105b806107c85750303b1580156107c857505f5460ff166001145b6107ed5760405162461bcd60e51b81526004016107e49061144c565b60405180910390fd5b5f805460ff19166001179055801561080e575f805461ff0019166101001790555b6108188484610c58565b61082182610e4b565b8015610866575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d81526020016114e3604d9139905090565b5f54610100900460ff16158080156108aa57505f54600160ff909116105b806108c35750303b1580156108c357505f5460ff166001145b6108df5760405162461bcd60e51b81526004016107e49061144c565b5f805460ff191660011790558015610900575f805461ff0019166101001790555b61090982610e4b565b801561044e575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa1580156109c0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067c919061149a565b60018054600290811603610a0b5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a54576040516348da714f60e01b815260040160405180910390fd5b610a5f848484610f96565b60335480831115610a8357604051630b469df360e41b815260040160405180910390fd5b5f610a906103e8836113f0565b90505f6103e8610a9e610d90565b610aa891906113f0565b90505f82610ab68784611416565b610ac0919061142d565b9050610acc8685611403565b603355610aec610adc8284611403565b6103e860335461065f91906113f0565b610af7888883610fc9565b5050505050505050565b5f5f6103e8603354610b1391906113f0565b90505f6103e8610b21610d90565b610b2b91906113f0565b9050806107688386611416565b5f61067c82610731565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b9e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc291906113a2565b6001600160a01b0316336001600160a01b031614610bf35760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c1a5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610cf15760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610d5c5760405163052b07b760e21b815260040160405180910390fd5b606554610d67610d90565b1115610d865760405163d86bae6760e01b815260040160405180910390fd5b61044e8282610fdd565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610dd6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dfa919061149a565b905090565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e3384670de0b6b3a7640000611416565b610e3d919061142d565b604051908152602001610946565b5f54610100900460ff16610eb55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107e4565b603280546001600160a01b0319166001600160a01b038316179055610ed95f610cfc565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6f91906114b1565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b03838116911614610fc457604051630312abdd60e61b815260040160405180910390fd5b505050565b610fc46001600160a01b038316848361100b565b6032546001600160a01b0383811691161461044e57604051630312abdd60e61b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610fc4928692915f9161109a918516908490611119565b905080515f14806110ba5750808060200190518101906110ba91906113bd565b610fc45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107e4565b606061077284845f85855f5f866001600160a01b0316858760405161113e91906114cc565b5f6040518083038185875af1925050503d805f8114611178576040519150601f19603f3d011682016040523d82523d5f602084013e61117d565b606091505b509150915061118e87838387611199565b979650505050505050565b606083156112075782515f03611200576001600160a01b0385163b6112005760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107e4565b5081610772565b610772838381511561121c5781518083602001fd5b8060405162461bcd60e51b81526004016107e4919061132f565b5f5f60408385031215611247575f5ffd5b50508035926020909101359150565b5f60208284031215611266575f5ffd5b5035919050565b6001600160a01b0381168114611281575f5ffd5b50565b5f5f60408385031215611295575f5ffd5b82356112a08161126d565b946020939093013593505050565b5f602082840312156112be575f5ffd5b81356112c98161126d565b9392505050565b60ff81168114611281575f5ffd5b5f602082840312156112ee575f5ffd5b81356112c9816112d0565b5f5f5f6060848603121561130b575f5ffd5b833592506020840135915060408401356113248161126d565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f60608486031215611376575f5ffd5b83356113818161126d565b925060208401356113918161126d565b929592945050506040919091013590565b5f602082840312156113b2575f5ffd5b81516112c98161126d565b5f602082840312156113cd575f5ffd5b815180151581146112c9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561067c5761067c6113dc565b8181038181111561067c5761067c6113dc565b808202811582820484141761067c5761067c6113dc565b5f8261144757634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f602082840312156114aa575f5ffd5b5051919050565b5f602082840312156114c1575f5ffd5b81516112c9816112d0565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212205df8ec77e37a2856c3fac4bcc3eb4eefddc60d13421f6d5549020a803042ff6564736f6c634300081b0033",
}
// StrategyBaseTVLLimitsABI is the input ABI used to generate the binding from.
@@ -44,7 +44,7 @@ var StrategyBaseTVLLimitsABI = StrategyBaseTVLLimitsMetaData.ABI
var StrategyBaseTVLLimitsBin = StrategyBaseTVLLimitsMetaData.Bin
// DeployStrategyBaseTVLLimits deploys a new Ethereum contract, binding an instance of StrategyBaseTVLLimits to it.
-func DeployStrategyBaseTVLLimits(auth *bind.TransactOpts, backend bind.ContractBackend, _strategyManager common.Address) (common.Address, *types.Transaction, *StrategyBaseTVLLimits, error) {
+func DeployStrategyBaseTVLLimits(auth *bind.TransactOpts, backend bind.ContractBackend, _strategyManager common.Address, _pauserRegistry common.Address) (common.Address, *types.Transaction, *StrategyBaseTVLLimits, error) {
parsed, err := StrategyBaseTVLLimitsMetaData.GetAbi()
if err != nil {
return common.Address{}, nil, nil, err
@@ -53,7 +53,7 @@ func DeployStrategyBaseTVLLimits(auth *bind.TransactOpts, backend bind.ContractB
return common.Address{}, nil, nil, errors.New("GetABI returned nil")
}
- address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StrategyBaseTVLLimitsBin), backend, _strategyManager)
+ address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StrategyBaseTVLLimitsBin), backend, _strategyManager, _pauserRegistry)
if err != nil {
return common.Address{}, nil, nil, err
}
@@ -720,46 +720,46 @@ func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactorSession) Deposit(to
return _StrategyBaseTVLLimits.Contract.Deposit(&_StrategyBaseTVLLimits.TransactOpts, token, amount)
}
-// Initialize is a paid mutator transaction binding the contract method 0x019e2729.
+// Initialize is a paid mutator transaction binding the contract method 0xa6ab36f2.
//
-// Solidity: function initialize(uint256 _maxPerDeposit, uint256 _maxTotalDeposits, address _underlyingToken, address _pauserRegistry) returns()
-func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactor) Initialize(opts *bind.TransactOpts, _maxPerDeposit *big.Int, _maxTotalDeposits *big.Int, _underlyingToken common.Address, _pauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyBaseTVLLimits.contract.Transact(opts, "initialize", _maxPerDeposit, _maxTotalDeposits, _underlyingToken, _pauserRegistry)
+// Solidity: function initialize(uint256 _maxPerDeposit, uint256 _maxTotalDeposits, address _underlyingToken) returns()
+func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactor) Initialize(opts *bind.TransactOpts, _maxPerDeposit *big.Int, _maxTotalDeposits *big.Int, _underlyingToken common.Address) (*types.Transaction, error) {
+ return _StrategyBaseTVLLimits.contract.Transact(opts, "initialize", _maxPerDeposit, _maxTotalDeposits, _underlyingToken)
}
-// Initialize is a paid mutator transaction binding the contract method 0x019e2729.
+// Initialize is a paid mutator transaction binding the contract method 0xa6ab36f2.
//
-// Solidity: function initialize(uint256 _maxPerDeposit, uint256 _maxTotalDeposits, address _underlyingToken, address _pauserRegistry) returns()
-func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) Initialize(_maxPerDeposit *big.Int, _maxTotalDeposits *big.Int, _underlyingToken common.Address, _pauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyBaseTVLLimits.Contract.Initialize(&_StrategyBaseTVLLimits.TransactOpts, _maxPerDeposit, _maxTotalDeposits, _underlyingToken, _pauserRegistry)
+// Solidity: function initialize(uint256 _maxPerDeposit, uint256 _maxTotalDeposits, address _underlyingToken) returns()
+func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) Initialize(_maxPerDeposit *big.Int, _maxTotalDeposits *big.Int, _underlyingToken common.Address) (*types.Transaction, error) {
+ return _StrategyBaseTVLLimits.Contract.Initialize(&_StrategyBaseTVLLimits.TransactOpts, _maxPerDeposit, _maxTotalDeposits, _underlyingToken)
}
-// Initialize is a paid mutator transaction binding the contract method 0x019e2729.
+// Initialize is a paid mutator transaction binding the contract method 0xa6ab36f2.
//
-// Solidity: function initialize(uint256 _maxPerDeposit, uint256 _maxTotalDeposits, address _underlyingToken, address _pauserRegistry) returns()
-func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactorSession) Initialize(_maxPerDeposit *big.Int, _maxTotalDeposits *big.Int, _underlyingToken common.Address, _pauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyBaseTVLLimits.Contract.Initialize(&_StrategyBaseTVLLimits.TransactOpts, _maxPerDeposit, _maxTotalDeposits, _underlyingToken, _pauserRegistry)
+// Solidity: function initialize(uint256 _maxPerDeposit, uint256 _maxTotalDeposits, address _underlyingToken) returns()
+func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactorSession) Initialize(_maxPerDeposit *big.Int, _maxTotalDeposits *big.Int, _underlyingToken common.Address) (*types.Transaction, error) {
+ return _StrategyBaseTVLLimits.Contract.Initialize(&_StrategyBaseTVLLimits.TransactOpts, _maxPerDeposit, _maxTotalDeposits, _underlyingToken)
}
-// Initialize0 is a paid mutator transaction binding the contract method 0x485cc955.
+// Initialize0 is a paid mutator transaction binding the contract method 0xc4d66de8.
//
-// Solidity: function initialize(address _underlyingToken, address _pauserRegistry) returns()
-func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactor) Initialize0(opts *bind.TransactOpts, _underlyingToken common.Address, _pauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyBaseTVLLimits.contract.Transact(opts, "initialize0", _underlyingToken, _pauserRegistry)
+// Solidity: function initialize(address _underlyingToken) returns()
+func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactor) Initialize0(opts *bind.TransactOpts, _underlyingToken common.Address) (*types.Transaction, error) {
+ return _StrategyBaseTVLLimits.contract.Transact(opts, "initialize0", _underlyingToken)
}
-// Initialize0 is a paid mutator transaction binding the contract method 0x485cc955.
+// Initialize0 is a paid mutator transaction binding the contract method 0xc4d66de8.
//
-// Solidity: function initialize(address _underlyingToken, address _pauserRegistry) returns()
-func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) Initialize0(_underlyingToken common.Address, _pauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyBaseTVLLimits.Contract.Initialize0(&_StrategyBaseTVLLimits.TransactOpts, _underlyingToken, _pauserRegistry)
+// Solidity: function initialize(address _underlyingToken) returns()
+func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) Initialize0(_underlyingToken common.Address) (*types.Transaction, error) {
+ return _StrategyBaseTVLLimits.Contract.Initialize0(&_StrategyBaseTVLLimits.TransactOpts, _underlyingToken)
}
-// Initialize0 is a paid mutator transaction binding the contract method 0x485cc955.
+// Initialize0 is a paid mutator transaction binding the contract method 0xc4d66de8.
//
-// Solidity: function initialize(address _underlyingToken, address _pauserRegistry) returns()
-func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactorSession) Initialize0(_underlyingToken common.Address, _pauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyBaseTVLLimits.Contract.Initialize0(&_StrategyBaseTVLLimits.TransactOpts, _underlyingToken, _pauserRegistry)
+// Solidity: function initialize(address _underlyingToken) returns()
+func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactorSession) Initialize0(_underlyingToken common.Address) (*types.Transaction, error) {
+ return _StrategyBaseTVLLimits.Contract.Initialize0(&_StrategyBaseTVLLimits.TransactOpts, _underlyingToken)
}
// Pause is a paid mutator transaction binding the contract method 0x136439dd.
@@ -804,27 +804,6 @@ func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactorSession) PauseAll()
return _StrategyBaseTVLLimits.Contract.PauseAll(&_StrategyBaseTVLLimits.TransactOpts)
}
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactor) SetPauserRegistry(opts *bind.TransactOpts, newPauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyBaseTVLLimits.contract.Transact(opts, "setPauserRegistry", newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyBaseTVLLimits.Contract.SetPauserRegistry(&_StrategyBaseTVLLimits.TransactOpts, newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactorSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyBaseTVLLimits.Contract.SetPauserRegistry(&_StrategyBaseTVLLimits.TransactOpts, newPauserRegistry)
-}
-
// SetTVLLimits is a paid mutator transaction binding the contract method 0x11c70c9d.
//
// Solidity: function setTVLLimits(uint256 newMaxPerDeposit, uint256 newMaxTotalDeposits) returns()
@@ -1592,141 +1571,6 @@ func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsFilterer) ParsePaused(log typ
return event, nil
}
-// StrategyBaseTVLLimitsPauserRegistrySetIterator is returned from FilterPauserRegistrySet and is used to iterate over the raw logs and unpacked data for PauserRegistrySet events raised by the StrategyBaseTVLLimits contract.
-type StrategyBaseTVLLimitsPauserRegistrySetIterator struct {
- Event *StrategyBaseTVLLimitsPauserRegistrySet // 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 *StrategyBaseTVLLimitsPauserRegistrySetIterator) 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(StrategyBaseTVLLimitsPauserRegistrySet)
- 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(StrategyBaseTVLLimitsPauserRegistrySet)
- 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 *StrategyBaseTVLLimitsPauserRegistrySetIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *StrategyBaseTVLLimitsPauserRegistrySetIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// StrategyBaseTVLLimitsPauserRegistrySet represents a PauserRegistrySet event raised by the StrategyBaseTVLLimits contract.
-type StrategyBaseTVLLimitsPauserRegistrySet struct {
- PauserRegistry common.Address
- NewPauserRegistry common.Address
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterPauserRegistrySet is a free log retrieval operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsFilterer) FilterPauserRegistrySet(opts *bind.FilterOpts) (*StrategyBaseTVLLimitsPauserRegistrySetIterator, error) {
-
- logs, sub, err := _StrategyBaseTVLLimits.contract.FilterLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return &StrategyBaseTVLLimitsPauserRegistrySetIterator{contract: _StrategyBaseTVLLimits.contract, event: "PauserRegistrySet", logs: logs, sub: sub}, nil
-}
-
-// WatchPauserRegistrySet is a free log subscription operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsFilterer) WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *StrategyBaseTVLLimitsPauserRegistrySet) (event.Subscription, error) {
-
- logs, sub, err := _StrategyBaseTVLLimits.contract.WatchLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(StrategyBaseTVLLimitsPauserRegistrySet)
- if err := _StrategyBaseTVLLimits.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return err
- }
- event.Raw = log
-
- select {
- case sink <- event:
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- }
- }), nil
-}
-
-// ParsePauserRegistrySet is a log parse operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsFilterer) ParsePauserRegistrySet(log types.Log) (*StrategyBaseTVLLimitsPauserRegistrySet, error) {
- event := new(StrategyBaseTVLLimitsPauserRegistrySet)
- if err := _StrategyBaseTVLLimits.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
// StrategyBaseTVLLimitsStrategyTokenSetIterator is returned from FilterStrategyTokenSet and is used to iterate over the raw logs and unpacked data for StrategyTokenSet events raised by the StrategyBaseTVLLimits contract.
type StrategyBaseTVLLimitsStrategyTokenSetIterator struct {
Event *StrategyBaseTVLLimitsStrategyTokenSet // Event containing the contract specifics and raw log
diff --git a/pkg/bindings/StrategyFactory/binding.go b/pkg/bindings/StrategyFactory/binding.go
index 7b7a24a365..97185cc669 100644
--- a/pkg/bindings/StrategyFactory/binding.go
+++ b/pkg/bindings/StrategyFactory/binding.go
@@ -31,8 +31,8 @@ var (
// StrategyFactoryMetaData contains all meta data concerning the StrategyFactory contract.
var StrategyFactoryMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"blacklistTokens\",\"inputs\":[{\"name\":\"tokens\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deployNewStrategy\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"newStrategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deployedStrategies\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"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\":\"_strategyBeacon\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isBlacklisted\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromWhitelist\",\"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\":\"setThirdPartyTransfersForbidden\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyBeacon\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"}],\"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\":\"whitelistStrategies\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"thirdPartyTransfersForbiddenValues\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"StrategyBeaconModified\",\"inputs\":[{\"name\":\"previousBeacon\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIBeacon\"},{\"name\":\"newBeacon\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIBeacon\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategySetForToken\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenBlacklisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"}],\"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: "0x60a06040523480156200001157600080fd5b50604051620024ae380380620024ae833981016040819052620000349162000114565b6001600160a01b0381166080526200004b62000052565b5062000146565b603354610100900460ff1615620000bf5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60335460ff908116101562000112576033805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012757600080fd5b81516001600160a01b03811681146200013f57600080fd5b9392505050565b608051612329620001856000396000818161019701528181610829015281816108cc01528181610a1d01528181610d4a015261111101526123296000f3fe60806040523480156200001157600080fd5b5060043610620001455760003560e01c80636b9b622911620000bb578063f0062d9a116200007a578063f0062d9a14620002e1578063f2fde38b14620002f5578063fabc1cbc146200030c578063fe38b32d1462000323578063fe575a87146200033a57600080fd5b80636b9b62291462000283578063715018a6146200029a578063886f119514620002a45780638da5cb5b14620002b8578063be20309414620002ca57600080fd5b8063581dfd651162000108578063581dfd6514620001ed578063595c6a6714620002195780635ac86ab714620002235780635c975abb146200025a578063697d54b4146200026c57600080fd5b806310d67a2f146200014a578063136439dd146200016357806323103c41146200017a57806339b70e3814620001915780634e5a426314620001d6575b600080fd5b620001616200015b366004620014d8565b62000360565b005b6200016162000174366004620014ff565b62000424565b620001616200018b36600462001568565b6200056b565b620001b97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b62000161620001e7366004620015bd565b6200089b565b620001b9620001fe366004620014d8565b6001602052600090815260409020546001600160a01b031681565b620001616200092f565b6200024962000234366004620015fb565b609954600160ff9092169190911b9081161490565b6040519015158152602001620001cd565b609954604051908152602001620001cd565b620001616200027d36600462001620565b620009fc565b620001b962000294366004620014d8565b62000a5a565b6200016162000dc1565b609854620001b9906001600160a01b031681565b6066546001600160a01b0316620001b9565b62000161620002db36600462001693565b62000dd9565b600054620001b9906001600160a01b031681565b6200016162000306366004620014d8565b62000f0f565b620001616200031d366004620014ff565b62000f8b565b620001616200033436600462001568565b620010f0565b620002496200034b366004620014d8565b60026020526000908152604090205460ff1681565b609860009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003da9190620016ed565b6001600160a01b0316336001600160a01b031614620004165760405162461bcd60e51b81526004016200040d906200170d565b60405180910390fd5b62000421816200114a565b50565b60985460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156200046d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000493919062001757565b620004b25760405162461bcd60e51b81526004016200040d9062001777565b609954818116146200052d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016200040d565b609981905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6200057562001243565b60008167ffffffffffffffff811115620005935762000593620017bf565b604051908082528060200260200182016040528015620005bd578160200160208202803683370190505b5090506000805b83811015620008075760026000868684818110620005e657620005e6620017d5565b9050602002016020810190620005fd9190620014d8565b6001600160a01b0316815260208101919091526040016000205460ff16156200069b5760405162461bcd60e51b815260206004820152604360248201527f5374726174656779466163746f72792e626c61636b6c697374546f6b656e733a60448201527f2043616e6e6f7420626c61636b6c697374206465706c6f79656420737472617460648201526265677960e81b608482015260a4016200040d565b600160026000878785818110620006b657620006b6620017d5565b9050602002016020810190620006cd9190620014d8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f75519c51f39873ec0e27dd3bbc09549e4865a113f505393fb9eab5898f6418b38585838181106200072b576200072b620017d5565b9050602002016020810190620007429190620014d8565b6040516001600160a01b03909116815260200160405180910390a1600060016000878785818110620007785762000778620017d5565b90506020020160208101906200078f9190620014d8565b6001600160a01b0390811682526020820192909252604001600020541690508015620007f35780848481518110620007cb57620007cb620017d5565b6001600160a01b039092166020928302919091019091015282620007ef81620017eb565b9350505b50620007ff81620017eb565b9050620005c4565b50808252801562000895576040516316bb16b760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b5d8b5b890620008609085906004016200185b565b600060405180830381600087803b1580156200087b57600080fd5b505af115801562000890573d6000803e3d6000fd5b505050505b50505050565b620008a562001243565b604051634e5a426360e01b81526001600160a01b03838116600483015282151560248301527f00000000000000000000000000000000000000000000000000000000000000001690634e5a4263906044015b600060405180830381600087803b1580156200091257600080fd5b505af115801562000927573d6000803e3d6000fd5b505050505050565b60985460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801562000978573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200099e919062001757565b620009bd5760405162461bcd60e51b81526004016200040d9062001777565b600019609981905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b62000a0662001243565b60405163df5b354760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063df5b35479062000860908790879087908790600401620018b2565b60995460009081906001908116141562000ab75760405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e646578206973207061757365640000000000000060448201526064016200040d565b6001600160a01b03831660009081526002602052604090205460ff161562000b485760405162461bcd60e51b815260206004820152603760248201527f5374726174656779466163746f72792e6465706c6f794e65775374726174656760448201527f793a20546f6b656e20697320626c61636b6c697374656400000000000000000060648201526084016200040d565b6001600160a01b03838116600090815260016020526040902054161562000be65760405162461bcd60e51b8152602060048201526044602482018190527f5374726174656779466163746f72792e6465706c6f794e657753747261746567908201527f793a20537472617465677920616c72656164792065786973747320666f72207460648201526337b5b2b760e11b608482015260a4016200040d565b600080546098546040516001600160a01b038781166024830152918216604482015291169063485cc95560e01b9060640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905162000c5690620014b4565b62000c6392919062001916565b604051809103906000f08015801562000c80573d6000803e3d6000fd5b50905062000c8f84826200129f565b604080516001808252818301909252600091602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050509050828260008151811062000ceb5762000ceb620017d5565b60200260200101906001600160a01b031690816001600160a01b03168152505060008160008151811062000d235762000d23620017d5565b9115156020928302919091019091015260405163df5b354760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063df5b35479062000d8390859085906004016200197e565b600060405180830381600087803b15801562000d9e57600080fd5b505af115801562000db3573d6000803e3d6000fd5b509498975050505050505050565b62000dcb62001243565b62000dd760006200130a565b565b603354610100900460ff161580801562000dfa5750603354600160ff909116105b8062000e165750303b15801562000e16575060335460ff166001145b62000e7b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016200040d565b6033805460ff19166001179055801562000e9f576033805461ff0019166101001790555b62000eaa856200130a565b62000eb684846200135c565b62000ec1826200144b565b801562000f08576033805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b62000f1962001243565b6001600160a01b03811662000f805760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200040d565b62000421816200130a565b609860009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000fdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010059190620016ed565b6001600160a01b0316336001600160a01b031614620010385760405162461bcd60e51b81526004016200040d906200170d565b609954198119609954191614620010b85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016200040d565b609981905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200162000560565b620010fa62001243565b6040516316bb16b760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b5d8b5b890620008f79085908590600401620019db565b6001600160a01b038116620011da5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016200040d565b609854604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609880546001600160a01b0319166001600160a01b0392909216919091179055565b6066546001600160a01b0316331462000dd75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200040d565b6001600160a01b0382811660008181526001602090815260409182902080546001600160a01b031916948616948517905581519283528201929092527f6852a55230ef089d785bce7ffbf757985de34026df90a87d7b4a6e56f95d251f910160405180910390a15050565b606680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6098546001600160a01b03161580156200137e57506001600160a01b03821615155b620014025760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016200040d565b609981905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a262001447826200114a565b5050565b600054604080516001600160a01b03928316815291831660208301527fe21755962a7d7e100b59b9c3e4d4b54085b146313719955efb6a7a25c5c7feee910160405180910390a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b6108fa80620019fa83390190565b6001600160a01b03811681146200042157600080fd5b600060208284031215620014eb57600080fd5b8135620014f881620014c2565b9392505050565b6000602082840312156200151257600080fd5b5035919050565b60008083601f8401126200152c57600080fd5b50813567ffffffffffffffff8111156200154557600080fd5b6020830191508360208260051b85010111156200156157600080fd5b9250929050565b600080602083850312156200157c57600080fd5b823567ffffffffffffffff8111156200159457600080fd5b620015a28582860162001519565b90969095509350505050565b80151581146200042157600080fd5b60008060408385031215620015d157600080fd5b8235620015de81620014c2565b91506020830135620015f081620015ae565b809150509250929050565b6000602082840312156200160e57600080fd5b813560ff81168114620014f857600080fd5b600080600080604085870312156200163757600080fd5b843567ffffffffffffffff808211156200165057600080fd5b6200165e8883890162001519565b909650945060208701359150808211156200167857600080fd5b50620016878782880162001519565b95989497509550505050565b60008060008060808587031215620016aa57600080fd5b8435620016b781620014c2565b93506020850135620016c981620014c2565b9250604085013591506060850135620016e281620014c2565b939692955090935050565b6000602082840312156200170057600080fd5b8151620014f881620014c2565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156200176a57600080fd5b8151620014f881620015ae565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006000198214156200180e57634e487b7160e01b600052601160045260246000fd5b5060010190565b600081518084526020808501945080840160005b83811015620018505781516001600160a01b03168752958201959082019060010162001829565b509495945050505050565b602081526000620014f8602083018462001815565b8183526000602080850194508260005b85811015620018505781356200189681620014c2565b6001600160a01b03168752958201959082019060010162001880565b604081526000620018c860408301868862001870565b8281036020848101919091528482528591810160005b8681101562001909578335620018f481620015ae565b151582529282019290820190600101620018de565b5098975050505050505050565b60018060a01b038316815260006020604081840152835180604085015260005b81811015620019545785810183015185820160600152820162001936565b8181111562001967576000606083870101525b50601f01601f191692909201606001949350505050565b60408152600062001993604083018562001815565b82810360208481019190915284518083528582019282019060005b81811015620019ce578451151583529383019391830191600101620019ae565b5090979650505050505050565b602081526000620019f160208301848662001870565b94935050505056fe60806040526040516108fa3803806108fa83398101604081905261002291610456565b61002e82826000610035565b5050610580565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610516565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610516565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108d3602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103495760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610169565b600080856001600160a01b0316856040516103649190610531565b600060405180830381855af49150503d806000811461039f576040519150601f19603f3d011682016040523d82523d6000602084013e6103a4565b606091505b5090925090506103b58282866103bf565b9695505050505050565b606083156103ce5750816102c8565b8251156103de5782518084602001fd5b8160405162461bcd60e51b8152600401610169919061054d565b80516001600160a01b038116811461040f57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044557818101518382015260200161042d565b838111156100f95750506000910152565b6000806040838503121561046957600080fd5b610472836103f8565b60208401519092506001600160401b038082111561048f57600080fd5b818501915085601f8301126104a357600080fd5b8151818111156104b5576104b5610414565b604051601f8201601f19908116603f011681019083821181831017156104dd576104dd610414565b816040528281528860208487010111156104f657600080fd5b61050783602083016020880161042a565b80955050505050509250929050565b60006020828403121561052857600080fd5b6102c8826103f8565b6000825161054381846020870161042a565b9190910192915050565b602081526000825180602084015261056c81604085016020870161042a565b601f01601f19169190910160400192915050565b6103448061058f6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102e860279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061023f565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b60606001600160a01b0384163b6101915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101ac9190610298565b600060405180830381855af49150503d80600081146101e7576040519150601f19603f3d011682016040523d82523d6000602084013e6101ec565b606091505b50915091506101fc828286610206565b9695505050505050565b6060831561021557508161004e565b8251156102255782518084602001fd5b8160405162461bcd60e51b815260040161018891906102b4565b60006020828403121561025157600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028357818101518382015260200161026b565b83811115610292576000848401525b50505050565b600082516102aa818460208701610268565b9190910192915050565b60208152600082518060208401526102d3816040850160208701610268565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200b06ff482c74aed3bda2f822ec285991b1757a96212952d7a19b7045626f2af564736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203d88e24f5571967f5692df604e1e63ac6ccb029a5ee131dda65d0d4986c8ce8364736f6c634300080c0033",
+ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_strategyManager\",\"type\":\"address\",\"internalType\":\"contractIStrategyManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"blacklistTokens\",\"inputs\":[{\"name\":\"tokens\",\"type\":\"address[]\",\"internalType\":\"contractIERC20[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deployNewStrategy\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"newStrategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deployedStrategies\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_strategyBeacon\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isBlacklisted\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromWhitelist\",\"inputs\":[{\"name\":\"strategiesToRemoveFromWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyBeacon\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"}],\"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\":\"whitelistStrategies\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"StrategyBeaconModified\",\"inputs\":[{\"name\":\"previousBeacon\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIBeacon\"},{\"name\":\"newBeacon\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIBeacon\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategySetForToken\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenBlacklisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"}],\"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\":\"AlreadyBlacklisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BlacklistedToken\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNewPausedStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyPauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyUnpauser\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyAlreadyExists\",\"inputs\":[]}]",
+ Bin: "0x60c060405234801561000f575f5ffd5b5060405161195e38038061195e83398101604081905261002e9161014e565b806001600160a01b038116610056576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03908116608052821660a052610071610078565b5050610186565b603354610100900460ff16156100e45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60335460ff90811614610135576033805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461014b575f5ffd5b50565b5f5f6040838503121561015f575f5ffd5b825161016a81610137565b602084015190925061017b81610137565b809150509250929050565b60805160a0516117866101d85f395f8181610142015281816105d501528181610869015281816109060152610c4701525f8181610215015281816102f0015281816106530152610b1401526117865ff3fe608060405234801561000f575f5ffd5b5060043610610111575f3560e01c8063886f11951161009e578063f0062d9a1161006e578063f0062d9a1461026e578063f2fde38b14610280578063fabc1cbc14610293578063fe38b32d146102a6578063fe575a87146102b9575f5ffd5b8063886f1195146102105780638da5cb5b14610237578063b768ebc914610248578063c350a1b51461025b575f5ffd5b8063595c6a67116100e4578063595c6a67146101a95780635ac86ab7146101b15780635c975abb146101e45780636b9b6229146101f5578063715018a614610208575f5ffd5b8063136439dd1461011557806323103c411461012a57806339b70e381461013d578063581dfd6514610181575b5f5ffd5b610128610123366004610e44565b6102db565b005b610128610138366004610ea3565b6103b0565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61016461018f366004610ef6565b60016020525f90815260409020546001600160a01b031681565b61012861063e565b6101d46101bf366004610f18565b609954600160ff9092169190911b9081161490565b6040519015158152602001610178565b609954604051908152602001610178565b610164610203366004610ef6565b6106ed565b6101286108d6565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6066546001600160a01b0316610164565b610128610256366004610ea3565b6108e7565b610128610269366004610f38565b61096e565b5f54610164906001600160a01b031681565b61012861028e366004610ef6565b610a99565b6101286102a1366004610e44565b610b12565b6101286102b4366004610ea3565b610c28565b6101d46102c7366004610ef6565b60026020525f908152604090205460ff1681565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561033d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103619190610f77565b61037e57604051631d77d47760e21b815260040160405180910390fd5b60995481811681146103a35760405163c61dca5d60e01b815260040160405180910390fd5b6103ac82610c7e565b5050565b6103b8610cbb565b5f8167ffffffffffffffff8111156103d2576103d2610f96565b6040519080825280602002602001820160405280156103fb578160200160208202803683370190505b5090505f805b838110156105b45760025f86868481811061041e5761041e610faa565b90506020020160208101906104339190610ef6565b6001600160a01b0316815260208101919091526040015f205460ff161561046d5760405163f53de75f60e01b815260040160405180910390fd5b600160025f87878581811061048457610484610faa565b90506020020160208101906104999190610ef6565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f75519c51f39873ec0e27dd3bbc09549e4865a113f505393fb9eab5898f6418b38585838181106104f3576104f3610faa565b90506020020160208101906105089190610ef6565b6040516001600160a01b03909116815260200160405180910390a15f60015f87878581811061053957610539610faa565b905060200201602081019061054e9190610ef6565b6001600160a01b03908116825260208201929092526040015f205416905080156105ab578084848151811061058557610585610faa565b6001600160a01b0390921660209283029190910190910152826105a781610fbe565b9350505b50600101610401565b508082528015610638576040516316bb16b760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b5d8b5b89061060a908590600401610fe2565b5f604051808303815f87803b158015610621575f5ffd5b505af1158015610633573d5f5f3e3d5ffd5b505050505b50505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156106a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c49190610f77565b6106e157604051631d77d47760e21b815260040160405180910390fd5b6106eb5f19610c7e565b565b6099545f9081906001908116036107175760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b0383165f9081526002602052604090205460ff16156107505760405163091867bd60e11b815260040160405180910390fd5b6001600160a01b038381165f9081526001602052604090205416156107885760405163c45546f760e01b815260040160405180910390fd5b5f8054604080516001600160a01b0387811660248084019190915283518084039091018152604490920183526020820180516001600160e01b031663189acdbd60e31b17905291519190921691906107df90610e37565b6107ea92919061102d565b604051809103905ff080158015610803573d5f5f3e3d5ffd5b5090506108108482610d15565b6040805160018082528183019092525f916020808301908036833701905050905081815f8151811061084457610844610faa565b6001600160a01b039283166020918202929092010152604051632ef047f960e11b81527f000000000000000000000000000000000000000000000000000000000000000090911690635de08ff2906108a0908490600401610fe2565b5f604051808303815f87803b1580156108b7575f5ffd5b505af11580156108c9573d5f5f3e3d5ffd5b5093979650505050505050565b6108de610cbb565b6106eb5f610d7f565b6108ef610cbb565b604051632ef047f960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635de08ff29061093d9085908590600401611071565b5f604051808303815f87803b158015610954575f5ffd5b505af1158015610966573d5f5f3e3d5ffd5b505050505050565b603354610100900460ff161580801561098e5750603354600160ff909116105b806109a85750303b1580156109a8575060335460ff166001145b610a105760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6033805460ff191660011790558015610a33576033805461ff0019166101001790555b610a3c84610d7f565b610a4583610c7e565b610a4e82610dd0565b8015610638576033805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b610aa1610cbb565b6001600160a01b038116610b065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a07565b610b0f81610d7f565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b6e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9291906110bd565b6001600160a01b0316336001600160a01b031614610bc35760405163794821ff60e01b815260040160405180910390fd5b60995480198219811614610bea5760405163c61dca5d60e01b815260040160405180910390fd5b609982905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b610c30610cbb565b6040516316bb16b760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b5d8b5b89061093d9085908590600401611071565b609981905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b6066546001600160a01b031633146106eb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a07565b6001600160a01b038281165f8181526001602090815260409182902080546001600160a01b031916948616948517905581519283528201929092527f6852a55230ef089d785bce7ffbf757985de34026df90a87d7b4a6e56f95d251f910160405180910390a15050565b606680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54604080516001600160a01b03928316815291831660208301527fe21755962a7d7e100b59b9c3e4d4b54085b146313719955efb6a7a25c5c7feee910160405180910390a15f80546001600160a01b0319166001600160a01b0392909216919091179055565b610678806110d983390190565b5f60208284031215610e54575f5ffd5b5035919050565b5f5f83601f840112610e6b575f5ffd5b50813567ffffffffffffffff811115610e82575f5ffd5b6020830191508360208260051b8501011115610e9c575f5ffd5b9250929050565b5f5f60208385031215610eb4575f5ffd5b823567ffffffffffffffff811115610eca575f5ffd5b610ed685828601610e5b565b90969095509350505050565b6001600160a01b0381168114610b0f575f5ffd5b5f60208284031215610f06575f5ffd5b8135610f1181610ee2565b9392505050565b5f60208284031215610f28575f5ffd5b813560ff81168114610f11575f5ffd5b5f5f5f60608486031215610f4a575f5ffd5b8335610f5581610ee2565b9250602084013591506040840135610f6c81610ee2565b809150509250925092565b5f60208284031215610f87575f5ffd5b81518015158114610f11575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60018201610fdb57634e487b7160e01b5f52601160045260245ffd5b5060010190565b602080825282518282018190525f918401906040840190835b818110156110225783516001600160a01b0316835260209384019390920191600101610ffb565b509095945050505050565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b602080825281018290525f8360408301825b858110156110b357823561109681610ee2565b6001600160a01b0316825260209283019290910190600101611083565b5095945050505050565b5f602082840312156110cd575f5ffd5b8151610f1181610ee256fe6080604052604051610678380380610678833981016040819052610022916103ed565b61002d82825f610034565b5050610513565b61003d836100f1565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a25f8251118061007c5750805b156100ec576100ea836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e491906104af565b83610273565b505b505050565b6001600160a01b0381163b61015b5760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101cd816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561019a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101be91906104af565b6001600160a01b03163b151590565b6102325760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610152565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029883836040518060600160405280602781526020016106516027913961029f565b9392505050565b60605f5f856001600160a01b0316856040516102bb91906104c8565b5f60405180830381855af49150503d805f81146102f3576040519150601f19603f3d011682016040523d82523d5f602084013e6102f8565b606091505b50909250905061030a86838387610314565b9695505050505050565b606083156103825782515f0361037b576001600160a01b0385163b61037b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610152565b508161038c565b61038c8383610394565b949350505050565b8151156103a45781518083602001fd5b8060405162461bcd60e51b815260040161015291906104de565b80516001600160a01b03811681146103d4575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156103fe575f5ffd5b610407836103be565b60208401519092506001600160401b03811115610422575f5ffd5b8301601f81018513610432575f5ffd5b80516001600160401b0381111561044b5761044b6103d9565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610479576104796103d9565b604052818152828201602001871015610490575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f602082840312156104bf575f5ffd5b610298826103be565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610131806105205f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b60b3565b565b5f60527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015608c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019060ae919060d0565b905090565b365f5f375f5f365f845af43d5f5f3e80801560cc573d5ff35b3d5ffd5b5f6020828403121560df575f5ffd5b81516001600160a01b038116811460f4575f5ffd5b939250505056fea26469706673582212205e179e1700322d816f025eafa6283d01eb81392a9f5f438a46fb77683652459464736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122027041a49b85274d31fb56a004f79f652f3b195704430362e75a0e2e190553a9364736f6c634300081b0033",
}
// StrategyFactoryABI is the input ABI used to generate the binding from.
@@ -44,7 +44,7 @@ var StrategyFactoryABI = StrategyFactoryMetaData.ABI
var StrategyFactoryBin = StrategyFactoryMetaData.Bin
// DeployStrategyFactory deploys a new Ethereum contract, binding an instance of StrategyFactory to it.
-func DeployStrategyFactory(auth *bind.TransactOpts, backend bind.ContractBackend, _strategyManager common.Address) (common.Address, *types.Transaction, *StrategyFactory, error) {
+func DeployStrategyFactory(auth *bind.TransactOpts, backend bind.ContractBackend, _strategyManager common.Address, _pauserRegistry common.Address) (common.Address, *types.Transaction, *StrategyFactory, error) {
parsed, err := StrategyFactoryMetaData.GetAbi()
if err != nil {
return common.Address{}, nil, nil, err
@@ -53,7 +53,7 @@ func DeployStrategyFactory(auth *bind.TransactOpts, backend bind.ContractBackend
return common.Address{}, nil, nil, errors.New("GetABI returned nil")
}
- address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StrategyFactoryBin), backend, _strategyManager)
+ address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StrategyFactoryBin), backend, _strategyManager, _pauserRegistry)
if err != nil {
return common.Address{}, nil, nil, err
}
@@ -492,25 +492,25 @@ func (_StrategyFactory *StrategyFactoryTransactorSession) DeployNewStrategy(toke
return _StrategyFactory.Contract.DeployNewStrategy(&_StrategyFactory.TransactOpts, token)
}
-// Initialize is a paid mutator transaction binding the contract method 0xbe203094.
+// Initialize is a paid mutator transaction binding the contract method 0xc350a1b5.
//
-// Solidity: function initialize(address _initialOwner, address _pauserRegistry, uint256 _initialPausedStatus, address _strategyBeacon) returns()
-func (_StrategyFactory *StrategyFactoryTransactor) Initialize(opts *bind.TransactOpts, _initialOwner common.Address, _pauserRegistry common.Address, _initialPausedStatus *big.Int, _strategyBeacon common.Address) (*types.Transaction, error) {
- return _StrategyFactory.contract.Transact(opts, "initialize", _initialOwner, _pauserRegistry, _initialPausedStatus, _strategyBeacon)
+// Solidity: function initialize(address _initialOwner, uint256 _initialPausedStatus, address _strategyBeacon) returns()
+func (_StrategyFactory *StrategyFactoryTransactor) Initialize(opts *bind.TransactOpts, _initialOwner common.Address, _initialPausedStatus *big.Int, _strategyBeacon common.Address) (*types.Transaction, error) {
+ return _StrategyFactory.contract.Transact(opts, "initialize", _initialOwner, _initialPausedStatus, _strategyBeacon)
}
-// Initialize is a paid mutator transaction binding the contract method 0xbe203094.
+// Initialize is a paid mutator transaction binding the contract method 0xc350a1b5.
//
-// Solidity: function initialize(address _initialOwner, address _pauserRegistry, uint256 _initialPausedStatus, address _strategyBeacon) returns()
-func (_StrategyFactory *StrategyFactorySession) Initialize(_initialOwner common.Address, _pauserRegistry common.Address, _initialPausedStatus *big.Int, _strategyBeacon common.Address) (*types.Transaction, error) {
- return _StrategyFactory.Contract.Initialize(&_StrategyFactory.TransactOpts, _initialOwner, _pauserRegistry, _initialPausedStatus, _strategyBeacon)
+// Solidity: function initialize(address _initialOwner, uint256 _initialPausedStatus, address _strategyBeacon) returns()
+func (_StrategyFactory *StrategyFactorySession) Initialize(_initialOwner common.Address, _initialPausedStatus *big.Int, _strategyBeacon common.Address) (*types.Transaction, error) {
+ return _StrategyFactory.Contract.Initialize(&_StrategyFactory.TransactOpts, _initialOwner, _initialPausedStatus, _strategyBeacon)
}
-// Initialize is a paid mutator transaction binding the contract method 0xbe203094.
+// Initialize is a paid mutator transaction binding the contract method 0xc350a1b5.
//
-// Solidity: function initialize(address _initialOwner, address _pauserRegistry, uint256 _initialPausedStatus, address _strategyBeacon) returns()
-func (_StrategyFactory *StrategyFactoryTransactorSession) Initialize(_initialOwner common.Address, _pauserRegistry common.Address, _initialPausedStatus *big.Int, _strategyBeacon common.Address) (*types.Transaction, error) {
- return _StrategyFactory.Contract.Initialize(&_StrategyFactory.TransactOpts, _initialOwner, _pauserRegistry, _initialPausedStatus, _strategyBeacon)
+// Solidity: function initialize(address _initialOwner, uint256 _initialPausedStatus, address _strategyBeacon) returns()
+func (_StrategyFactory *StrategyFactoryTransactorSession) Initialize(_initialOwner common.Address, _initialPausedStatus *big.Int, _strategyBeacon common.Address) (*types.Transaction, error) {
+ return _StrategyFactory.Contract.Initialize(&_StrategyFactory.TransactOpts, _initialOwner, _initialPausedStatus, _strategyBeacon)
}
// Pause is a paid mutator transaction binding the contract method 0x136439dd.
@@ -597,48 +597,6 @@ func (_StrategyFactory *StrategyFactoryTransactorSession) RenounceOwnership() (*
return _StrategyFactory.Contract.RenounceOwnership(&_StrategyFactory.TransactOpts)
}
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_StrategyFactory *StrategyFactoryTransactor) SetPauserRegistry(opts *bind.TransactOpts, newPauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyFactory.contract.Transact(opts, "setPauserRegistry", newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_StrategyFactory *StrategyFactorySession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyFactory.Contract.SetPauserRegistry(&_StrategyFactory.TransactOpts, newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_StrategyFactory *StrategyFactoryTransactorSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyFactory.Contract.SetPauserRegistry(&_StrategyFactory.TransactOpts, newPauserRegistry)
-}
-
-// SetThirdPartyTransfersForbidden is a paid mutator transaction binding the contract method 0x4e5a4263.
-//
-// Solidity: function setThirdPartyTransfersForbidden(address strategy, bool value) returns()
-func (_StrategyFactory *StrategyFactoryTransactor) SetThirdPartyTransfersForbidden(opts *bind.TransactOpts, strategy common.Address, value bool) (*types.Transaction, error) {
- return _StrategyFactory.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 (_StrategyFactory *StrategyFactorySession) SetThirdPartyTransfersForbidden(strategy common.Address, value bool) (*types.Transaction, error) {
- return _StrategyFactory.Contract.SetThirdPartyTransfersForbidden(&_StrategyFactory.TransactOpts, strategy, value)
-}
-
-// SetThirdPartyTransfersForbidden is a paid mutator transaction binding the contract method 0x4e5a4263.
-//
-// Solidity: function setThirdPartyTransfersForbidden(address strategy, bool value) returns()
-func (_StrategyFactory *StrategyFactoryTransactorSession) SetThirdPartyTransfersForbidden(strategy common.Address, value bool) (*types.Transaction, error) {
- return _StrategyFactory.Contract.SetThirdPartyTransfersForbidden(&_StrategyFactory.TransactOpts, strategy, value)
-}
-
// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
//
// Solidity: function transferOwnership(address newOwner) returns()
@@ -681,25 +639,25 @@ func (_StrategyFactory *StrategyFactoryTransactorSession) Unpause(newPausedStatu
return _StrategyFactory.Contract.Unpause(&_StrategyFactory.TransactOpts, newPausedStatus)
}
-// WhitelistStrategies is a paid mutator transaction binding the contract method 0x697d54b4.
+// WhitelistStrategies is a paid mutator transaction binding the contract method 0xb768ebc9.
//
-// Solidity: function whitelistStrategies(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns()
-func (_StrategyFactory *StrategyFactoryTransactor) WhitelistStrategies(opts *bind.TransactOpts, strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) {
- return _StrategyFactory.contract.Transact(opts, "whitelistStrategies", strategiesToWhitelist, thirdPartyTransfersForbiddenValues)
+// Solidity: function whitelistStrategies(address[] strategiesToWhitelist) returns()
+func (_StrategyFactory *StrategyFactoryTransactor) WhitelistStrategies(opts *bind.TransactOpts, strategiesToWhitelist []common.Address) (*types.Transaction, error) {
+ return _StrategyFactory.contract.Transact(opts, "whitelistStrategies", strategiesToWhitelist)
}
-// WhitelistStrategies is a paid mutator transaction binding the contract method 0x697d54b4.
+// WhitelistStrategies is a paid mutator transaction binding the contract method 0xb768ebc9.
//
-// Solidity: function whitelistStrategies(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns()
-func (_StrategyFactory *StrategyFactorySession) WhitelistStrategies(strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) {
- return _StrategyFactory.Contract.WhitelistStrategies(&_StrategyFactory.TransactOpts, strategiesToWhitelist, thirdPartyTransfersForbiddenValues)
+// Solidity: function whitelistStrategies(address[] strategiesToWhitelist) returns()
+func (_StrategyFactory *StrategyFactorySession) WhitelistStrategies(strategiesToWhitelist []common.Address) (*types.Transaction, error) {
+ return _StrategyFactory.Contract.WhitelistStrategies(&_StrategyFactory.TransactOpts, strategiesToWhitelist)
}
-// WhitelistStrategies is a paid mutator transaction binding the contract method 0x697d54b4.
+// WhitelistStrategies is a paid mutator transaction binding the contract method 0xb768ebc9.
//
-// Solidity: function whitelistStrategies(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns()
-func (_StrategyFactory *StrategyFactoryTransactorSession) WhitelistStrategies(strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) {
- return _StrategyFactory.Contract.WhitelistStrategies(&_StrategyFactory.TransactOpts, strategiesToWhitelist, thirdPartyTransfersForbiddenValues)
+// Solidity: function whitelistStrategies(address[] strategiesToWhitelist) returns()
+func (_StrategyFactory *StrategyFactoryTransactorSession) WhitelistStrategies(strategiesToWhitelist []common.Address) (*types.Transaction, error) {
+ return _StrategyFactory.Contract.WhitelistStrategies(&_StrategyFactory.TransactOpts, strategiesToWhitelist)
}
// StrategyFactoryInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the StrategyFactory contract.
@@ -1134,141 +1092,6 @@ func (_StrategyFactory *StrategyFactoryFilterer) ParsePaused(log types.Log) (*St
return event, nil
}
-// StrategyFactoryPauserRegistrySetIterator is returned from FilterPauserRegistrySet and is used to iterate over the raw logs and unpacked data for PauserRegistrySet events raised by the StrategyFactory contract.
-type StrategyFactoryPauserRegistrySetIterator struct {
- Event *StrategyFactoryPauserRegistrySet // 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 *StrategyFactoryPauserRegistrySetIterator) 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(StrategyFactoryPauserRegistrySet)
- 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(StrategyFactoryPauserRegistrySet)
- 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 *StrategyFactoryPauserRegistrySetIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *StrategyFactoryPauserRegistrySetIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// StrategyFactoryPauserRegistrySet represents a PauserRegistrySet event raised by the StrategyFactory contract.
-type StrategyFactoryPauserRegistrySet struct {
- PauserRegistry common.Address
- NewPauserRegistry common.Address
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterPauserRegistrySet is a free log retrieval operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_StrategyFactory *StrategyFactoryFilterer) FilterPauserRegistrySet(opts *bind.FilterOpts) (*StrategyFactoryPauserRegistrySetIterator, error) {
-
- logs, sub, err := _StrategyFactory.contract.FilterLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return &StrategyFactoryPauserRegistrySetIterator{contract: _StrategyFactory.contract, event: "PauserRegistrySet", logs: logs, sub: sub}, nil
-}
-
-// WatchPauserRegistrySet is a free log subscription operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_StrategyFactory *StrategyFactoryFilterer) WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *StrategyFactoryPauserRegistrySet) (event.Subscription, error) {
-
- logs, sub, err := _StrategyFactory.contract.WatchLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(StrategyFactoryPauserRegistrySet)
- if err := _StrategyFactory.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return err
- }
- event.Raw = log
-
- select {
- case sink <- event:
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- }
- }), nil
-}
-
-// ParsePauserRegistrySet is a log parse operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_StrategyFactory *StrategyFactoryFilterer) ParsePauserRegistrySet(log types.Log) (*StrategyFactoryPauserRegistrySet, error) {
- event := new(StrategyFactoryPauserRegistrySet)
- if err := _StrategyFactory.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
// StrategyFactoryStrategyBeaconModifiedIterator is returned from FilterStrategyBeaconModified and is used to iterate over the raw logs and unpacked data for StrategyBeaconModified events raised by the StrategyFactory contract.
type StrategyFactoryStrategyBeaconModifiedIterator struct {
Event *StrategyFactoryStrategyBeaconModified // Event containing the contract specifics and raw log
diff --git a/pkg/bindings/StrategyFactoryStorage/binding.go b/pkg/bindings/StrategyFactoryStorage/binding.go
index 3a164f0256..c967b62fd8 100644
--- a/pkg/bindings/StrategyFactoryStorage/binding.go
+++ b/pkg/bindings/StrategyFactoryStorage/binding.go
@@ -31,7 +31,7 @@ var (
// StrategyFactoryStorageMetaData contains all meta data concerning the StrategyFactoryStorage contract.
var StrategyFactoryStorageMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"function\",\"name\":\"deployNewStrategy\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"newStrategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deployedStrategies\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isBlacklisted\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromWhitelist\",\"inputs\":[{\"name\":\"strategiesToRemoveFromWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"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\":\"strategyBeacon\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"whitelistStrategies\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"thirdPartyTransfersForbiddenValues\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"StrategyBeaconModified\",\"inputs\":[{\"name\":\"previousBeacon\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIBeacon\"},{\"name\":\"newBeacon\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIBeacon\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategySetForToken\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenBlacklisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"}],\"anonymous\":false}]",
+ ABI: "[{\"type\":\"function\",\"name\":\"deployNewStrategy\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"newStrategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deployedStrategies\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isBlacklisted\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIERC20\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromWhitelist\",\"inputs\":[{\"name\":\"strategiesToRemoveFromWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"strategyBeacon\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBeacon\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"whitelistStrategies\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"StrategyBeaconModified\",\"inputs\":[{\"name\":\"previousBeacon\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIBeacon\"},{\"name\":\"newBeacon\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIBeacon\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategySetForToken\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokenBlacklisted\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIERC20\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AlreadyBlacklisted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BlacklistedToken\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyAlreadyExists\",\"inputs\":[]}]",
}
// StrategyFactoryStorageABI is the input ABI used to generate the binding from.
@@ -315,46 +315,25 @@ func (_StrategyFactoryStorage *StrategyFactoryStorageTransactorSession) RemoveSt
return _StrategyFactoryStorage.Contract.RemoveStrategiesFromWhitelist(&_StrategyFactoryStorage.TransactOpts, strategiesToRemoveFromWhitelist)
}
-// SetThirdPartyTransfersForbidden is a paid mutator transaction binding the contract method 0x4e5a4263.
+// WhitelistStrategies is a paid mutator transaction binding the contract method 0xb768ebc9.
//
-// Solidity: function setThirdPartyTransfersForbidden(address strategy, bool value) returns()
-func (_StrategyFactoryStorage *StrategyFactoryStorageTransactor) SetThirdPartyTransfersForbidden(opts *bind.TransactOpts, strategy common.Address, value bool) (*types.Transaction, error) {
- return _StrategyFactoryStorage.contract.Transact(opts, "setThirdPartyTransfersForbidden", strategy, value)
+// Solidity: function whitelistStrategies(address[] strategiesToWhitelist) returns()
+func (_StrategyFactoryStorage *StrategyFactoryStorageTransactor) WhitelistStrategies(opts *bind.TransactOpts, strategiesToWhitelist []common.Address) (*types.Transaction, error) {
+ return _StrategyFactoryStorage.contract.Transact(opts, "whitelistStrategies", strategiesToWhitelist)
}
-// SetThirdPartyTransfersForbidden is a paid mutator transaction binding the contract method 0x4e5a4263.
+// WhitelistStrategies is a paid mutator transaction binding the contract method 0xb768ebc9.
//
-// Solidity: function setThirdPartyTransfersForbidden(address strategy, bool value) returns()
-func (_StrategyFactoryStorage *StrategyFactoryStorageSession) SetThirdPartyTransfersForbidden(strategy common.Address, value bool) (*types.Transaction, error) {
- return _StrategyFactoryStorage.Contract.SetThirdPartyTransfersForbidden(&_StrategyFactoryStorage.TransactOpts, strategy, value)
+// Solidity: function whitelistStrategies(address[] strategiesToWhitelist) returns()
+func (_StrategyFactoryStorage *StrategyFactoryStorageSession) WhitelistStrategies(strategiesToWhitelist []common.Address) (*types.Transaction, error) {
+ return _StrategyFactoryStorage.Contract.WhitelistStrategies(&_StrategyFactoryStorage.TransactOpts, strategiesToWhitelist)
}
-// SetThirdPartyTransfersForbidden is a paid mutator transaction binding the contract method 0x4e5a4263.
+// WhitelistStrategies is a paid mutator transaction binding the contract method 0xb768ebc9.
//
-// Solidity: function setThirdPartyTransfersForbidden(address strategy, bool value) returns()
-func (_StrategyFactoryStorage *StrategyFactoryStorageTransactorSession) SetThirdPartyTransfersForbidden(strategy common.Address, value bool) (*types.Transaction, error) {
- return _StrategyFactoryStorage.Contract.SetThirdPartyTransfersForbidden(&_StrategyFactoryStorage.TransactOpts, strategy, value)
-}
-
-// WhitelistStrategies is a paid mutator transaction binding the contract method 0x697d54b4.
-//
-// Solidity: function whitelistStrategies(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns()
-func (_StrategyFactoryStorage *StrategyFactoryStorageTransactor) WhitelistStrategies(opts *bind.TransactOpts, strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) {
- return _StrategyFactoryStorage.contract.Transact(opts, "whitelistStrategies", strategiesToWhitelist, thirdPartyTransfersForbiddenValues)
-}
-
-// WhitelistStrategies is a paid mutator transaction binding the contract method 0x697d54b4.
-//
-// Solidity: function whitelistStrategies(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns()
-func (_StrategyFactoryStorage *StrategyFactoryStorageSession) WhitelistStrategies(strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) {
- return _StrategyFactoryStorage.Contract.WhitelistStrategies(&_StrategyFactoryStorage.TransactOpts, strategiesToWhitelist, thirdPartyTransfersForbiddenValues)
-}
-
-// WhitelistStrategies is a paid mutator transaction binding the contract method 0x697d54b4.
-//
-// Solidity: function whitelistStrategies(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns()
-func (_StrategyFactoryStorage *StrategyFactoryStorageTransactorSession) WhitelistStrategies(strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) {
- return _StrategyFactoryStorage.Contract.WhitelistStrategies(&_StrategyFactoryStorage.TransactOpts, strategiesToWhitelist, thirdPartyTransfersForbiddenValues)
+// Solidity: function whitelistStrategies(address[] strategiesToWhitelist) returns()
+func (_StrategyFactoryStorage *StrategyFactoryStorageTransactorSession) WhitelistStrategies(strategiesToWhitelist []common.Address) (*types.Transaction, error) {
+ return _StrategyFactoryStorage.Contract.WhitelistStrategies(&_StrategyFactoryStorage.TransactOpts, strategiesToWhitelist)
}
// StrategyFactoryStorageStrategyBeaconModifiedIterator is returned from FilterStrategyBeaconModified and is used to iterate over the raw logs and unpacked data for StrategyBeaconModified events raised by the StrategyFactoryStorage contract.
diff --git a/pkg/bindings/StrategyManager/binding.go b/pkg/bindings/StrategyManager/binding.go
index d3f6043554..a11b22ffac 100644
--- a/pkg/bindings/StrategyManager/binding.go
+++ b/pkg/bindings/StrategyManager/binding.go
@@ -31,8 +31,8 @@ var (
// StrategyManagerMetaData contains all meta data concerning the StrategyManager contract.
var StrategyManagerMetaData = &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: "0x6101006040523480156200001257600080fd5b506040516200338a3803806200338a833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e0516131a0620001ea60003960006114bb0152600061046e0152600061028501526000818161051a01528181610b8401528181610ed101528181610f250152611a7101526131a06000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b3d565b610a66565b61021e610a9e565b61032461030f366004612b76565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b65565b61025a610375366004612b99565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bc7565b610b79565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd2565b604051610264929190612c08565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612cd1565b610d52565b61021e6104b1366004612d13565b610ec6565b61021e6104c4366004612d64565b610f1a565b61021e6104d73660046129e8565b610fd2565b6102a76104ea366004612db7565b610fe3565b61021e6104fd366004612d13565b61101b565b61021e610510366004612de3565b61114f565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bc7565b611378565b61021e61055d3660046129e8565b611441565b61025a6114b7565b61021e610578366004612a05565b6114f5565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e4f565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e6c565b60405180910390fd5b61063681611651565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eb6565b6106c15760405162461bcd60e51b815260040161062490612ed3565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156107cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156108225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c95760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b4284101561094b5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a036114b7565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a46888288611748565b610a52888c8c8c611907565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a905760405162461bcd60e51b815260040161062490612f1b565b610a9a8282611ad6565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612eb6565b610b265760405162461bcd60e51b815260040161062490612ed3565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6d611b44565b610b776000611b9e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc15760405162461bcd60e51b815260040161062490612f85565b610bcc838383611bf0565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0a57610c0a612a1e565b604051908082528060200260200182016040528015610c33578160200160208202803683370190505b50905060005b82811015610cc4576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7857610c78612fe3565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610cb157610cb1612fe3565b6020908102919091010152600101610c39565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d22575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7c5760405162461bcd60e51b815260040161062490612f1b565b8060005b81811015610bcc5760d16000858584818110610d9e57610d9e612fe3565b9050602002016020810190610db391906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebe57600060d16000868685818110610ded57610ded612fe3565b9050602002016020810190610e0291906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5d57610e5d612fe3565b9050602002016020810190610e7291906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebe848483818110610ea257610ea2612fe3565b9050602002016020810190610eb791906129e8565b6000611ad6565b600101610d80565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0e5760405162461bcd60e51b815260040161062490612f85565b610bcc84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f625760405162461bcd60e51b815260040161062490612f85565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b5050505050505050565b610fda611b44565b61063681611fd9565b60ce6020528160005260406000208181548110610fff57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801561103b5750600054600160ff909116105b806110555750303b158015611055575060005460ff166001145b6110b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110db576000805461ff0019166101001790555b6110e3612042565b60c9556110f083836120d9565b6110f985611b9e565b61110284611fd9565b8015611148576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111795760405162461bcd60e51b815260040161062490612f1b565b8281146112025760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b818110156113705760d1600087878481811061122457611224612fe3565b905060200201602081019061123991906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136857600160d1600088888581811061127257611272612fe3565b905060200201602081019061128791906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e2576112e2612fe3565b90506020020160208101906112f791906129e8565b6040516001600160a01b03909116815260200160405180910390a161136886868381811061132757611327612fe3565b905060200201602081019061133c91906129e8565b85858481811061134e5761134e612fe3565b90506020020160208101906113639190612ff9565b611ad6565b600101611206565b505050505050565b6098546000908190600190811614156113cf5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b600260655414156114225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561143333868686611907565b600160655595945050505050565b611449611b44565b6001600160a01b0381166114ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b9e565b60007f00000000000000000000000000000000000000000000000000000000000000004614156114e8575060c95490565b6114f0612042565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156c9190612e4f565b6001600160a01b0316336001600160a01b03161461159c5760405162461bcd60e51b815260040161062490612e6c565b60985419811960985419161461161a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116df5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186757604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611788908690869060040161306e565b602060405180830381865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190613087565b6001600160e01b031916146118625760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187b83836121bf565b6001600160a01b0316146118625760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119ad5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119c26001600160a01b0385163387866121e3565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906130b1565b9150611a4386858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611c655760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf75760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611d3f57611d35858561223d565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80611e345760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd6020908152604080832093861683529290522054611f45576001600160a01b038416600090815260ce602090815260409091205410611f065760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f7c9084906130e0565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b03161580156120fa57506001600160a01b03821615155b61217c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a9a82611651565b60008060006121ce858561242f565b915091506121db8161249f565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bcc90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612358576001600160a01b03848116600090815260ce602052604090208054918516918390811061228f5761228f612fe3565b6000918252602090912001546001600160a01b03161415612350576001600160a01b038416600090815260ce6020526040902080546122d0906001906130f8565b815481106122e0576122e0612fe3565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061231d5761231d612fe3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612358565b600101612258565b818114156123e05760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce602052604090208054806124075761240761310f565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156124665760208301516040840151606085015160001a61245a8782858561272c565b94509450505050612498565b8251604014156124905760208301516040840151612485868383612819565b935093505050612498565b506000905060025b9250929050565b60008160048111156124b3576124b3613125565b14156124bc5750565b60018160048111156124d0576124d0613125565b141561251e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253257612532613125565b14156125805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259457612594613125565b14156125ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260157612601613125565b14156106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561186257808060200190518101906126cd9190612eb6565b6118625760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130e0565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313b565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b81526004016106249190613157565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff80821115612aa357600080fd5b818901915089601f830112612ab757600080fd5b813581811115612ac957612ac9612a1e565b604051601f8201601f19908116603f01168101908382118183101715612af157612af1612a1e565b816040528281528c6020848701011115612b0a57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5057600080fd5b8235612b5b816129d3565b91506020830135612b6b81612b2f565b809150509250929050565b600060208284031215612b8857600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bac57600080fd5b8235612bb7816129d3565b91506020830135612b6b816129d3565b600080600060608486031215612bdc57600080fd5b8335612be7816129d3565b92506020840135612bf7816129d3565b929592945050506040919091013590565b604080825283519082018190526000906020906060840190828701845b82811015612c4a5781516001600160a01b031684529284019290840190600101612c25565b5050508381038285015284518082528583019183019060005b81811015612c7f57835183529284019291840191600101612c63565b5090979650505050505050565b60008083601f840112612c9e57600080fd5b50813567ffffffffffffffff811115612cb657600080fd5b6020830191508360208260051b850101111561249857600080fd5b60008060208385031215612ce457600080fd5b823567ffffffffffffffff811115612cfb57600080fd5b612d0785828601612c8c565b90969095509350505050565b60008060008060808587031215612d2957600080fd5b8435612d34816129d3565b93506020850135612d44816129d3565b92506040850135612d54816129d3565b9396929550929360600135925050565b60008060008060808587031215612d7a57600080fd5b8435612d85816129d3565b93506020850135612d95816129d3565b9250604085013591506060850135612dac816129d3565b939692955090935050565b60008060408385031215612dca57600080fd5b8235612dd5816129d3565b946020939093013593505050565b60008060008060408587031215612df957600080fd5b843567ffffffffffffffff80821115612e1157600080fd5b612e1d88838901612c8c565b90965094506020870135915080821115612e3657600080fd5b50612e4387828801612c8c565b95989497509550505050565b600060208284031215612e6157600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612ec857600080fd5b8151611d4581612b2f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561300b57600080fd5b8135611d4581612b2f565b60005b83811015613031578181015183820152602001613019565b83811115610bcc5750506000910152565b6000815180845261305a816020860160208601613016565b601f01601f19169290920160200192915050565b8281526040602082015260006128616040830184613042565b60006020828403121561309957600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130c357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156130f3576130f36130ca565b500190565b60008282101561310a5761310a6130ca565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161314d818460208701613016565b9190910192915050565b602081526000611d45602083018461304256fea2646970667358221220146c1ad6a1401bc2b1ccfbd918ffe061fc17a66e735e4302fa116fe5ef4afbd664736f6c634300080c0033",
+ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_delegation\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_BURN_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEPOSIT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addStrategiesToDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"burnShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"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\":\"depositShares\",\"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\":\"depositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBurnableShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"getStrategiesWithBurnableShares\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseBurnableShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"addedSharesToBurn\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"signer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"removeDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"depositSharesToRemove\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"removeStrategiesFromDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToRemoveFromWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStrategyWhitelister\",\"inputs\":[{\"name\":\"newStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakerDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyList\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"strategies\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyListLength\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyIsWhitelistedForDeposit\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"whitelisted\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyWhitelister\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawSharesAsTokens\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BurnableSharesDecreased\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BurnableSharesIncreased\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"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\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyAddedToDepositWhitelist\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyRemovedFromDepositWhitelist\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StrategyWhitelisterChanged\",\"inputs\":[{\"name\":\"previousAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CurrentlyPaused\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InputAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"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: "0x610100604052348015610010575f5ffd5b50604051612c9b380380612c9b83398101604081905261002f916101ed565b81816001600160a01b038116610058576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0524660c052610108604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b60e05261011361011a565b5050610225565b5f54610100900460ff16156101855760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff908116146101d4575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101ea575f5ffd5b50565b5f5f604083850312156101fe575f5ffd5b8251610209816101d6565b602084015190925061021a816101d6565b809150509250929050565b60805160a05160c05160e051612a0b6102905f395f61140101525f61134101525f81816104c70152818161077701528181610b1801528181610d77015281816111cb01526117f901525f818161039c0152818161058601528181610b8201526114250152612a0b5ff3fe608060405234801561000f575f5ffd5b5060043610610208575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461050f578063f698da2514610519578063fabc1cbc14610521578063fd98042314610534578063fe243a1714610547575f5ffd5b8063debe1eab146104af578063df5cf723146104c2578063e7a050aa146104e9578063f2fde38b146104fc575f5ffd5b80639ac01d61116100ef5780639ac01d6114610443578063b5d8b5b814610456578063c665670214610469578063cbc2bd621461047c578063de44acb61461048f575f5ffd5b80638b8aac3c146103d65780638da5cb5b146103fe57806394f649dd1461040f578063967fc0d214610430575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461033b578063715018a61461035d578063724af423146103655780637ecebe0014610378578063886f119514610397575f5ffd5b8063595c6a67146102e55780635ac86ab7146102ed5780635c975abb146103205780635de08ff214610328575f5ffd5b806336a8c500116101db57806336a8c5001461026d57806348825e94146102835780634b6d5d6e146102aa57806350ff7225146102bd575f5ffd5b8063136439dd1461020c5780631794bb3c146102215780632eae418c1461023457806332e89ace14610247575b5f5ffd5b61021f61021a366004612440565b610571565b005b61021f61022f36600461246b565b610646565b61021f6102423660046124a9565b61076c565b61025a61025536600461250b565b610818565b6040519081526020015b60405180910390f35b6102756108bc565b604051610264929190612640565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021f6102b8366004612696565b6109d9565b6102d06102cb36600461246b565b610b0b565b60408051928352602083019190915201610264565b61021f610b6d565b6103106102fb3660046126b1565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61021f6103363660046126d1565b610c1c565b610310610349366004612696565b60d16020525f908152604090205460ff1681565b61021f610d5b565b61021f61037336600461246b565b610d6c565b61025a610386366004612696565b60ca6020525f908152604090205481565b6103be7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a6103e4366004612696565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103be565b61042261041d366004612696565b610dc0565b60405161026492919061277b565b60cb546103be906001600160a01b031681565b61025a6104513660046127a8565b610f38565b61021f6104643660046126d1565b610fc9565b61021f610477366004612696565b611108565b6103be61048a366004612809565b611119565b6104a261049d366004612696565b61114d565b6040516102649190612833565b61021f6104bd366004612809565b6111c0565b6103be7f000000000000000000000000000000000000000000000000000000000000000081565b61025a6104f736600461246b565b611276565b61021f61050a366004612696565b6112c8565b6103be620e16e481565b61025a61133e565b61021f61052f366004612440565b611423565b61025a610542366004612696565b611539565b61025a610555366004612845565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105d3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f7919061287c565b61061457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106395760405163c61dca5d60e01b815260040160405180910390fd5b6106428261154e565b5050565b5f54610100900460ff161580801561066457505f54600160ff909116105b8061067d5750303b15801561067d57505f5460ff166001145b6106e55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610706575f805461ff0019166101001790555b61070f8261154e565b6107188461158b565b610721836115dc565b8015610766575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107b55760405163f739589b60e01b815260040160405180910390fd5b604051636ce5768960e11b81526001600160a01b0384169063d9caed12906107e59087908690869060040161289b565b5f604051808303815f87803b1580156107fc575f5ffd5b505af115801561080e573d5f5f3e3d5ffd5b5050505050505050565b6098545f9081906001908116036108425760405163840a48d560e01b815260040160405180910390fd5b61084a611645565b6001600160a01b0385165f90815260ca602052604090205461087b86610874818c8c8c878c610f38565b868861169e565b6001600160a01b0386165f90815260ca602052604090206001820190556108a4868a8a8a6116f0565b9250506108b16001606555565b509695505050505050565b6060805f6108ca60d461185d565b90505f8167ffffffffffffffff8111156108e6576108e66124f7565b60405190808252806020026020018201604052801561090f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561092c5761092c6124f7565b604051908082528060200260200182016040528015610955578160200160208202803683370190505b5090505f5b838110156109ce575f5f61096f60d48461186d565b9150915081858481518110610986576109866128bf565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109b9576109b96128bf565b6020908102919091010152505060010161095a565b509094909350915050565b6109e1611645565b5f6109ed60d48361188a565b9150506109fb60d4836118a1565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a1816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a8d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab191906128d3565b846040518463ffffffff1660e01b8152600401610ad09392919061289b565b5f604051808303815f87803b158015610ae7575f5ffd5b505af1158015610af9573d5f5f3e3d5ffd5b5050505050610b086001606555565b50565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b565760405163f739589b60e01b815260040160405180910390fd5b610b618585856118bc565b91509150935093915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610bcf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf3919061287c565b610c1057604051631d77d47760e21b815260040160405180910390fd5b610c1a5f1961154e565b565b60cb546001600160a01b03163314610c47576040516320ba3ff960e21b815260040160405180910390fd5b805f5b818110156107665760d15f858584818110610c6757610c676128bf565b9050602002016020810190610c7c9190612696565b6001600160a01b0316815260208101919091526040015f205460ff16610d5357600160d15f868685818110610cb357610cb36128bf565b9050602002016020810190610cc89190612696565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d2257610d226128bf565b9050602002016020810190610d379190612696565b6040516001600160a01b03909116815260200160405180910390a15b600101610c4a565b610d63611a24565b610c1a5f61158b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610db55760405163f739589b60e01b815260040160405180910390fd5b610766838383611a7e565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610df757610df76124f7565b604051908082528060200260200182016040528015610e20578160200160208202803683370190505b5090505f5b82811015610eae576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610e6357610e636128bf565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610e9b57610e9b6128bf565b6020908102919091010152600101610e25565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610f2657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610f08575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90610fbe906101000160405160208183030381529060405280519060200120611b40565b979650505050505050565b60cb546001600160a01b03163314610ff4576040516320ba3ff960e21b815260040160405180910390fd5b805f5b818110156107665760d15f858584818110611014576110146128bf565b90506020020160208101906110299190612696565b6001600160a01b0316815260208101919091526040015f205460ff1615611100575f60d15f868685818110611060576110606128bf565b90506020020160208101906110759190612696565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba0308484838181106110cf576110cf6128bf565b90506020020160208101906110e49190612696565b6040516001600160a01b03909116815260200160405180910390a15b600101610ff7565b611110611a24565b610b08816115dc565b60ce602052815f5260405f208181548110611132575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce60209081526040918290208054835181840281018401909452808452606093928301828280156111b457602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611196575b50505050509050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112095760405163f739589b60e01b815260040160405180910390fd5b5f61121560d48461188a565b915061122e905060d4846112298585612902565b611b86565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1505050565b6098545f9081906001908116036112a05760405163840a48d560e01b815260040160405180910390fd5b6112a8611645565b6112b4338686866116f0565b91506112c06001606555565b509392505050565b6112d0611a24565b6001600160a01b0381166113355760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106dc565b610b088161158b565b5f7f000000000000000000000000000000000000000000000000000000000000000046146113fe5750604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561147f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114a391906128d3565b6001600160a01b0316336001600160a01b0316146114d45760405163794821ff60e01b815260040160405180910390fd5b609854801982198116146114fb5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f61154660d48461188a565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b6002606554036116975760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106dc565b6002606555565b428110156116bf57604051630819bdcd60e01b815260040160405180910390fd5b6116d36001600160a01b0385168484611b9b565b61076657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff1661172a57604051632efd965160e11b815260040160405180910390fd5b61173f6001600160a01b038516338786611bf9565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561178b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117af9190612915565b91505f5f6117be8888866118bc565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b15801561183c575f5ffd5b505af115801561184e573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61186782611c51565b92915050565b5f80808061187b8686611c5b565b909450925050505b9250929050565b5f80808061187b866001600160a01b038716611c84565b5f6118b5836001600160a01b038416611cbc565b9392505050565b5f806001600160a01b0385166118e5576040516316f2ccc960e01b815260040160405180910390fd5b825f03611905576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd60209081526040808320938816835292905290812054908190036119ab576001600160a01b0386165f90815260ce60209081526040909120541061196d576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b6119b58482612902565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611a119088908890889061289b565b60405180910390a1959294509192505050565b6033546001600160a01b03163314610c1a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106dc565b5f815f03611a9f576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038085165f90815260cd602090815260408083209387168352929052205480831115611ae557604051634b18b19360e01b815260040160405180910390fd5b611aef838261292c565b6001600160a01b038087165f90815260cd602090815260408083209389168352929052908120829055909150819003611b3657611b2c8585611cd8565b60019150506118b5565b505f949350505050565b5f611b4961133e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f611546846001600160a01b03851684611e56565b5f5f5f611ba88585611e72565b90925090505f816004811115611bc057611bc061293f565b148015611bde5750856001600160a01b0316826001600160a01b0316145b80611bef5750611bef868686611eb1565b9695505050505050565b610766846323b872dd60e01b858585604051602401611c1a9392919061289b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611f98565b5f61186782612070565b5f8080611c688585612079565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611cb157611ca58585612084565b92505f91506118839050565b600192509050611883565b5f81815260028301602052604081208190556118b5838361208f565b6001600160a01b0382165f90815260ce6020526040812054905b81811015611dea576001600160a01b038481165f90815260ce6020526040902080549185169183908110611d2857611d286128bf565b5f918252602090912001546001600160a01b031603611de2576001600160a01b0384165f90815260ce602052604090208054611d669060019061292c565b81548110611d7657611d766128bf565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611db257611db26128bf565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611dea565b600101611cf2565b818103611e0a57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611e3057611e30612953565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f8281526002840160205260408120829055611546848461209a565b5f5f8251604103611ea6576020830151604084015160608501515f1a611e9a878285856120a5565b94509450505050611883565b505f90506002611883565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401611ed9929190612995565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611f1791906129ad565b5f60405180830381855afa9150503d805f8114611f4f576040519150601f19603f3d011682016040523d82523d5f602084013e611f54565b606091505b5091509150818015611f6857506020815110155b8015611bef57508051630b135d3f60e11b90611f8d9083016020908101908401612915565b149695505050505050565b5f611fec826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166121629092919063ffffffff16565b905080515f148061200c57508080602001905181019061200c919061287c565b61206b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106dc565b505050565b5f611867825490565b5f6118b58383612170565b5f6118b58383612196565b5f6118b583836121ad565b5f6118b58383612290565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156120da57505f90506003612159565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561212b573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116612153575f60019250925050612159565b91505f90505b94509492505050565b606061154684845f856122dc565b5f825f018281548110612185576121856128bf565b905f5260205f200154905092915050565b5f81815260018301602052604081205415156118b5565b5f8181526001830160205260408120548015612287575f6121cf60018361292c565b85549091505f906121e29060019061292c565b9050818114612241575f865f018281548110612200576122006128bf565b905f5260205f200154905080875f018481548110612220576122206128bf565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061225257612252612953565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611867565b5f915050611867565b5f8181526001830160205260408120546122d557508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611867565b505f611867565b60608247101561233d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106dc565b5f5f866001600160a01b0316858760405161235891906129ad565b5f6040518083038185875af1925050503d805f8114612392576040519150601f19603f3d011682016040523d82523d5f602084013e612397565b606091505b5091509150610fbe87838387606083156124115782515f0361240a576001600160a01b0385163b61240a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106dc565b5081611546565b61154683838151156124265781518083602001fd5b8060405162461bcd60e51b81526004016106dc91906129c3565b5f60208284031215612450575f5ffd5b5035919050565b6001600160a01b0381168114610b08575f5ffd5b5f5f5f6060848603121561247d575f5ffd5b833561248881612457565b9250602084013561249881612457565b929592945050506040919091013590565b5f5f5f5f608085870312156124bc575f5ffd5b84356124c781612457565b935060208501356124d781612457565b925060408501356124e781612457565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c08789031215612520575f5ffd5b863561252b81612457565b9550602087013561253b81612457565b945060408701359350606087013561255281612457565b92506080870135915060a087013567ffffffffffffffff811115612574575f5ffd5b8701601f81018913612584575f5ffd5b803567ffffffffffffffff81111561259e5761259e6124f7565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156125cd576125cd6124f7565b6040528181528282016020018b10156125e4575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b82811015612636578151865260209586019590910190600101612618565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156126825783516001600160a01b031683526020938401939092019160010161265b565b50508381036020850152611bef8186612606565b5f602082840312156126a6575f5ffd5b81356118b581612457565b5f602082840312156126c1575f5ffd5b813560ff811681146118b5575f5ffd5b5f5f602083850312156126e2575f5ffd5b823567ffffffffffffffff8111156126f8575f5ffd5b8301601f81018513612708575f5ffd5b803567ffffffffffffffff81111561271e575f5ffd5b8560208260051b8401011115612732575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156126365781516001600160a01b0316865260209586019590910190600101612754565b604081525f61278d6040830185612742565b828103602084015261279f8185612606565b95945050505050565b5f5f5f5f5f5f60c087890312156127bd575f5ffd5b86356127c881612457565b955060208701356127d881612457565b945060408701356127e881612457565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f6040838503121561281a575f5ffd5b823561282581612457565b946020939093013593505050565b602081525f6118b56020830184612742565b5f5f60408385031215612856575f5ffd5b823561286181612457565b9150602083013561287181612457565b809150509250929050565b5f6020828403121561288c575f5ffd5b815180151581146118b5575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156128e3575f5ffd5b81516118b581612457565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611867576118676128ee565b5f60208284031215612925575f5ffd5b5051919050565b81810381811115611867576118676128ee565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b828152604060208201525f6115466040830184612967565b5f82518060208501845e5f920191825250919050565b602081525f6118b5602083018461296756fea2646970667358221220dd50178ee12aa9672bc3158aff1ab98ae0d2b217bf934148e25e1fbf519fbb3d64736f6c634300081b0033",
}
// StrategyManagerABI is the input ABI used to generate the binding from.
@@ -44,7 +44,7 @@ var StrategyManagerABI = StrategyManagerMetaData.ABI
var StrategyManagerBin = StrategyManagerMetaData.Bin
// DeployStrategyManager deploys a new Ethereum contract, binding an instance of StrategyManager to it.
-func DeployStrategyManager(auth *bind.TransactOpts, backend bind.ContractBackend, _delegation common.Address, _eigenPodManager common.Address, _slasher common.Address) (common.Address, *types.Transaction, *StrategyManager, error) {
+func DeployStrategyManager(auth *bind.TransactOpts, backend bind.ContractBackend, _delegation common.Address, _pauserRegistry common.Address) (common.Address, *types.Transaction, *StrategyManager, error) {
parsed, err := StrategyManagerMetaData.GetAbi()
if err != nil {
return common.Address{}, nil, nil, err
@@ -53,7 +53,7 @@ func DeployStrategyManager(auth *bind.TransactOpts, backend bind.ContractBackend
return common.Address{}, nil, nil, errors.New("GetABI returned nil")
}
- address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StrategyManagerBin), backend, _delegation, _eigenPodManager, _slasher)
+ address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StrategyManagerBin), backend, _delegation, _pauserRegistry)
if err != nil {
return common.Address{}, nil, nil, err
}
@@ -202,6 +202,37 @@ func (_StrategyManager *StrategyManagerTransactorRaw) Transact(opts *bind.Transa
return _StrategyManager.Contract.contract.Transact(opts, method, params...)
}
+// DEFAULTBURNADDRESS is a free data retrieval call binding the contract method 0xf3b4a000.
+//
+// Solidity: function DEFAULT_BURN_ADDRESS() view returns(address)
+func (_StrategyManager *StrategyManagerCaller) DEFAULTBURNADDRESS(opts *bind.CallOpts) (common.Address, error) {
+ var out []interface{}
+ err := _StrategyManager.contract.Call(opts, &out, "DEFAULT_BURN_ADDRESS")
+
+ if err != nil {
+ return *new(common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
+
+ return out0, err
+
+}
+
+// DEFAULTBURNADDRESS is a free data retrieval call binding the contract method 0xf3b4a000.
+//
+// Solidity: function DEFAULT_BURN_ADDRESS() view returns(address)
+func (_StrategyManager *StrategyManagerSession) DEFAULTBURNADDRESS() (common.Address, error) {
+ return _StrategyManager.Contract.DEFAULTBURNADDRESS(&_StrategyManager.CallOpts)
+}
+
+// DEFAULTBURNADDRESS is a free data retrieval call binding the contract method 0xf3b4a000.
+//
+// Solidity: function DEFAULT_BURN_ADDRESS() view returns(address)
+func (_StrategyManager *StrategyManagerCallerSession) DEFAULTBURNADDRESS() (common.Address, error) {
+ return _StrategyManager.Contract.DEFAULTBURNADDRESS(&_StrategyManager.CallOpts)
+}
+
// DEPOSITTYPEHASH is a free data retrieval call binding the contract method 0x48825e94.
//
// Solidity: function DEPOSIT_TYPEHASH() view returns(bytes32)
@@ -233,12 +264,12 @@ func (_StrategyManager *StrategyManagerCallerSession) DEPOSITTYPEHASH() ([32]byt
return _StrategyManager.Contract.DEPOSITTYPEHASH(&_StrategyManager.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 (_StrategyManager *StrategyManagerCaller) 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 (_StrategyManager *StrategyManagerCaller) 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 := _StrategyManager.contract.Call(opts, &out, "DOMAIN_TYPEHASH")
+ err := _StrategyManager.contract.Call(opts, &out, "calculateStrategyDepositDigestHash", staker, strategy, token, amount, nonce, expiry)
if err != nil {
return *new([32]byte), err
@@ -250,18 +281,18 @@ func (_StrategyManager *StrategyManagerCaller) DOMAINTYPEHASH(opts *bind.CallOpt
}
-// 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 (_StrategyManager *StrategyManagerSession) DOMAINTYPEHASH() ([32]byte, error) {
- return _StrategyManager.Contract.DOMAINTYPEHASH(&_StrategyManager.CallOpts)
+// Solidity: function calculateStrategyDepositDigestHash(address staker, address strategy, address token, uint256 amount, uint256 nonce, uint256 expiry) view returns(bytes32)
+func (_StrategyManager *StrategyManagerSession) CalculateStrategyDepositDigestHash(staker common.Address, strategy common.Address, token common.Address, amount *big.Int, nonce *big.Int, expiry *big.Int) ([32]byte, error) {
+ return _StrategyManager.Contract.CalculateStrategyDepositDigestHash(&_StrategyManager.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 (_StrategyManager *StrategyManagerCallerSession) DOMAINTYPEHASH() ([32]byte, error) {
- return _StrategyManager.Contract.DOMAINTYPEHASH(&_StrategyManager.CallOpts)
+// Solidity: function calculateStrategyDepositDigestHash(address staker, address strategy, address token, uint256 amount, uint256 nonce, uint256 expiry) view returns(bytes32)
+func (_StrategyManager *StrategyManagerCallerSession) CalculateStrategyDepositDigestHash(staker common.Address, strategy common.Address, token common.Address, amount *big.Int, nonce *big.Int, expiry *big.Int) ([32]byte, error) {
+ return _StrategyManager.Contract.CalculateStrategyDepositDigestHash(&_StrategyManager.CallOpts, staker, strategy, token, amount, nonce, expiry)
}
// Delegation is a free data retrieval call binding the contract method 0xdf5cf723.
@@ -326,35 +357,35 @@ func (_StrategyManager *StrategyManagerCallerSession) DomainSeparator() ([32]byt
return _StrategyManager.Contract.DomainSeparator(&_StrategyManager.CallOpts)
}
-// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda.
+// GetBurnableShares is a free data retrieval call binding the contract method 0xfd980423.
//
-// Solidity: function eigenPodManager() view returns(address)
-func (_StrategyManager *StrategyManagerCaller) EigenPodManager(opts *bind.CallOpts) (common.Address, error) {
+// Solidity: function getBurnableShares(address strategy) view returns(uint256)
+func (_StrategyManager *StrategyManagerCaller) GetBurnableShares(opts *bind.CallOpts, strategy common.Address) (*big.Int, error) {
var out []interface{}
- err := _StrategyManager.contract.Call(opts, &out, "eigenPodManager")
+ err := _StrategyManager.contract.Call(opts, &out, "getBurnableShares", 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
}
-// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda.
+// GetBurnableShares is a free data retrieval call binding the contract method 0xfd980423.
//
-// Solidity: function eigenPodManager() view returns(address)
-func (_StrategyManager *StrategyManagerSession) EigenPodManager() (common.Address, error) {
- return _StrategyManager.Contract.EigenPodManager(&_StrategyManager.CallOpts)
+// Solidity: function getBurnableShares(address strategy) view returns(uint256)
+func (_StrategyManager *StrategyManagerSession) GetBurnableShares(strategy common.Address) (*big.Int, error) {
+ return _StrategyManager.Contract.GetBurnableShares(&_StrategyManager.CallOpts, strategy)
}
-// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda.
+// GetBurnableShares is a free data retrieval call binding the contract method 0xfd980423.
//
-// Solidity: function eigenPodManager() view returns(address)
-func (_StrategyManager *StrategyManagerCallerSession) EigenPodManager() (common.Address, error) {
- return _StrategyManager.Contract.EigenPodManager(&_StrategyManager.CallOpts)
+// Solidity: function getBurnableShares(address strategy) view returns(uint256)
+func (_StrategyManager *StrategyManagerCallerSession) GetBurnableShares(strategy common.Address) (*big.Int, error) {
+ return _StrategyManager.Contract.GetBurnableShares(&_StrategyManager.CallOpts, strategy)
}
// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd.
@@ -389,12 +420,75 @@ func (_StrategyManager *StrategyManagerCallerSession) GetDeposits(staker common.
return _StrategyManager.Contract.GetDeposits(&_StrategyManager.CallOpts, staker)
}
+// GetStakerStrategyList is a free data retrieval call binding the contract method 0xde44acb6.
+//
+// Solidity: function getStakerStrategyList(address staker) view returns(address[])
+func (_StrategyManager *StrategyManagerCaller) GetStakerStrategyList(opts *bind.CallOpts, staker common.Address) ([]common.Address, error) {
+ var out []interface{}
+ err := _StrategyManager.contract.Call(opts, &out, "getStakerStrategyList", staker)
+
+ if err != nil {
+ return *new([]common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
+
+ return out0, err
+
+}
+
+// GetStakerStrategyList is a free data retrieval call binding the contract method 0xde44acb6.
+//
+// Solidity: function getStakerStrategyList(address staker) view returns(address[])
+func (_StrategyManager *StrategyManagerSession) GetStakerStrategyList(staker common.Address) ([]common.Address, error) {
+ return _StrategyManager.Contract.GetStakerStrategyList(&_StrategyManager.CallOpts, staker)
+}
+
+// GetStakerStrategyList is a free data retrieval call binding the contract method 0xde44acb6.
+//
+// Solidity: function getStakerStrategyList(address staker) view returns(address[])
+func (_StrategyManager *StrategyManagerCallerSession) GetStakerStrategyList(staker common.Address) ([]common.Address, error) {
+ return _StrategyManager.Contract.GetStakerStrategyList(&_StrategyManager.CallOpts, staker)
+}
+
+// GetStrategiesWithBurnableShares is a free data retrieval call binding the contract method 0x36a8c500.
+//
+// Solidity: function getStrategiesWithBurnableShares() view returns(address[], uint256[])
+func (_StrategyManager *StrategyManagerCaller) GetStrategiesWithBurnableShares(opts *bind.CallOpts) ([]common.Address, []*big.Int, error) {
+ var out []interface{}
+ err := _StrategyManager.contract.Call(opts, &out, "getStrategiesWithBurnableShares")
+
+ if err != nil {
+ return *new([]common.Address), *new([]*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
+ out1 := *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int)
+
+ return out0, out1, err
+
+}
+
+// GetStrategiesWithBurnableShares is a free data retrieval call binding the contract method 0x36a8c500.
+//
+// Solidity: function getStrategiesWithBurnableShares() view returns(address[], uint256[])
+func (_StrategyManager *StrategyManagerSession) GetStrategiesWithBurnableShares() ([]common.Address, []*big.Int, error) {
+ return _StrategyManager.Contract.GetStrategiesWithBurnableShares(&_StrategyManager.CallOpts)
+}
+
+// GetStrategiesWithBurnableShares is a free data retrieval call binding the contract method 0x36a8c500.
+//
+// Solidity: function getStrategiesWithBurnableShares() view returns(address[], uint256[])
+func (_StrategyManager *StrategyManagerCallerSession) GetStrategiesWithBurnableShares() ([]common.Address, []*big.Int, error) {
+ return _StrategyManager.Contract.GetStrategiesWithBurnableShares(&_StrategyManager.CallOpts)
+}
+
// Nonces is a free data retrieval call binding the contract method 0x7ecebe00.
//
-// Solidity: function nonces(address ) view returns(uint256)
-func (_StrategyManager *StrategyManagerCaller) Nonces(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
+// Solidity: function nonces(address signer) view returns(uint256 nonce)
+func (_StrategyManager *StrategyManagerCaller) Nonces(opts *bind.CallOpts, signer common.Address) (*big.Int, error) {
var out []interface{}
- err := _StrategyManager.contract.Call(opts, &out, "nonces", arg0)
+ err := _StrategyManager.contract.Call(opts, &out, "nonces", signer)
if err != nil {
return *new(*big.Int), err
@@ -408,16 +502,16 @@ func (_StrategyManager *StrategyManagerCaller) Nonces(opts *bind.CallOpts, arg0
// Nonces is a free data retrieval call binding the contract method 0x7ecebe00.
//
-// Solidity: function nonces(address ) view returns(uint256)
-func (_StrategyManager *StrategyManagerSession) Nonces(arg0 common.Address) (*big.Int, error) {
- return _StrategyManager.Contract.Nonces(&_StrategyManager.CallOpts, arg0)
+// Solidity: function nonces(address signer) view returns(uint256 nonce)
+func (_StrategyManager *StrategyManagerSession) Nonces(signer common.Address) (*big.Int, error) {
+ return _StrategyManager.Contract.Nonces(&_StrategyManager.CallOpts, signer)
}
// Nonces is a free data retrieval call binding the contract method 0x7ecebe00.
//
-// Solidity: function nonces(address ) view returns(uint256)
-func (_StrategyManager *StrategyManagerCallerSession) Nonces(arg0 common.Address) (*big.Int, error) {
- return _StrategyManager.Contract.Nonces(&_StrategyManager.CallOpts, arg0)
+// Solidity: function nonces(address signer) view returns(uint256 nonce)
+func (_StrategyManager *StrategyManagerCallerSession) Nonces(signer common.Address) (*big.Int, error) {
+ return _StrategyManager.Contract.Nonces(&_StrategyManager.CallOpts, signer)
}
// Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
@@ -544,43 +638,43 @@ func (_StrategyManager *StrategyManagerCallerSession) PauserRegistry() (common.A
return _StrategyManager.Contract.PauserRegistry(&_StrategyManager.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 (_StrategyManager *StrategyManagerCaller) Slasher(opts *bind.CallOpts) (common.Address, error) {
+// Solidity: function stakerDepositShares(address staker, address strategy) view returns(uint256 shares)
+func (_StrategyManager *StrategyManagerCaller) StakerDepositShares(opts *bind.CallOpts, staker common.Address, strategy common.Address) (*big.Int, error) {
var out []interface{}
- err := _StrategyManager.contract.Call(opts, &out, "slasher")
+ err := _StrategyManager.contract.Call(opts, &out, "stakerDepositShares", staker, 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 (_StrategyManager *StrategyManagerSession) Slasher() (common.Address, error) {
- return _StrategyManager.Contract.Slasher(&_StrategyManager.CallOpts)
+// Solidity: function stakerDepositShares(address staker, address strategy) view returns(uint256 shares)
+func (_StrategyManager *StrategyManagerSession) StakerDepositShares(staker common.Address, strategy common.Address) (*big.Int, error) {
+ return _StrategyManager.Contract.StakerDepositShares(&_StrategyManager.CallOpts, staker, 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 (_StrategyManager *StrategyManagerCallerSession) Slasher() (common.Address, error) {
- return _StrategyManager.Contract.Slasher(&_StrategyManager.CallOpts)
+// Solidity: function stakerDepositShares(address staker, address strategy) view returns(uint256 shares)
+func (_StrategyManager *StrategyManagerCallerSession) StakerDepositShares(staker common.Address, strategy common.Address) (*big.Int, error) {
+ return _StrategyManager.Contract.StakerDepositShares(&_StrategyManager.CallOpts, staker, strategy)
}
// StakerStrategyList is a free data retrieval call binding the contract method 0xcbc2bd62.
//
-// Solidity: function stakerStrategyList(address , uint256 ) view returns(address)
-func (_StrategyManager *StrategyManagerCaller) StakerStrategyList(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int) (common.Address, error) {
+// Solidity: function stakerStrategyList(address staker, uint256 ) view returns(address strategies)
+func (_StrategyManager *StrategyManagerCaller) StakerStrategyList(opts *bind.CallOpts, staker common.Address, arg1 *big.Int) (common.Address, error) {
var out []interface{}
- err := _StrategyManager.contract.Call(opts, &out, "stakerStrategyList", arg0, arg1)
+ err := _StrategyManager.contract.Call(opts, &out, "stakerStrategyList", staker, arg1)
if err != nil {
return *new(common.Address), err
@@ -594,16 +688,16 @@ func (_StrategyManager *StrategyManagerCaller) StakerStrategyList(opts *bind.Cal
// StakerStrategyList is a free data retrieval call binding the contract method 0xcbc2bd62.
//
-// Solidity: function stakerStrategyList(address , uint256 ) view returns(address)
-func (_StrategyManager *StrategyManagerSession) StakerStrategyList(arg0 common.Address, arg1 *big.Int) (common.Address, error) {
- return _StrategyManager.Contract.StakerStrategyList(&_StrategyManager.CallOpts, arg0, arg1)
+// Solidity: function stakerStrategyList(address staker, uint256 ) view returns(address strategies)
+func (_StrategyManager *StrategyManagerSession) StakerStrategyList(staker common.Address, arg1 *big.Int) (common.Address, error) {
+ return _StrategyManager.Contract.StakerStrategyList(&_StrategyManager.CallOpts, staker, arg1)
}
// StakerStrategyList is a free data retrieval call binding the contract method 0xcbc2bd62.
//
-// Solidity: function stakerStrategyList(address , uint256 ) view returns(address)
-func (_StrategyManager *StrategyManagerCallerSession) StakerStrategyList(arg0 common.Address, arg1 *big.Int) (common.Address, error) {
- return _StrategyManager.Contract.StakerStrategyList(&_StrategyManager.CallOpts, arg0, arg1)
+// Solidity: function stakerStrategyList(address staker, uint256 ) view returns(address strategies)
+func (_StrategyManager *StrategyManagerCallerSession) StakerStrategyList(staker common.Address, arg1 *big.Int) (common.Address, error) {
+ return _StrategyManager.Contract.StakerStrategyList(&_StrategyManager.CallOpts, staker, arg1)
}
// StakerStrategyListLength is a free data retrieval call binding the contract method 0x8b8aac3c.
@@ -637,43 +731,12 @@ func (_StrategyManager *StrategyManagerCallerSession) StakerStrategyListLength(s
return _StrategyManager.Contract.StakerStrategyListLength(&_StrategyManager.CallOpts, staker)
}
-// StakerStrategyShares is a free data retrieval call binding the contract method 0x7a7e0d92.
-//
-// Solidity: function stakerStrategyShares(address , address ) view returns(uint256)
-func (_StrategyManager *StrategyManagerCaller) StakerStrategyShares(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) {
- var out []interface{}
- err := _StrategyManager.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 (_StrategyManager *StrategyManagerSession) StakerStrategyShares(arg0 common.Address, arg1 common.Address) (*big.Int, error) {
- return _StrategyManager.Contract.StakerStrategyShares(&_StrategyManager.CallOpts, arg0, arg1)
-}
-
-// StakerStrategyShares is a free data retrieval call binding the contract method 0x7a7e0d92.
-//
-// Solidity: function stakerStrategyShares(address , address ) view returns(uint256)
-func (_StrategyManager *StrategyManagerCallerSession) StakerStrategyShares(arg0 common.Address, arg1 common.Address) (*big.Int, error) {
- return _StrategyManager.Contract.StakerStrategyShares(&_StrategyManager.CallOpts, arg0, arg1)
-}
-
// StrategyIsWhitelistedForDeposit is a free data retrieval call binding the contract method 0x663c1de4.
//
-// Solidity: function strategyIsWhitelistedForDeposit(address ) view returns(bool)
-func (_StrategyManager *StrategyManagerCaller) StrategyIsWhitelistedForDeposit(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
+// Solidity: function strategyIsWhitelistedForDeposit(address strategy) view returns(bool whitelisted)
+func (_StrategyManager *StrategyManagerCaller) StrategyIsWhitelistedForDeposit(opts *bind.CallOpts, strategy common.Address) (bool, error) {
var out []interface{}
- err := _StrategyManager.contract.Call(opts, &out, "strategyIsWhitelistedForDeposit", arg0)
+ err := _StrategyManager.contract.Call(opts, &out, "strategyIsWhitelistedForDeposit", strategy)
if err != nil {
return *new(bool), err
@@ -687,16 +750,16 @@ func (_StrategyManager *StrategyManagerCaller) StrategyIsWhitelistedForDeposit(o
// StrategyIsWhitelistedForDeposit is a free data retrieval call binding the contract method 0x663c1de4.
//
-// Solidity: function strategyIsWhitelistedForDeposit(address ) view returns(bool)
-func (_StrategyManager *StrategyManagerSession) StrategyIsWhitelistedForDeposit(arg0 common.Address) (bool, error) {
- return _StrategyManager.Contract.StrategyIsWhitelistedForDeposit(&_StrategyManager.CallOpts, arg0)
+// Solidity: function strategyIsWhitelistedForDeposit(address strategy) view returns(bool whitelisted)
+func (_StrategyManager *StrategyManagerSession) StrategyIsWhitelistedForDeposit(strategy common.Address) (bool, error) {
+ return _StrategyManager.Contract.StrategyIsWhitelistedForDeposit(&_StrategyManager.CallOpts, strategy)
}
// StrategyIsWhitelistedForDeposit is a free data retrieval call binding the contract method 0x663c1de4.
//
-// Solidity: function strategyIsWhitelistedForDeposit(address ) view returns(bool)
-func (_StrategyManager *StrategyManagerCallerSession) StrategyIsWhitelistedForDeposit(arg0 common.Address) (bool, error) {
- return _StrategyManager.Contract.StrategyIsWhitelistedForDeposit(&_StrategyManager.CallOpts, arg0)
+// Solidity: function strategyIsWhitelistedForDeposit(address strategy) view returns(bool whitelisted)
+func (_StrategyManager *StrategyManagerCallerSession) StrategyIsWhitelistedForDeposit(strategy common.Address) (bool, error) {
+ return _StrategyManager.Contract.StrategyIsWhitelistedForDeposit(&_StrategyManager.CallOpts, strategy)
}
// StrategyWhitelister is a free data retrieval call binding the contract method 0x967fc0d2.
@@ -730,140 +793,151 @@ func (_StrategyManager *StrategyManagerCallerSession) StrategyWhitelister() (com
return _StrategyManager.Contract.StrategyWhitelister(&_StrategyManager.CallOpts)
}
-// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d.
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
//
-// Solidity: function thirdPartyTransfersForbidden(address ) view returns(bool)
-func (_StrategyManager *StrategyManagerCaller) ThirdPartyTransfersForbidden(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
- var out []interface{}
- err := _StrategyManager.contract.Call(opts, &out, "thirdPartyTransfersForbidden", arg0)
-
- if err != nil {
- return *new(bool), err
- }
-
- out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
-
- return out0, err
-
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_StrategyManager *StrategyManagerTransactor) AddShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _StrategyManager.contract.Transact(opts, "addShares", staker, strategy, shares)
}
-// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d.
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
//
-// Solidity: function thirdPartyTransfersForbidden(address ) view returns(bool)
-func (_StrategyManager *StrategyManagerSession) ThirdPartyTransfersForbidden(arg0 common.Address) (bool, error) {
- return _StrategyManager.Contract.ThirdPartyTransfersForbidden(&_StrategyManager.CallOpts, arg0)
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_StrategyManager *StrategyManagerSession) AddShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _StrategyManager.Contract.AddShares(&_StrategyManager.TransactOpts, staker, strategy, shares)
}
-// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d.
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
//
-// Solidity: function thirdPartyTransfersForbidden(address ) view returns(bool)
-func (_StrategyManager *StrategyManagerCallerSession) ThirdPartyTransfersForbidden(arg0 common.Address) (bool, error) {
- return _StrategyManager.Contract.ThirdPartyTransfersForbidden(&_StrategyManager.CallOpts, arg0)
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_StrategyManager *StrategyManagerTransactorSession) AddShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _StrategyManager.Contract.AddShares(&_StrategyManager.TransactOpts, staker, strategy, shares)
}
-// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1.
+// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0x5de08ff2.
//
-// Solidity: function addShares(address staker, address token, address strategy, uint256 shares) returns()
-func (_StrategyManager *StrategyManagerTransactor) AddShares(opts *bind.TransactOpts, staker common.Address, token common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _StrategyManager.contract.Transact(opts, "addShares", staker, token, strategy, shares)
+// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist) returns()
+func (_StrategyManager *StrategyManagerTransactor) AddStrategiesToDepositWhitelist(opts *bind.TransactOpts, strategiesToWhitelist []common.Address) (*types.Transaction, error) {
+ return _StrategyManager.contract.Transact(opts, "addStrategiesToDepositWhitelist", strategiesToWhitelist)
}
-// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1.
+// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0x5de08ff2.
//
-// Solidity: function addShares(address staker, address token, address strategy, uint256 shares) returns()
-func (_StrategyManager *StrategyManagerSession) AddShares(staker common.Address, token common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _StrategyManager.Contract.AddShares(&_StrategyManager.TransactOpts, staker, token, strategy, shares)
+// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist) returns()
+func (_StrategyManager *StrategyManagerSession) AddStrategiesToDepositWhitelist(strategiesToWhitelist []common.Address) (*types.Transaction, error) {
+ return _StrategyManager.Contract.AddStrategiesToDepositWhitelist(&_StrategyManager.TransactOpts, strategiesToWhitelist)
}
-// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1.
+// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0x5de08ff2.
//
-// Solidity: function addShares(address staker, address token, address strategy, uint256 shares) returns()
-func (_StrategyManager *StrategyManagerTransactorSession) AddShares(staker common.Address, token common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _StrategyManager.Contract.AddShares(&_StrategyManager.TransactOpts, staker, token, strategy, shares)
+// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist) returns()
+func (_StrategyManager *StrategyManagerTransactorSession) AddStrategiesToDepositWhitelist(strategiesToWhitelist []common.Address) (*types.Transaction, error) {
+ return _StrategyManager.Contract.AddStrategiesToDepositWhitelist(&_StrategyManager.TransactOpts, strategiesToWhitelist)
}
-// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547.
+// BurnShares is a paid mutator transaction binding the contract method 0x4b6d5d6e.
//
-// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns()
-func (_StrategyManager *StrategyManagerTransactor) AddStrategiesToDepositWhitelist(opts *bind.TransactOpts, strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) {
- return _StrategyManager.contract.Transact(opts, "addStrategiesToDepositWhitelist", strategiesToWhitelist, thirdPartyTransfersForbiddenValues)
+// Solidity: function burnShares(address strategy) returns()
+func (_StrategyManager *StrategyManagerTransactor) BurnShares(opts *bind.TransactOpts, strategy common.Address) (*types.Transaction, error) {
+ return _StrategyManager.contract.Transact(opts, "burnShares", strategy)
}
-// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547.
+// BurnShares is a paid mutator transaction binding the contract method 0x4b6d5d6e.
//
-// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns()
-func (_StrategyManager *StrategyManagerSession) AddStrategiesToDepositWhitelist(strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) {
- return _StrategyManager.Contract.AddStrategiesToDepositWhitelist(&_StrategyManager.TransactOpts, strategiesToWhitelist, thirdPartyTransfersForbiddenValues)
+// Solidity: function burnShares(address strategy) returns()
+func (_StrategyManager *StrategyManagerSession) BurnShares(strategy common.Address) (*types.Transaction, error) {
+ return _StrategyManager.Contract.BurnShares(&_StrategyManager.TransactOpts, strategy)
}
-// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547.
+// BurnShares is a paid mutator transaction binding the contract method 0x4b6d5d6e.
//
-// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns()
-func (_StrategyManager *StrategyManagerTransactorSession) AddStrategiesToDepositWhitelist(strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) {
- return _StrategyManager.Contract.AddStrategiesToDepositWhitelist(&_StrategyManager.TransactOpts, strategiesToWhitelist, thirdPartyTransfersForbiddenValues)
+// Solidity: function burnShares(address strategy) returns()
+func (_StrategyManager *StrategyManagerTransactorSession) BurnShares(strategy common.Address) (*types.Transaction, error) {
+ return _StrategyManager.Contract.BurnShares(&_StrategyManager.TransactOpts, strategy)
}
// 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 depositShares)
func (_StrategyManager *StrategyManagerTransactor) DepositIntoStrategy(opts *bind.TransactOpts, strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) {
return _StrategyManager.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 depositShares)
func (_StrategyManager *StrategyManagerSession) DepositIntoStrategy(strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) {
return _StrategyManager.Contract.DepositIntoStrategy(&_StrategyManager.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 depositShares)
func (_StrategyManager *StrategyManagerTransactorSession) DepositIntoStrategy(strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) {
return _StrategyManager.Contract.DepositIntoStrategy(&_StrategyManager.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 depositShares)
func (_StrategyManager *StrategyManagerTransactor) 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 _StrategyManager.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 depositShares)
func (_StrategyManager *StrategyManagerSession) DepositIntoStrategyWithSignature(strategy common.Address, token common.Address, amount *big.Int, staker common.Address, expiry *big.Int, signature []byte) (*types.Transaction, error) {
return _StrategyManager.Contract.DepositIntoStrategyWithSignature(&_StrategyManager.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 depositShares)
func (_StrategyManager *StrategyManagerTransactorSession) DepositIntoStrategyWithSignature(strategy common.Address, token common.Address, amount *big.Int, staker common.Address, expiry *big.Int, signature []byte) (*types.Transaction, error) {
return _StrategyManager.Contract.DepositIntoStrategyWithSignature(&_StrategyManager.TransactOpts, strategy, token, amount, staker, expiry, signature)
}
-// Initialize is a paid mutator transaction binding the contract method 0xcf756fdf.
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
//
-// Solidity: function initialize(address initialOwner, address initialStrategyWhitelister, address _pauserRegistry, uint256 initialPausedStatus) returns()
-func (_StrategyManager *StrategyManagerTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialStrategyWhitelister common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
- return _StrategyManager.contract.Transact(opts, "initialize", initialOwner, initialStrategyWhitelister, _pauserRegistry, initialPausedStatus)
+// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns()
+func (_StrategyManager *StrategyManagerTransactor) IncreaseBurnableShares(opts *bind.TransactOpts, strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _StrategyManager.contract.Transact(opts, "increaseBurnableShares", strategy, addedSharesToBurn)
}
-// Initialize is a paid mutator transaction binding the contract method 0xcf756fdf.
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
//
-// Solidity: function initialize(address initialOwner, address initialStrategyWhitelister, address _pauserRegistry, uint256 initialPausedStatus) returns()
-func (_StrategyManager *StrategyManagerSession) Initialize(initialOwner common.Address, initialStrategyWhitelister common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
- return _StrategyManager.Contract.Initialize(&_StrategyManager.TransactOpts, initialOwner, initialStrategyWhitelister, _pauserRegistry, initialPausedStatus)
+// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns()
+func (_StrategyManager *StrategyManagerSession) IncreaseBurnableShares(strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _StrategyManager.Contract.IncreaseBurnableShares(&_StrategyManager.TransactOpts, strategy, addedSharesToBurn)
}
-// Initialize is a paid mutator transaction binding the contract method 0xcf756fdf.
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
//
-// Solidity: function initialize(address initialOwner, address initialStrategyWhitelister, address _pauserRegistry, uint256 initialPausedStatus) returns()
-func (_StrategyManager *StrategyManagerTransactorSession) Initialize(initialOwner common.Address, initialStrategyWhitelister common.Address, _pauserRegistry common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
- return _StrategyManager.Contract.Initialize(&_StrategyManager.TransactOpts, initialOwner, initialStrategyWhitelister, _pauserRegistry, initialPausedStatus)
+// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns()
+func (_StrategyManager *StrategyManagerTransactorSession) IncreaseBurnableShares(strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _StrategyManager.Contract.IncreaseBurnableShares(&_StrategyManager.TransactOpts, strategy, addedSharesToBurn)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c.
+//
+// Solidity: function initialize(address initialOwner, address initialStrategyWhitelister, uint256 initialPausedStatus) returns()
+func (_StrategyManager *StrategyManagerTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialStrategyWhitelister common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _StrategyManager.contract.Transact(opts, "initialize", initialOwner, initialStrategyWhitelister, initialPausedStatus)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c.
+//
+// Solidity: function initialize(address initialOwner, address initialStrategyWhitelister, uint256 initialPausedStatus) returns()
+func (_StrategyManager *StrategyManagerSession) Initialize(initialOwner common.Address, initialStrategyWhitelister common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _StrategyManager.Contract.Initialize(&_StrategyManager.TransactOpts, initialOwner, initialStrategyWhitelister, initialPausedStatus)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c.
+//
+// Solidity: function initialize(address initialOwner, address initialStrategyWhitelister, uint256 initialPausedStatus) returns()
+func (_StrategyManager *StrategyManagerTransactorSession) Initialize(initialOwner common.Address, initialStrategyWhitelister common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _StrategyManager.Contract.Initialize(&_StrategyManager.TransactOpts, initialOwner, initialStrategyWhitelister, initialPausedStatus)
}
// Pause is a paid mutator transaction binding the contract method 0x136439dd.
@@ -908,25 +982,25 @@ func (_StrategyManager *StrategyManagerTransactorSession) PauseAll() (*types.Tra
return _StrategyManager.Contract.PauseAll(&_StrategyManager.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 (_StrategyManager *StrategyManagerTransactor) RemoveShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _StrategyManager.contract.Transact(opts, "removeShares", staker, strategy, shares)
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_StrategyManager *StrategyManagerTransactor) RemoveDepositShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _StrategyManager.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 (_StrategyManager *StrategyManagerSession) RemoveShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _StrategyManager.Contract.RemoveShares(&_StrategyManager.TransactOpts, staker, strategy, shares)
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_StrategyManager *StrategyManagerSession) RemoveDepositShares(staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _StrategyManager.Contract.RemoveDepositShares(&_StrategyManager.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 (_StrategyManager *StrategyManagerTransactorSession) RemoveShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _StrategyManager.Contract.RemoveShares(&_StrategyManager.TransactOpts, staker, strategy, shares)
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_StrategyManager *StrategyManagerTransactorSession) RemoveDepositShares(staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _StrategyManager.Contract.RemoveDepositShares(&_StrategyManager.TransactOpts, staker, strategy, depositSharesToRemove)
}
// RemoveStrategiesFromDepositWhitelist is a paid mutator transaction binding the contract method 0xb5d8b5b8.
@@ -971,27 +1045,6 @@ func (_StrategyManager *StrategyManagerTransactorSession) RenounceOwnership() (*
return _StrategyManager.Contract.RenounceOwnership(&_StrategyManager.TransactOpts)
}
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_StrategyManager *StrategyManagerTransactor) SetPauserRegistry(opts *bind.TransactOpts, newPauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyManager.contract.Transact(opts, "setPauserRegistry", newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_StrategyManager *StrategyManagerSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyManager.Contract.SetPauserRegistry(&_StrategyManager.TransactOpts, newPauserRegistry)
-}
-
-// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f.
-//
-// Solidity: function setPauserRegistry(address newPauserRegistry) returns()
-func (_StrategyManager *StrategyManagerTransactorSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) {
- return _StrategyManager.Contract.SetPauserRegistry(&_StrategyManager.TransactOpts, newPauserRegistry)
-}
-
// SetStrategyWhitelister is a paid mutator transaction binding the contract method 0xc6656702.
//
// Solidity: function setStrategyWhitelister(address newStrategyWhitelister) returns()
@@ -1013,27 +1066,6 @@ func (_StrategyManager *StrategyManagerTransactorSession) SetStrategyWhitelister
return _StrategyManager.Contract.SetStrategyWhitelister(&_StrategyManager.TransactOpts, newStrategyWhitelister)
}
-// SetThirdPartyTransfersForbidden is a paid mutator transaction binding the contract method 0x4e5a4263.
-//
-// Solidity: function setThirdPartyTransfersForbidden(address strategy, bool value) returns()
-func (_StrategyManager *StrategyManagerTransactor) SetThirdPartyTransfersForbidden(opts *bind.TransactOpts, strategy common.Address, value bool) (*types.Transaction, error) {
- return _StrategyManager.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 (_StrategyManager *StrategyManagerSession) SetThirdPartyTransfersForbidden(strategy common.Address, value bool) (*types.Transaction, error) {
- return _StrategyManager.Contract.SetThirdPartyTransfersForbidden(&_StrategyManager.TransactOpts, strategy, value)
-}
-
-// SetThirdPartyTransfersForbidden is a paid mutator transaction binding the contract method 0x4e5a4263.
-//
-// Solidity: function setThirdPartyTransfersForbidden(address strategy, bool value) returns()
-func (_StrategyManager *StrategyManagerTransactorSession) SetThirdPartyTransfersForbidden(strategy common.Address, value bool) (*types.Transaction, error) {
- return _StrategyManager.Contract.SetThirdPartyTransfersForbidden(&_StrategyManager.TransactOpts, strategy, value)
-}
-
// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
//
// Solidity: function transferOwnership(address newOwner) returns()
@@ -1069,32 +1101,302 @@ func (_StrategyManager *StrategyManagerSession) Unpause(newPausedStatus *big.Int
return _StrategyManager.Contract.Unpause(&_StrategyManager.TransactOpts, newPausedStatus)
}
-// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc.
+// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc.
+//
+// Solidity: function unpause(uint256 newPausedStatus) returns()
+func (_StrategyManager *StrategyManagerTransactorSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) {
+ return _StrategyManager.Contract.Unpause(&_StrategyManager.TransactOpts, newPausedStatus)
+}
+
+// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x2eae418c.
+//
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns()
+func (_StrategyManager *StrategyManagerTransactor) WithdrawSharesAsTokens(opts *bind.TransactOpts, staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _StrategyManager.contract.Transact(opts, "withdrawSharesAsTokens", staker, strategy, token, shares)
+}
+
+// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x2eae418c.
+//
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns()
+func (_StrategyManager *StrategyManagerSession) WithdrawSharesAsTokens(staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _StrategyManager.Contract.WithdrawSharesAsTokens(&_StrategyManager.TransactOpts, staker, strategy, token, shares)
+}
+
+// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x2eae418c.
+//
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns()
+func (_StrategyManager *StrategyManagerTransactorSession) WithdrawSharesAsTokens(staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _StrategyManager.Contract.WithdrawSharesAsTokens(&_StrategyManager.TransactOpts, staker, strategy, token, shares)
+}
+
+// StrategyManagerBurnableSharesDecreasedIterator is returned from FilterBurnableSharesDecreased and is used to iterate over the raw logs and unpacked data for BurnableSharesDecreased events raised by the StrategyManager contract.
+type StrategyManagerBurnableSharesDecreasedIterator struct {
+ Event *StrategyManagerBurnableSharesDecreased // 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 *StrategyManagerBurnableSharesDecreasedIterator) 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(StrategyManagerBurnableSharesDecreased)
+ 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(StrategyManagerBurnableSharesDecreased)
+ 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 *StrategyManagerBurnableSharesDecreasedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *StrategyManagerBurnableSharesDecreasedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// StrategyManagerBurnableSharesDecreased represents a BurnableSharesDecreased event raised by the StrategyManager contract.
+type StrategyManagerBurnableSharesDecreased struct {
+ Strategy common.Address
+ Shares *big.Int
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterBurnableSharesDecreased is a free log retrieval operation binding the contract event 0xd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839.
+//
+// Solidity: event BurnableSharesDecreased(address strategy, uint256 shares)
+func (_StrategyManager *StrategyManagerFilterer) FilterBurnableSharesDecreased(opts *bind.FilterOpts) (*StrategyManagerBurnableSharesDecreasedIterator, error) {
+
+ logs, sub, err := _StrategyManager.contract.FilterLogs(opts, "BurnableSharesDecreased")
+ if err != nil {
+ return nil, err
+ }
+ return &StrategyManagerBurnableSharesDecreasedIterator{contract: _StrategyManager.contract, event: "BurnableSharesDecreased", logs: logs, sub: sub}, nil
+}
+
+// WatchBurnableSharesDecreased is a free log subscription operation binding the contract event 0xd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839.
+//
+// Solidity: event BurnableSharesDecreased(address strategy, uint256 shares)
+func (_StrategyManager *StrategyManagerFilterer) WatchBurnableSharesDecreased(opts *bind.WatchOpts, sink chan<- *StrategyManagerBurnableSharesDecreased) (event.Subscription, error) {
+
+ logs, sub, err := _StrategyManager.contract.WatchLogs(opts, "BurnableSharesDecreased")
+ 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(StrategyManagerBurnableSharesDecreased)
+ if err := _StrategyManager.contract.UnpackLog(event, "BurnableSharesDecreased", 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
+}
+
+// ParseBurnableSharesDecreased is a log parse operation binding the contract event 0xd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839.
+//
+// Solidity: event BurnableSharesDecreased(address strategy, uint256 shares)
+func (_StrategyManager *StrategyManagerFilterer) ParseBurnableSharesDecreased(log types.Log) (*StrategyManagerBurnableSharesDecreased, error) {
+ event := new(StrategyManagerBurnableSharesDecreased)
+ if err := _StrategyManager.contract.UnpackLog(event, "BurnableSharesDecreased", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
+}
+
+// StrategyManagerBurnableSharesIncreasedIterator is returned from FilterBurnableSharesIncreased and is used to iterate over the raw logs and unpacked data for BurnableSharesIncreased events raised by the StrategyManager contract.
+type StrategyManagerBurnableSharesIncreasedIterator struct {
+ Event *StrategyManagerBurnableSharesIncreased // 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 *StrategyManagerBurnableSharesIncreasedIterator) 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(StrategyManagerBurnableSharesIncreased)
+ 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(StrategyManagerBurnableSharesIncreased)
+ 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 *StrategyManagerBurnableSharesIncreasedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *StrategyManagerBurnableSharesIncreasedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// StrategyManagerBurnableSharesIncreased represents a BurnableSharesIncreased event raised by the StrategyManager contract.
+type StrategyManagerBurnableSharesIncreased struct {
+ Strategy common.Address
+ Shares *big.Int
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterBurnableSharesIncreased is a free log retrieval operation binding the contract event 0xca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff.
//
-// Solidity: function unpause(uint256 newPausedStatus) returns()
-func (_StrategyManager *StrategyManagerTransactorSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) {
- return _StrategyManager.Contract.Unpause(&_StrategyManager.TransactOpts, newPausedStatus)
-}
+// Solidity: event BurnableSharesIncreased(address strategy, uint256 shares)
+func (_StrategyManager *StrategyManagerFilterer) FilterBurnableSharesIncreased(opts *bind.FilterOpts) (*StrategyManagerBurnableSharesIncreasedIterator, error) {
-// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0xc608c7f3.
-//
-// Solidity: function withdrawSharesAsTokens(address recipient, address strategy, uint256 shares, address token) returns()
-func (_StrategyManager *StrategyManagerTransactor) WithdrawSharesAsTokens(opts *bind.TransactOpts, recipient common.Address, strategy common.Address, shares *big.Int, token common.Address) (*types.Transaction, error) {
- return _StrategyManager.contract.Transact(opts, "withdrawSharesAsTokens", recipient, strategy, shares, token)
+ logs, sub, err := _StrategyManager.contract.FilterLogs(opts, "BurnableSharesIncreased")
+ if err != nil {
+ return nil, err
+ }
+ return &StrategyManagerBurnableSharesIncreasedIterator{contract: _StrategyManager.contract, event: "BurnableSharesIncreased", logs: logs, sub: sub}, nil
}
-// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0xc608c7f3.
+// WatchBurnableSharesIncreased is a free log subscription operation binding the contract event 0xca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff.
//
-// Solidity: function withdrawSharesAsTokens(address recipient, address strategy, uint256 shares, address token) returns()
-func (_StrategyManager *StrategyManagerSession) WithdrawSharesAsTokens(recipient common.Address, strategy common.Address, shares *big.Int, token common.Address) (*types.Transaction, error) {
- return _StrategyManager.Contract.WithdrawSharesAsTokens(&_StrategyManager.TransactOpts, recipient, strategy, shares, token)
+// Solidity: event BurnableSharesIncreased(address strategy, uint256 shares)
+func (_StrategyManager *StrategyManagerFilterer) WatchBurnableSharesIncreased(opts *bind.WatchOpts, sink chan<- *StrategyManagerBurnableSharesIncreased) (event.Subscription, error) {
+
+ logs, sub, err := _StrategyManager.contract.WatchLogs(opts, "BurnableSharesIncreased")
+ 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(StrategyManagerBurnableSharesIncreased)
+ if err := _StrategyManager.contract.UnpackLog(event, "BurnableSharesIncreased", 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
}
-// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0xc608c7f3.
+// ParseBurnableSharesIncreased is a log parse operation binding the contract event 0xca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff.
//
-// Solidity: function withdrawSharesAsTokens(address recipient, address strategy, uint256 shares, address token) returns()
-func (_StrategyManager *StrategyManagerTransactorSession) WithdrawSharesAsTokens(recipient common.Address, strategy common.Address, shares *big.Int, token common.Address) (*types.Transaction, error) {
- return _StrategyManager.Contract.WithdrawSharesAsTokens(&_StrategyManager.TransactOpts, recipient, strategy, shares, token)
+// Solidity: event BurnableSharesIncreased(address strategy, uint256 shares)
+func (_StrategyManager *StrategyManagerFilterer) ParseBurnableSharesIncreased(log types.Log) (*StrategyManagerBurnableSharesIncreased, error) {
+ event := new(StrategyManagerBurnableSharesIncreased)
+ if err := _StrategyManager.contract.UnpackLog(event, "BurnableSharesIncreased", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
}
// StrategyManagerDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the StrategyManager contract.
@@ -1167,15 +1469,14 @@ func (it *StrategyManagerDepositIterator) Close() error {
// StrategyManagerDeposit represents a Deposit event raised by the StrategyManager contract.
type StrategyManagerDeposit struct {
Staker common.Address
- Token common.Address
Strategy common.Address
Shares *big.Int
Raw types.Log // Blockchain specific contextual infos
}
-// FilterDeposit is a free log retrieval operation binding the contract event 0x7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a96.
+// FilterDeposit is a free log retrieval operation binding the contract event 0x5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62.
//
-// Solidity: event Deposit(address staker, address token, address strategy, uint256 shares)
+// Solidity: event Deposit(address staker, address strategy, uint256 shares)
func (_StrategyManager *StrategyManagerFilterer) FilterDeposit(opts *bind.FilterOpts) (*StrategyManagerDepositIterator, error) {
logs, sub, err := _StrategyManager.contract.FilterLogs(opts, "Deposit")
@@ -1185,9 +1486,9 @@ func (_StrategyManager *StrategyManagerFilterer) FilterDeposit(opts *bind.Filter
return &StrategyManagerDepositIterator{contract: _StrategyManager.contract, event: "Deposit", logs: logs, sub: sub}, nil
}
-// WatchDeposit is a free log subscription operation binding the contract event 0x7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a96.
+// WatchDeposit is a free log subscription operation binding the contract event 0x5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62.
//
-// Solidity: event Deposit(address staker, address token, address strategy, uint256 shares)
+// Solidity: event Deposit(address staker, address strategy, uint256 shares)
func (_StrategyManager *StrategyManagerFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *StrategyManagerDeposit) (event.Subscription, error) {
logs, sub, err := _StrategyManager.contract.WatchLogs(opts, "Deposit")
@@ -1222,9 +1523,9 @@ func (_StrategyManager *StrategyManagerFilterer) WatchDeposit(opts *bind.WatchOp
}), nil
}
-// ParseDeposit is a log parse operation binding the contract event 0x7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a96.
+// ParseDeposit is a log parse operation binding the contract event 0x5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62.
//
-// Solidity: event Deposit(address staker, address token, address strategy, uint256 shares)
+// Solidity: event Deposit(address staker, address strategy, uint256 shares)
func (_StrategyManager *StrategyManagerFilterer) ParseDeposit(log types.Log) (*StrategyManagerDeposit, error) {
event := new(StrategyManagerDeposit)
if err := _StrategyManager.contract.UnpackLog(event, "Deposit", log); err != nil {
@@ -1666,141 +1967,6 @@ func (_StrategyManager *StrategyManagerFilterer) ParsePaused(log types.Log) (*St
return event, nil
}
-// StrategyManagerPauserRegistrySetIterator is returned from FilterPauserRegistrySet and is used to iterate over the raw logs and unpacked data for PauserRegistrySet events raised by the StrategyManager contract.
-type StrategyManagerPauserRegistrySetIterator struct {
- Event *StrategyManagerPauserRegistrySet // 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 *StrategyManagerPauserRegistrySetIterator) 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(StrategyManagerPauserRegistrySet)
- 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(StrategyManagerPauserRegistrySet)
- 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 *StrategyManagerPauserRegistrySetIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *StrategyManagerPauserRegistrySetIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// StrategyManagerPauserRegistrySet represents a PauserRegistrySet event raised by the StrategyManager contract.
-type StrategyManagerPauserRegistrySet struct {
- PauserRegistry common.Address
- NewPauserRegistry common.Address
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterPauserRegistrySet is a free log retrieval operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_StrategyManager *StrategyManagerFilterer) FilterPauserRegistrySet(opts *bind.FilterOpts) (*StrategyManagerPauserRegistrySetIterator, error) {
-
- logs, sub, err := _StrategyManager.contract.FilterLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return &StrategyManagerPauserRegistrySetIterator{contract: _StrategyManager.contract, event: "PauserRegistrySet", logs: logs, sub: sub}, nil
-}
-
-// WatchPauserRegistrySet is a free log subscription operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_StrategyManager *StrategyManagerFilterer) WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *StrategyManagerPauserRegistrySet) (event.Subscription, error) {
-
- logs, sub, err := _StrategyManager.contract.WatchLogs(opts, "PauserRegistrySet")
- if err != nil {
- return nil, err
- }
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(StrategyManagerPauserRegistrySet)
- if err := _StrategyManager.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return err
- }
- event.Raw = log
-
- select {
- case sink <- event:
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- }
- }), nil
-}
-
-// ParsePauserRegistrySet is a log parse operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6.
-//
-// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
-func (_StrategyManager *StrategyManagerFilterer) ParsePauserRegistrySet(log types.Log) (*StrategyManagerPauserRegistrySet, error) {
- event := new(StrategyManagerPauserRegistrySet)
- if err := _StrategyManager.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
// StrategyManagerStrategyAddedToDepositWhitelistIterator is returned from FilterStrategyAddedToDepositWhitelist and is used to iterate over the raw logs and unpacked data for StrategyAddedToDepositWhitelist events raised by the StrategyManager contract.
type StrategyManagerStrategyAddedToDepositWhitelistIterator struct {
Event *StrategyManagerStrategyAddedToDepositWhitelist // Event containing the contract specifics and raw log
@@ -2348,138 +2514,3 @@ func (_StrategyManager *StrategyManagerFilterer) ParseUnpaused(log types.Log) (*
event.Raw = log
return event, nil
}
-
-// StrategyManagerUpdatedThirdPartyTransfersForbiddenIterator is returned from FilterUpdatedThirdPartyTransfersForbidden and is used to iterate over the raw logs and unpacked data for UpdatedThirdPartyTransfersForbidden events raised by the StrategyManager contract.
-type StrategyManagerUpdatedThirdPartyTransfersForbiddenIterator struct {
- Event *StrategyManagerUpdatedThirdPartyTransfersForbidden // 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 *StrategyManagerUpdatedThirdPartyTransfersForbiddenIterator) 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(StrategyManagerUpdatedThirdPartyTransfersForbidden)
- 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(StrategyManagerUpdatedThirdPartyTransfersForbidden)
- 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 *StrategyManagerUpdatedThirdPartyTransfersForbiddenIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *StrategyManagerUpdatedThirdPartyTransfersForbiddenIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// StrategyManagerUpdatedThirdPartyTransfersForbidden represents a UpdatedThirdPartyTransfersForbidden event raised by the StrategyManager contract.
-type StrategyManagerUpdatedThirdPartyTransfersForbidden 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 (_StrategyManager *StrategyManagerFilterer) FilterUpdatedThirdPartyTransfersForbidden(opts *bind.FilterOpts) (*StrategyManagerUpdatedThirdPartyTransfersForbiddenIterator, error) {
-
- logs, sub, err := _StrategyManager.contract.FilterLogs(opts, "UpdatedThirdPartyTransfersForbidden")
- if err != nil {
- return nil, err
- }
- return &StrategyManagerUpdatedThirdPartyTransfersForbiddenIterator{contract: _StrategyManager.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 (_StrategyManager *StrategyManagerFilterer) WatchUpdatedThirdPartyTransfersForbidden(opts *bind.WatchOpts, sink chan<- *StrategyManagerUpdatedThirdPartyTransfersForbidden) (event.Subscription, error) {
-
- logs, sub, err := _StrategyManager.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(StrategyManagerUpdatedThirdPartyTransfersForbidden)
- if err := _StrategyManager.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 (_StrategyManager *StrategyManagerFilterer) ParseUpdatedThirdPartyTransfersForbidden(log types.Log) (*StrategyManagerUpdatedThirdPartyTransfersForbidden, error) {
- event := new(StrategyManagerUpdatedThirdPartyTransfersForbidden)
- if err := _StrategyManager.contract.UnpackLog(event, "UpdatedThirdPartyTransfersForbidden", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
diff --git a/pkg/bindings/StrategyManagerStorage/binding.go b/pkg/bindings/StrategyManagerStorage/binding.go
index 7e3b2edf6f..3a3c588a46 100644
--- a/pkg/bindings/StrategyManagerStorage/binding.go
+++ b/pkg/bindings/StrategyManagerStorage/binding.go
@@ -31,7 +31,7 @@ var (
// StrategyManagerStorageMetaData contains all meta data concerning the StrategyManagerStorage contract.
var StrategyManagerStorageMetaData = &bind.MetaData{
- ABI: "[{\"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\":\"nonces\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"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\":\"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\":\"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\":\"UpdatedThirdPartyTransfersForbidden\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"value\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false}]",
+ ABI: "[{\"type\":\"function\",\"name\":\"DEFAULT_BURN_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEPOSIT_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addStrategiesToDepositWhitelist\",\"inputs\":[{\"name\":\"strategiesToWhitelist\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"burnShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"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\":\"depositShares\",\"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\":\"depositShares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBurnableShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"getStrategiesWithBurnableShares\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseBurnableShares\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"addedSharesToBurn\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"signer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"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\":\"setStrategyWhitelister\",\"inputs\":[{\"name\":\"newStrategyWhitelister\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakerDepositShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"shares\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyList\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"strategies\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"stakerStrategyListLength\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyIsWhitelistedForDeposit\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"whitelisted\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"strategyWhitelister\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"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\":\"BurnableSharesDecreased\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BurnableSharesIncreased\",\"inputs\":[{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"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\":\"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\":\"error\",\"name\":\"MaxStrategiesExceeded\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyDelegationManager\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyStrategyWhitelister\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesAmountTooHigh\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SharesAmountZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StakerAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotFound\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StrategyNotWhitelisted\",\"inputs\":[]}]",
}
// StrategyManagerStorageABI is the input ABI used to generate the binding from.
@@ -180,6 +180,37 @@ func (_StrategyManagerStorage *StrategyManagerStorageTransactorRaw) Transact(opt
return _StrategyManagerStorage.Contract.contract.Transact(opts, method, params...)
}
+// DEFAULTBURNADDRESS is a free data retrieval call binding the contract method 0xf3b4a000.
+//
+// Solidity: function DEFAULT_BURN_ADDRESS() view returns(address)
+func (_StrategyManagerStorage *StrategyManagerStorageCaller) DEFAULTBURNADDRESS(opts *bind.CallOpts) (common.Address, error) {
+ var out []interface{}
+ err := _StrategyManagerStorage.contract.Call(opts, &out, "DEFAULT_BURN_ADDRESS")
+
+ if err != nil {
+ return *new(common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
+
+ return out0, err
+
+}
+
+// DEFAULTBURNADDRESS is a free data retrieval call binding the contract method 0xf3b4a000.
+//
+// Solidity: function DEFAULT_BURN_ADDRESS() view returns(address)
+func (_StrategyManagerStorage *StrategyManagerStorageSession) DEFAULTBURNADDRESS() (common.Address, error) {
+ return _StrategyManagerStorage.Contract.DEFAULTBURNADDRESS(&_StrategyManagerStorage.CallOpts)
+}
+
+// DEFAULTBURNADDRESS is a free data retrieval call binding the contract method 0xf3b4a000.
+//
+// Solidity: function DEFAULT_BURN_ADDRESS() view returns(address)
+func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) DEFAULTBURNADDRESS() (common.Address, error) {
+ return _StrategyManagerStorage.Contract.DEFAULTBURNADDRESS(&_StrategyManagerStorage.CallOpts)
+}
+
// DEPOSITTYPEHASH is a free data retrieval call binding the contract method 0x48825e94.
//
// Solidity: function DEPOSIT_TYPEHASH() view returns(bytes32)
@@ -211,12 +242,12 @@ func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) DEPOSITTYPEH
return _StrategyManagerStorage.Contract.DEPOSITTYPEHASH(&_StrategyManagerStorage.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 (_StrategyManagerStorage *StrategyManagerStorageCaller) 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 (_StrategyManagerStorage *StrategyManagerStorageCaller) 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 := _StrategyManagerStorage.contract.Call(opts, &out, "DOMAIN_TYPEHASH")
+ err := _StrategyManagerStorage.contract.Call(opts, &out, "calculateStrategyDepositDigestHash", staker, strategy, token, amount, nonce, expiry)
if err != nil {
return *new([32]byte), err
@@ -228,18 +259,18 @@ func (_StrategyManagerStorage *StrategyManagerStorageCaller) DOMAINTYPEHASH(opts
}
-// 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 (_StrategyManagerStorage *StrategyManagerStorageSession) DOMAINTYPEHASH() ([32]byte, error) {
- return _StrategyManagerStorage.Contract.DOMAINTYPEHASH(&_StrategyManagerStorage.CallOpts)
+// Solidity: function calculateStrategyDepositDigestHash(address staker, address strategy, address token, uint256 amount, uint256 nonce, uint256 expiry) view returns(bytes32)
+func (_StrategyManagerStorage *StrategyManagerStorageSession) CalculateStrategyDepositDigestHash(staker common.Address, strategy common.Address, token common.Address, amount *big.Int, nonce *big.Int, expiry *big.Int) ([32]byte, error) {
+ return _StrategyManagerStorage.Contract.CalculateStrategyDepositDigestHash(&_StrategyManagerStorage.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 (_StrategyManagerStorage *StrategyManagerStorageCallerSession) DOMAINTYPEHASH() ([32]byte, error) {
- return _StrategyManagerStorage.Contract.DOMAINTYPEHASH(&_StrategyManagerStorage.CallOpts)
+// Solidity: function calculateStrategyDepositDigestHash(address staker, address strategy, address token, uint256 amount, uint256 nonce, uint256 expiry) view returns(bytes32)
+func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) CalculateStrategyDepositDigestHash(staker common.Address, strategy common.Address, token common.Address, amount *big.Int, nonce *big.Int, expiry *big.Int) ([32]byte, error) {
+ return _StrategyManagerStorage.Contract.CalculateStrategyDepositDigestHash(&_StrategyManagerStorage.CallOpts, staker, strategy, token, amount, nonce, expiry)
}
// Delegation is a free data retrieval call binding the contract method 0xdf5cf723.
@@ -273,74 +304,106 @@ func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) Delegation()
return _StrategyManagerStorage.Contract.Delegation(&_StrategyManagerStorage.CallOpts)
}
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
+// GetBurnableShares is a free data retrieval call binding the contract method 0xfd980423.
//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_StrategyManagerStorage *StrategyManagerStorageCaller) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) {
+// Solidity: function getBurnableShares(address strategy) view returns(uint256)
+func (_StrategyManagerStorage *StrategyManagerStorageCaller) GetBurnableShares(opts *bind.CallOpts, strategy common.Address) (*big.Int, error) {
var out []interface{}
- err := _StrategyManagerStorage.contract.Call(opts, &out, "domainSeparator")
+ err := _StrategyManagerStorage.contract.Call(opts, &out, "getBurnableShares", strategy)
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
}
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
+// GetBurnableShares is a free data retrieval call binding the contract method 0xfd980423.
//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_StrategyManagerStorage *StrategyManagerStorageSession) DomainSeparator() ([32]byte, error) {
- return _StrategyManagerStorage.Contract.DomainSeparator(&_StrategyManagerStorage.CallOpts)
+// Solidity: function getBurnableShares(address strategy) view returns(uint256)
+func (_StrategyManagerStorage *StrategyManagerStorageSession) GetBurnableShares(strategy common.Address) (*big.Int, error) {
+ return _StrategyManagerStorage.Contract.GetBurnableShares(&_StrategyManagerStorage.CallOpts, strategy)
}
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
+// GetBurnableShares is a free data retrieval call binding the contract method 0xfd980423.
//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) DomainSeparator() ([32]byte, error) {
- return _StrategyManagerStorage.Contract.DomainSeparator(&_StrategyManagerStorage.CallOpts)
+// Solidity: function getBurnableShares(address strategy) view returns(uint256)
+func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) GetBurnableShares(strategy common.Address) (*big.Int, error) {
+ return _StrategyManagerStorage.Contract.GetBurnableShares(&_StrategyManagerStorage.CallOpts, strategy)
}
-// 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 (_StrategyManagerStorage *StrategyManagerStorageCaller) EigenPodManager(opts *bind.CallOpts) (common.Address, error) {
+// Solidity: function getDeposits(address staker) view returns(address[], uint256[])
+func (_StrategyManagerStorage *StrategyManagerStorageCaller) GetDeposits(opts *bind.CallOpts, staker common.Address) ([]common.Address, []*big.Int, error) {
var out []interface{}
- err := _StrategyManagerStorage.contract.Call(opts, &out, "eigenPodManager")
+ err := _StrategyManagerStorage.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, out1, err
+
+}
+
+// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd.
+//
+// Solidity: function getDeposits(address staker) view returns(address[], uint256[])
+func (_StrategyManagerStorage *StrategyManagerStorageSession) GetDeposits(staker common.Address) ([]common.Address, []*big.Int, error) {
+ return _StrategyManagerStorage.Contract.GetDeposits(&_StrategyManagerStorage.CallOpts, staker)
+}
+
+// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd.
+//
+// Solidity: function getDeposits(address staker) view returns(address[], uint256[])
+func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) GetDeposits(staker common.Address) ([]common.Address, []*big.Int, error) {
+ return _StrategyManagerStorage.Contract.GetDeposits(&_StrategyManagerStorage.CallOpts, staker)
+}
+
+// GetStakerStrategyList is a free data retrieval call binding the contract method 0xde44acb6.
+//
+// Solidity: function getStakerStrategyList(address staker) view returns(address[])
+func (_StrategyManagerStorage *StrategyManagerStorageCaller) GetStakerStrategyList(opts *bind.CallOpts, staker common.Address) ([]common.Address, error) {
+ var out []interface{}
+ err := _StrategyManagerStorage.contract.Call(opts, &out, "getStakerStrategyList", staker)
+
+ if err != nil {
+ return *new([]common.Address), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
return out0, err
}
-// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda.
+// GetStakerStrategyList is a free data retrieval call binding the contract method 0xde44acb6.
//
-// Solidity: function eigenPodManager() view returns(address)
-func (_StrategyManagerStorage *StrategyManagerStorageSession) EigenPodManager() (common.Address, error) {
- return _StrategyManagerStorage.Contract.EigenPodManager(&_StrategyManagerStorage.CallOpts)
+// Solidity: function getStakerStrategyList(address staker) view returns(address[])
+func (_StrategyManagerStorage *StrategyManagerStorageSession) GetStakerStrategyList(staker common.Address) ([]common.Address, error) {
+ return _StrategyManagerStorage.Contract.GetStakerStrategyList(&_StrategyManagerStorage.CallOpts, staker)
}
-// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda.
+// GetStakerStrategyList is a free data retrieval call binding the contract method 0xde44acb6.
//
-// Solidity: function eigenPodManager() view returns(address)
-func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) EigenPodManager() (common.Address, error) {
- return _StrategyManagerStorage.Contract.EigenPodManager(&_StrategyManagerStorage.CallOpts)
+// Solidity: function getStakerStrategyList(address staker) view returns(address[])
+func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) GetStakerStrategyList(staker common.Address) ([]common.Address, error) {
+ return _StrategyManagerStorage.Contract.GetStakerStrategyList(&_StrategyManagerStorage.CallOpts, staker)
}
-// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd.
+// GetStrategiesWithBurnableShares is a free data retrieval call binding the contract method 0x36a8c500.
//
-// Solidity: function getDeposits(address staker) view returns(address[], uint256[])
-func (_StrategyManagerStorage *StrategyManagerStorageCaller) GetDeposits(opts *bind.CallOpts, staker common.Address) ([]common.Address, []*big.Int, error) {
+// Solidity: function getStrategiesWithBurnableShares() view returns(address[], uint256[])
+func (_StrategyManagerStorage *StrategyManagerStorageCaller) GetStrategiesWithBurnableShares(opts *bind.CallOpts) ([]common.Address, []*big.Int, error) {
var out []interface{}
- err := _StrategyManagerStorage.contract.Call(opts, &out, "getDeposits", staker)
+ err := _StrategyManagerStorage.contract.Call(opts, &out, "getStrategiesWithBurnableShares")
if err != nil {
return *new([]common.Address), *new([]*big.Int), err
@@ -353,26 +416,26 @@ func (_StrategyManagerStorage *StrategyManagerStorageCaller) GetDeposits(opts *b
}
-// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd.
+// GetStrategiesWithBurnableShares is a free data retrieval call binding the contract method 0x36a8c500.
//
-// Solidity: function getDeposits(address staker) view returns(address[], uint256[])
-func (_StrategyManagerStorage *StrategyManagerStorageSession) GetDeposits(staker common.Address) ([]common.Address, []*big.Int, error) {
- return _StrategyManagerStorage.Contract.GetDeposits(&_StrategyManagerStorage.CallOpts, staker)
+// Solidity: function getStrategiesWithBurnableShares() view returns(address[], uint256[])
+func (_StrategyManagerStorage *StrategyManagerStorageSession) GetStrategiesWithBurnableShares() ([]common.Address, []*big.Int, error) {
+ return _StrategyManagerStorage.Contract.GetStrategiesWithBurnableShares(&_StrategyManagerStorage.CallOpts)
}
-// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd.
+// GetStrategiesWithBurnableShares is a free data retrieval call binding the contract method 0x36a8c500.
//
-// Solidity: function getDeposits(address staker) view returns(address[], uint256[])
-func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) GetDeposits(staker common.Address) ([]common.Address, []*big.Int, error) {
- return _StrategyManagerStorage.Contract.GetDeposits(&_StrategyManagerStorage.CallOpts, staker)
+// Solidity: function getStrategiesWithBurnableShares() view returns(address[], uint256[])
+func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) GetStrategiesWithBurnableShares() ([]common.Address, []*big.Int, error) {
+ return _StrategyManagerStorage.Contract.GetStrategiesWithBurnableShares(&_StrategyManagerStorage.CallOpts)
}
// Nonces is a free data retrieval call binding the contract method 0x7ecebe00.
//
-// Solidity: function nonces(address ) view returns(uint256)
-func (_StrategyManagerStorage *StrategyManagerStorageCaller) Nonces(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
+// Solidity: function nonces(address signer) view returns(uint256 nonce)
+func (_StrategyManagerStorage *StrategyManagerStorageCaller) Nonces(opts *bind.CallOpts, signer common.Address) (*big.Int, error) {
var out []interface{}
- err := _StrategyManagerStorage.contract.Call(opts, &out, "nonces", arg0)
+ err := _StrategyManagerStorage.contract.Call(opts, &out, "nonces", signer)
if err != nil {
return *new(*big.Int), err
@@ -386,55 +449,55 @@ func (_StrategyManagerStorage *StrategyManagerStorageCaller) Nonces(opts *bind.C
// Nonces is a free data retrieval call binding the contract method 0x7ecebe00.
//
-// Solidity: function nonces(address ) view returns(uint256)
-func (_StrategyManagerStorage *StrategyManagerStorageSession) Nonces(arg0 common.Address) (*big.Int, error) {
- return _StrategyManagerStorage.Contract.Nonces(&_StrategyManagerStorage.CallOpts, arg0)
+// Solidity: function nonces(address signer) view returns(uint256 nonce)
+func (_StrategyManagerStorage *StrategyManagerStorageSession) Nonces(signer common.Address) (*big.Int, error) {
+ return _StrategyManagerStorage.Contract.Nonces(&_StrategyManagerStorage.CallOpts, signer)
}
// Nonces is a free data retrieval call binding the contract method 0x7ecebe00.
//
-// Solidity: function nonces(address ) view returns(uint256)
-func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) Nonces(arg0 common.Address) (*big.Int, error) {
- return _StrategyManagerStorage.Contract.Nonces(&_StrategyManagerStorage.CallOpts, arg0)
+// Solidity: function nonces(address signer) view returns(uint256 nonce)
+func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) Nonces(signer common.Address) (*big.Int, error) {
+ return _StrategyManagerStorage.Contract.Nonces(&_StrategyManagerStorage.CallOpts, signer)
}
-// 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 (_StrategyManagerStorage *StrategyManagerStorageCaller) Slasher(opts *bind.CallOpts) (common.Address, error) {
+// Solidity: function stakerDepositShares(address staker, address strategy) view returns(uint256 shares)
+func (_StrategyManagerStorage *StrategyManagerStorageCaller) StakerDepositShares(opts *bind.CallOpts, staker common.Address, strategy common.Address) (*big.Int, error) {
var out []interface{}
- err := _StrategyManagerStorage.contract.Call(opts, &out, "slasher")
+ err := _StrategyManagerStorage.contract.Call(opts, &out, "stakerDepositShares", staker, 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 (_StrategyManagerStorage *StrategyManagerStorageSession) Slasher() (common.Address, error) {
- return _StrategyManagerStorage.Contract.Slasher(&_StrategyManagerStorage.CallOpts)
+// Solidity: function stakerDepositShares(address staker, address strategy) view returns(uint256 shares)
+func (_StrategyManagerStorage *StrategyManagerStorageSession) StakerDepositShares(staker common.Address, strategy common.Address) (*big.Int, error) {
+ return _StrategyManagerStorage.Contract.StakerDepositShares(&_StrategyManagerStorage.CallOpts, staker, 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 (_StrategyManagerStorage *StrategyManagerStorageCallerSession) Slasher() (common.Address, error) {
- return _StrategyManagerStorage.Contract.Slasher(&_StrategyManagerStorage.CallOpts)
+// Solidity: function stakerDepositShares(address staker, address strategy) view returns(uint256 shares)
+func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) StakerDepositShares(staker common.Address, strategy common.Address) (*big.Int, error) {
+ return _StrategyManagerStorage.Contract.StakerDepositShares(&_StrategyManagerStorage.CallOpts, staker, strategy)
}
// StakerStrategyList is a free data retrieval call binding the contract method 0xcbc2bd62.
//
-// Solidity: function stakerStrategyList(address , uint256 ) view returns(address)
-func (_StrategyManagerStorage *StrategyManagerStorageCaller) StakerStrategyList(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int) (common.Address, error) {
+// Solidity: function stakerStrategyList(address staker, uint256 ) view returns(address strategies)
+func (_StrategyManagerStorage *StrategyManagerStorageCaller) StakerStrategyList(opts *bind.CallOpts, staker common.Address, arg1 *big.Int) (common.Address, error) {
var out []interface{}
- err := _StrategyManagerStorage.contract.Call(opts, &out, "stakerStrategyList", arg0, arg1)
+ err := _StrategyManagerStorage.contract.Call(opts, &out, "stakerStrategyList", staker, arg1)
if err != nil {
return *new(common.Address), err
@@ -448,16 +511,16 @@ func (_StrategyManagerStorage *StrategyManagerStorageCaller) StakerStrategyList(
// StakerStrategyList is a free data retrieval call binding the contract method 0xcbc2bd62.
//
-// Solidity: function stakerStrategyList(address , uint256 ) view returns(address)
-func (_StrategyManagerStorage *StrategyManagerStorageSession) StakerStrategyList(arg0 common.Address, arg1 *big.Int) (common.Address, error) {
- return _StrategyManagerStorage.Contract.StakerStrategyList(&_StrategyManagerStorage.CallOpts, arg0, arg1)
+// Solidity: function stakerStrategyList(address staker, uint256 ) view returns(address strategies)
+func (_StrategyManagerStorage *StrategyManagerStorageSession) StakerStrategyList(staker common.Address, arg1 *big.Int) (common.Address, error) {
+ return _StrategyManagerStorage.Contract.StakerStrategyList(&_StrategyManagerStorage.CallOpts, staker, arg1)
}
// StakerStrategyList is a free data retrieval call binding the contract method 0xcbc2bd62.
//
-// Solidity: function stakerStrategyList(address , uint256 ) view returns(address)
-func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) StakerStrategyList(arg0 common.Address, arg1 *big.Int) (common.Address, error) {
- return _StrategyManagerStorage.Contract.StakerStrategyList(&_StrategyManagerStorage.CallOpts, arg0, arg1)
+// Solidity: function stakerStrategyList(address staker, uint256 ) view returns(address strategies)
+func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) StakerStrategyList(staker common.Address, arg1 *big.Int) (common.Address, error) {
+ return _StrategyManagerStorage.Contract.StakerStrategyList(&_StrategyManagerStorage.CallOpts, staker, arg1)
}
// StakerStrategyListLength is a free data retrieval call binding the contract method 0x8b8aac3c.
@@ -491,43 +554,12 @@ func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) StakerStrate
return _StrategyManagerStorage.Contract.StakerStrategyListLength(&_StrategyManagerStorage.CallOpts, staker)
}
-// StakerStrategyShares is a free data retrieval call binding the contract method 0x7a7e0d92.
-//
-// Solidity: function stakerStrategyShares(address , address ) view returns(uint256)
-func (_StrategyManagerStorage *StrategyManagerStorageCaller) StakerStrategyShares(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) {
- var out []interface{}
- err := _StrategyManagerStorage.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 (_StrategyManagerStorage *StrategyManagerStorageSession) StakerStrategyShares(arg0 common.Address, arg1 common.Address) (*big.Int, error) {
- return _StrategyManagerStorage.Contract.StakerStrategyShares(&_StrategyManagerStorage.CallOpts, arg0, arg1)
-}
-
-// StakerStrategyShares is a free data retrieval call binding the contract method 0x7a7e0d92.
-//
-// Solidity: function stakerStrategyShares(address , address ) view returns(uint256)
-func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) StakerStrategyShares(arg0 common.Address, arg1 common.Address) (*big.Int, error) {
- return _StrategyManagerStorage.Contract.StakerStrategyShares(&_StrategyManagerStorage.CallOpts, arg0, arg1)
-}
-
// StrategyIsWhitelistedForDeposit is a free data retrieval call binding the contract method 0x663c1de4.
//
-// Solidity: function strategyIsWhitelistedForDeposit(address ) view returns(bool)
-func (_StrategyManagerStorage *StrategyManagerStorageCaller) StrategyIsWhitelistedForDeposit(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
+// Solidity: function strategyIsWhitelistedForDeposit(address strategy) view returns(bool whitelisted)
+func (_StrategyManagerStorage *StrategyManagerStorageCaller) StrategyIsWhitelistedForDeposit(opts *bind.CallOpts, strategy common.Address) (bool, error) {
var out []interface{}
- err := _StrategyManagerStorage.contract.Call(opts, &out, "strategyIsWhitelistedForDeposit", arg0)
+ err := _StrategyManagerStorage.contract.Call(opts, &out, "strategyIsWhitelistedForDeposit", strategy)
if err != nil {
return *new(bool), err
@@ -541,16 +573,16 @@ func (_StrategyManagerStorage *StrategyManagerStorageCaller) StrategyIsWhitelist
// StrategyIsWhitelistedForDeposit is a free data retrieval call binding the contract method 0x663c1de4.
//
-// Solidity: function strategyIsWhitelistedForDeposit(address ) view returns(bool)
-func (_StrategyManagerStorage *StrategyManagerStorageSession) StrategyIsWhitelistedForDeposit(arg0 common.Address) (bool, error) {
- return _StrategyManagerStorage.Contract.StrategyIsWhitelistedForDeposit(&_StrategyManagerStorage.CallOpts, arg0)
+// Solidity: function strategyIsWhitelistedForDeposit(address strategy) view returns(bool whitelisted)
+func (_StrategyManagerStorage *StrategyManagerStorageSession) StrategyIsWhitelistedForDeposit(strategy common.Address) (bool, error) {
+ return _StrategyManagerStorage.Contract.StrategyIsWhitelistedForDeposit(&_StrategyManagerStorage.CallOpts, strategy)
}
// StrategyIsWhitelistedForDeposit is a free data retrieval call binding the contract method 0x663c1de4.
//
-// Solidity: function strategyIsWhitelistedForDeposit(address ) view returns(bool)
-func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) StrategyIsWhitelistedForDeposit(arg0 common.Address) (bool, error) {
- return _StrategyManagerStorage.Contract.StrategyIsWhitelistedForDeposit(&_StrategyManagerStorage.CallOpts, arg0)
+// Solidity: function strategyIsWhitelistedForDeposit(address strategy) view returns(bool whitelisted)
+func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) StrategyIsWhitelistedForDeposit(strategy common.Address) (bool, error) {
+ return _StrategyManagerStorage.Contract.StrategyIsWhitelistedForDeposit(&_StrategyManagerStorage.CallOpts, strategy)
}
// StrategyWhitelister is a free data retrieval call binding the contract method 0x967fc0d2.
@@ -584,140 +616,172 @@ func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) StrategyWhit
return _StrategyManagerStorage.Contract.StrategyWhitelister(&_StrategyManagerStorage.CallOpts)
}
-// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d.
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
//
-// Solidity: function thirdPartyTransfersForbidden(address ) view returns(bool)
-func (_StrategyManagerStorage *StrategyManagerStorageCaller) ThirdPartyTransfersForbidden(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
- var out []interface{}
- err := _StrategyManagerStorage.contract.Call(opts, &out, "thirdPartyTransfersForbidden", arg0)
-
- if err != nil {
- return *new(bool), err
- }
-
- out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
-
- return out0, err
-
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_StrategyManagerStorage *StrategyManagerStorageTransactor) AddShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _StrategyManagerStorage.contract.Transact(opts, "addShares", staker, strategy, shares)
}
-// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d.
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
//
-// Solidity: function thirdPartyTransfersForbidden(address ) view returns(bool)
-func (_StrategyManagerStorage *StrategyManagerStorageSession) ThirdPartyTransfersForbidden(arg0 common.Address) (bool, error) {
- return _StrategyManagerStorage.Contract.ThirdPartyTransfersForbidden(&_StrategyManagerStorage.CallOpts, arg0)
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_StrategyManagerStorage *StrategyManagerStorageSession) AddShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _StrategyManagerStorage.Contract.AddShares(&_StrategyManagerStorage.TransactOpts, staker, strategy, shares)
}
-// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d.
+// AddShares is a paid mutator transaction binding the contract method 0x50ff7225.
//
-// Solidity: function thirdPartyTransfersForbidden(address ) view returns(bool)
-func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) ThirdPartyTransfersForbidden(arg0 common.Address) (bool, error) {
- return _StrategyManagerStorage.Contract.ThirdPartyTransfersForbidden(&_StrategyManagerStorage.CallOpts, arg0)
+// Solidity: function addShares(address staker, address strategy, uint256 shares) returns(uint256, uint256)
+func (_StrategyManagerStorage *StrategyManagerStorageTransactorSession) AddShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _StrategyManagerStorage.Contract.AddShares(&_StrategyManagerStorage.TransactOpts, staker, strategy, shares)
}
-// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1.
+// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0x5de08ff2.
//
-// Solidity: function addShares(address staker, address token, address strategy, uint256 shares) returns()
-func (_StrategyManagerStorage *StrategyManagerStorageTransactor) AddShares(opts *bind.TransactOpts, staker common.Address, token common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _StrategyManagerStorage.contract.Transact(opts, "addShares", staker, token, strategy, shares)
+// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist) returns()
+func (_StrategyManagerStorage *StrategyManagerStorageTransactor) AddStrategiesToDepositWhitelist(opts *bind.TransactOpts, strategiesToWhitelist []common.Address) (*types.Transaction, error) {
+ return _StrategyManagerStorage.contract.Transact(opts, "addStrategiesToDepositWhitelist", strategiesToWhitelist)
}
-// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1.
+// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0x5de08ff2.
//
-// Solidity: function addShares(address staker, address token, address strategy, uint256 shares) returns()
-func (_StrategyManagerStorage *StrategyManagerStorageSession) AddShares(staker common.Address, token common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _StrategyManagerStorage.Contract.AddShares(&_StrategyManagerStorage.TransactOpts, staker, token, strategy, shares)
+// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist) returns()
+func (_StrategyManagerStorage *StrategyManagerStorageSession) AddStrategiesToDepositWhitelist(strategiesToWhitelist []common.Address) (*types.Transaction, error) {
+ return _StrategyManagerStorage.Contract.AddStrategiesToDepositWhitelist(&_StrategyManagerStorage.TransactOpts, strategiesToWhitelist)
}
-// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1.
+// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0x5de08ff2.
//
-// Solidity: function addShares(address staker, address token, address strategy, uint256 shares) returns()
-func (_StrategyManagerStorage *StrategyManagerStorageTransactorSession) AddShares(staker common.Address, token common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _StrategyManagerStorage.Contract.AddShares(&_StrategyManagerStorage.TransactOpts, staker, token, strategy, shares)
+// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist) returns()
+func (_StrategyManagerStorage *StrategyManagerStorageTransactorSession) AddStrategiesToDepositWhitelist(strategiesToWhitelist []common.Address) (*types.Transaction, error) {
+ return _StrategyManagerStorage.Contract.AddStrategiesToDepositWhitelist(&_StrategyManagerStorage.TransactOpts, strategiesToWhitelist)
}
-// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547.
+// BurnShares is a paid mutator transaction binding the contract method 0x4b6d5d6e.
//
-// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns()
-func (_StrategyManagerStorage *StrategyManagerStorageTransactor) AddStrategiesToDepositWhitelist(opts *bind.TransactOpts, strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) {
- return _StrategyManagerStorage.contract.Transact(opts, "addStrategiesToDepositWhitelist", strategiesToWhitelist, thirdPartyTransfersForbiddenValues)
+// Solidity: function burnShares(address strategy) returns()
+func (_StrategyManagerStorage *StrategyManagerStorageTransactor) BurnShares(opts *bind.TransactOpts, strategy common.Address) (*types.Transaction, error) {
+ return _StrategyManagerStorage.contract.Transact(opts, "burnShares", strategy)
}
-// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547.
+// BurnShares is a paid mutator transaction binding the contract method 0x4b6d5d6e.
//
-// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns()
-func (_StrategyManagerStorage *StrategyManagerStorageSession) AddStrategiesToDepositWhitelist(strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) {
- return _StrategyManagerStorage.Contract.AddStrategiesToDepositWhitelist(&_StrategyManagerStorage.TransactOpts, strategiesToWhitelist, thirdPartyTransfersForbiddenValues)
+// Solidity: function burnShares(address strategy) returns()
+func (_StrategyManagerStorage *StrategyManagerStorageSession) BurnShares(strategy common.Address) (*types.Transaction, error) {
+ return _StrategyManagerStorage.Contract.BurnShares(&_StrategyManagerStorage.TransactOpts, strategy)
}
-// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547.
+// BurnShares is a paid mutator transaction binding the contract method 0x4b6d5d6e.
//
-// Solidity: function addStrategiesToDepositWhitelist(address[] strategiesToWhitelist, bool[] thirdPartyTransfersForbiddenValues) returns()
-func (_StrategyManagerStorage *StrategyManagerStorageTransactorSession) AddStrategiesToDepositWhitelist(strategiesToWhitelist []common.Address, thirdPartyTransfersForbiddenValues []bool) (*types.Transaction, error) {
- return _StrategyManagerStorage.Contract.AddStrategiesToDepositWhitelist(&_StrategyManagerStorage.TransactOpts, strategiesToWhitelist, thirdPartyTransfersForbiddenValues)
+// Solidity: function burnShares(address strategy) returns()
+func (_StrategyManagerStorage *StrategyManagerStorageTransactorSession) BurnShares(strategy common.Address) (*types.Transaction, error) {
+ return _StrategyManagerStorage.Contract.BurnShares(&_StrategyManagerStorage.TransactOpts, strategy)
}
// 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 depositShares)
func (_StrategyManagerStorage *StrategyManagerStorageTransactor) DepositIntoStrategy(opts *bind.TransactOpts, strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) {
return _StrategyManagerStorage.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 depositShares)
func (_StrategyManagerStorage *StrategyManagerStorageSession) DepositIntoStrategy(strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) {
return _StrategyManagerStorage.Contract.DepositIntoStrategy(&_StrategyManagerStorage.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 depositShares)
func (_StrategyManagerStorage *StrategyManagerStorageTransactorSession) DepositIntoStrategy(strategy common.Address, token common.Address, amount *big.Int) (*types.Transaction, error) {
return _StrategyManagerStorage.Contract.DepositIntoStrategy(&_StrategyManagerStorage.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 depositShares)
func (_StrategyManagerStorage *StrategyManagerStorageTransactor) 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 _StrategyManagerStorage.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 depositShares)
func (_StrategyManagerStorage *StrategyManagerStorageSession) DepositIntoStrategyWithSignature(strategy common.Address, token common.Address, amount *big.Int, staker common.Address, expiry *big.Int, signature []byte) (*types.Transaction, error) {
return _StrategyManagerStorage.Contract.DepositIntoStrategyWithSignature(&_StrategyManagerStorage.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 depositShares)
func (_StrategyManagerStorage *StrategyManagerStorageTransactorSession) DepositIntoStrategyWithSignature(strategy common.Address, token common.Address, amount *big.Int, staker common.Address, expiry *big.Int, signature []byte) (*types.Transaction, error) {
return _StrategyManagerStorage.Contract.DepositIntoStrategyWithSignature(&_StrategyManagerStorage.TransactOpts, strategy, token, amount, staker, expiry, signature)
}
-// RemoveShares is a paid mutator transaction binding the contract method 0x8c80d4e5.
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
+//
+// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns()
+func (_StrategyManagerStorage *StrategyManagerStorageTransactor) IncreaseBurnableShares(opts *bind.TransactOpts, strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _StrategyManagerStorage.contract.Transact(opts, "increaseBurnableShares", strategy, addedSharesToBurn)
+}
+
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
//
-// Solidity: function removeShares(address staker, address strategy, uint256 shares) returns()
-func (_StrategyManagerStorage *StrategyManagerStorageTransactor) RemoveShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _StrategyManagerStorage.contract.Transact(opts, "removeShares", staker, strategy, shares)
+// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns()
+func (_StrategyManagerStorage *StrategyManagerStorageSession) IncreaseBurnableShares(strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _StrategyManagerStorage.Contract.IncreaseBurnableShares(&_StrategyManagerStorage.TransactOpts, strategy, addedSharesToBurn)
}
-// RemoveShares is a paid mutator transaction binding the contract method 0x8c80d4e5.
+// IncreaseBurnableShares is a paid mutator transaction binding the contract method 0xdebe1eab.
//
-// Solidity: function removeShares(address staker, address strategy, uint256 shares) returns()
-func (_StrategyManagerStorage *StrategyManagerStorageSession) RemoveShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _StrategyManagerStorage.Contract.RemoveShares(&_StrategyManagerStorage.TransactOpts, staker, strategy, shares)
+// Solidity: function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) returns()
+func (_StrategyManagerStorage *StrategyManagerStorageTransactorSession) IncreaseBurnableShares(strategy common.Address, addedSharesToBurn *big.Int) (*types.Transaction, error) {
+ return _StrategyManagerStorage.Contract.IncreaseBurnableShares(&_StrategyManagerStorage.TransactOpts, strategy, addedSharesToBurn)
}
-// RemoveShares is a paid mutator transaction binding the contract method 0x8c80d4e5.
+// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c.
//
-// Solidity: function removeShares(address staker, address strategy, uint256 shares) returns()
-func (_StrategyManagerStorage *StrategyManagerStorageTransactorSession) RemoveShares(staker common.Address, strategy common.Address, shares *big.Int) (*types.Transaction, error) {
- return _StrategyManagerStorage.Contract.RemoveShares(&_StrategyManagerStorage.TransactOpts, staker, strategy, shares)
+// Solidity: function initialize(address initialOwner, address initialStrategyWhitelister, uint256 initialPausedStatus) returns()
+func (_StrategyManagerStorage *StrategyManagerStorageTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, initialStrategyWhitelister common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _StrategyManagerStorage.contract.Transact(opts, "initialize", initialOwner, initialStrategyWhitelister, initialPausedStatus)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c.
+//
+// Solidity: function initialize(address initialOwner, address initialStrategyWhitelister, uint256 initialPausedStatus) returns()
+func (_StrategyManagerStorage *StrategyManagerStorageSession) Initialize(initialOwner common.Address, initialStrategyWhitelister common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _StrategyManagerStorage.Contract.Initialize(&_StrategyManagerStorage.TransactOpts, initialOwner, initialStrategyWhitelister, initialPausedStatus)
+}
+
+// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c.
+//
+// Solidity: function initialize(address initialOwner, address initialStrategyWhitelister, uint256 initialPausedStatus) returns()
+func (_StrategyManagerStorage *StrategyManagerStorageTransactorSession) Initialize(initialOwner common.Address, initialStrategyWhitelister common.Address, initialPausedStatus *big.Int) (*types.Transaction, error) {
+ return _StrategyManagerStorage.Contract.Initialize(&_StrategyManagerStorage.TransactOpts, initialOwner, initialStrategyWhitelister, initialPausedStatus)
+}
+
+// RemoveDepositShares is a paid mutator transaction binding the contract method 0x724af423.
+//
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_StrategyManagerStorage *StrategyManagerStorageTransactor) RemoveDepositShares(opts *bind.TransactOpts, staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _StrategyManagerStorage.contract.Transact(opts, "removeDepositShares", staker, strategy, depositSharesToRemove)
+}
+
+// RemoveDepositShares is a paid mutator transaction binding the contract method 0x724af423.
+//
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_StrategyManagerStorage *StrategyManagerStorageSession) RemoveDepositShares(staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _StrategyManagerStorage.Contract.RemoveDepositShares(&_StrategyManagerStorage.TransactOpts, staker, strategy, depositSharesToRemove)
+}
+
+// RemoveDepositShares is a paid mutator transaction binding the contract method 0x724af423.
+//
+// Solidity: function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns()
+func (_StrategyManagerStorage *StrategyManagerStorageTransactorSession) RemoveDepositShares(staker common.Address, strategy common.Address, depositSharesToRemove *big.Int) (*types.Transaction, error) {
+ return _StrategyManagerStorage.Contract.RemoveDepositShares(&_StrategyManagerStorage.TransactOpts, staker, strategy, depositSharesToRemove)
}
// RemoveStrategiesFromDepositWhitelist is a paid mutator transaction binding the contract method 0xb5d8b5b8.
@@ -762,51 +826,165 @@ func (_StrategyManagerStorage *StrategyManagerStorageTransactorSession) SetStrat
return _StrategyManagerStorage.Contract.SetStrategyWhitelister(&_StrategyManagerStorage.TransactOpts, newStrategyWhitelister)
}
-// SetThirdPartyTransfersForbidden is a paid mutator transaction binding the contract method 0x4e5a4263.
+// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x2eae418c.
//
-// Solidity: function setThirdPartyTransfersForbidden(address strategy, bool value) returns()
-func (_StrategyManagerStorage *StrategyManagerStorageTransactor) SetThirdPartyTransfersForbidden(opts *bind.TransactOpts, strategy common.Address, value bool) (*types.Transaction, error) {
- return _StrategyManagerStorage.contract.Transact(opts, "setThirdPartyTransfersForbidden", strategy, value)
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns()
+func (_StrategyManagerStorage *StrategyManagerStorageTransactor) WithdrawSharesAsTokens(opts *bind.TransactOpts, staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _StrategyManagerStorage.contract.Transact(opts, "withdrawSharesAsTokens", staker, strategy, token, shares)
}
-// SetThirdPartyTransfersForbidden is a paid mutator transaction binding the contract method 0x4e5a4263.
+// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x2eae418c.
//
-// Solidity: function setThirdPartyTransfersForbidden(address strategy, bool value) returns()
-func (_StrategyManagerStorage *StrategyManagerStorageSession) SetThirdPartyTransfersForbidden(strategy common.Address, value bool) (*types.Transaction, error) {
- return _StrategyManagerStorage.Contract.SetThirdPartyTransfersForbidden(&_StrategyManagerStorage.TransactOpts, strategy, value)
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns()
+func (_StrategyManagerStorage *StrategyManagerStorageSession) WithdrawSharesAsTokens(staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _StrategyManagerStorage.Contract.WithdrawSharesAsTokens(&_StrategyManagerStorage.TransactOpts, staker, strategy, token, shares)
}
-// SetThirdPartyTransfersForbidden is a paid mutator transaction binding the contract method 0x4e5a4263.
+// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x2eae418c.
//
-// Solidity: function setThirdPartyTransfersForbidden(address strategy, bool value) returns()
-func (_StrategyManagerStorage *StrategyManagerStorageTransactorSession) SetThirdPartyTransfersForbidden(strategy common.Address, value bool) (*types.Transaction, error) {
- return _StrategyManagerStorage.Contract.SetThirdPartyTransfersForbidden(&_StrategyManagerStorage.TransactOpts, strategy, value)
+// Solidity: function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) returns()
+func (_StrategyManagerStorage *StrategyManagerStorageTransactorSession) WithdrawSharesAsTokens(staker common.Address, strategy common.Address, token common.Address, shares *big.Int) (*types.Transaction, error) {
+ return _StrategyManagerStorage.Contract.WithdrawSharesAsTokens(&_StrategyManagerStorage.TransactOpts, staker, strategy, token, shares)
}
-// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0xc608c7f3.
+// StrategyManagerStorageBurnableSharesDecreasedIterator is returned from FilterBurnableSharesDecreased and is used to iterate over the raw logs and unpacked data for BurnableSharesDecreased events raised by the StrategyManagerStorage contract.
+type StrategyManagerStorageBurnableSharesDecreasedIterator struct {
+ Event *StrategyManagerStorageBurnableSharesDecreased // 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 *StrategyManagerStorageBurnableSharesDecreasedIterator) 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(StrategyManagerStorageBurnableSharesDecreased)
+ 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(StrategyManagerStorageBurnableSharesDecreased)
+ 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 *StrategyManagerStorageBurnableSharesDecreasedIterator) Error() error {
+ return it.fail
+}
+
+// Close terminates the iteration process, releasing any pending underlying
+// resources.
+func (it *StrategyManagerStorageBurnableSharesDecreasedIterator) Close() error {
+ it.sub.Unsubscribe()
+ return nil
+}
+
+// StrategyManagerStorageBurnableSharesDecreased represents a BurnableSharesDecreased event raised by the StrategyManagerStorage contract.
+type StrategyManagerStorageBurnableSharesDecreased struct {
+ Strategy common.Address
+ Shares *big.Int
+ Raw types.Log // Blockchain specific contextual infos
+}
+
+// FilterBurnableSharesDecreased is a free log retrieval operation binding the contract event 0xd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839.
//
-// Solidity: function withdrawSharesAsTokens(address recipient, address strategy, uint256 shares, address token) returns()
-func (_StrategyManagerStorage *StrategyManagerStorageTransactor) WithdrawSharesAsTokens(opts *bind.TransactOpts, recipient common.Address, strategy common.Address, shares *big.Int, token common.Address) (*types.Transaction, error) {
- return _StrategyManagerStorage.contract.Transact(opts, "withdrawSharesAsTokens", recipient, strategy, shares, token)
+// Solidity: event BurnableSharesDecreased(address strategy, uint256 shares)
+func (_StrategyManagerStorage *StrategyManagerStorageFilterer) FilterBurnableSharesDecreased(opts *bind.FilterOpts) (*StrategyManagerStorageBurnableSharesDecreasedIterator, error) {
+
+ logs, sub, err := _StrategyManagerStorage.contract.FilterLogs(opts, "BurnableSharesDecreased")
+ if err != nil {
+ return nil, err
+ }
+ return &StrategyManagerStorageBurnableSharesDecreasedIterator{contract: _StrategyManagerStorage.contract, event: "BurnableSharesDecreased", logs: logs, sub: sub}, nil
}
-// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0xc608c7f3.
+// WatchBurnableSharesDecreased is a free log subscription operation binding the contract event 0xd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839.
//
-// Solidity: function withdrawSharesAsTokens(address recipient, address strategy, uint256 shares, address token) returns()
-func (_StrategyManagerStorage *StrategyManagerStorageSession) WithdrawSharesAsTokens(recipient common.Address, strategy common.Address, shares *big.Int, token common.Address) (*types.Transaction, error) {
- return _StrategyManagerStorage.Contract.WithdrawSharesAsTokens(&_StrategyManagerStorage.TransactOpts, recipient, strategy, shares, token)
+// Solidity: event BurnableSharesDecreased(address strategy, uint256 shares)
+func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchBurnableSharesDecreased(opts *bind.WatchOpts, sink chan<- *StrategyManagerStorageBurnableSharesDecreased) (event.Subscription, error) {
+
+ logs, sub, err := _StrategyManagerStorage.contract.WatchLogs(opts, "BurnableSharesDecreased")
+ 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(StrategyManagerStorageBurnableSharesDecreased)
+ if err := _StrategyManagerStorage.contract.UnpackLog(event, "BurnableSharesDecreased", 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
}
-// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0xc608c7f3.
+// ParseBurnableSharesDecreased is a log parse operation binding the contract event 0xd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839.
//
-// Solidity: function withdrawSharesAsTokens(address recipient, address strategy, uint256 shares, address token) returns()
-func (_StrategyManagerStorage *StrategyManagerStorageTransactorSession) WithdrawSharesAsTokens(recipient common.Address, strategy common.Address, shares *big.Int, token common.Address) (*types.Transaction, error) {
- return _StrategyManagerStorage.Contract.WithdrawSharesAsTokens(&_StrategyManagerStorage.TransactOpts, recipient, strategy, shares, token)
+// Solidity: event BurnableSharesDecreased(address strategy, uint256 shares)
+func (_StrategyManagerStorage *StrategyManagerStorageFilterer) ParseBurnableSharesDecreased(log types.Log) (*StrategyManagerStorageBurnableSharesDecreased, error) {
+ event := new(StrategyManagerStorageBurnableSharesDecreased)
+ if err := _StrategyManagerStorage.contract.UnpackLog(event, "BurnableSharesDecreased", log); err != nil {
+ return nil, err
+ }
+ event.Raw = log
+ return event, nil
}
-// StrategyManagerStorageDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the StrategyManagerStorage contract.
-type StrategyManagerStorageDepositIterator struct {
- Event *StrategyManagerStorageDeposit // Event containing the contract specifics and raw log
+// StrategyManagerStorageBurnableSharesIncreasedIterator is returned from FilterBurnableSharesIncreased and is used to iterate over the raw logs and unpacked data for BurnableSharesIncreased events raised by the StrategyManagerStorage contract.
+type StrategyManagerStorageBurnableSharesIncreasedIterator struct {
+ Event *StrategyManagerStorageBurnableSharesIncreased // 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
@@ -820,7 +998,7 @@ type StrategyManagerStorageDepositIterator 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 *StrategyManagerStorageDepositIterator) Next() bool {
+func (it *StrategyManagerStorageBurnableSharesIncreasedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -829,7 +1007,7 @@ func (it *StrategyManagerStorageDepositIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(StrategyManagerStorageDeposit)
+ it.Event = new(StrategyManagerStorageBurnableSharesIncreased)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -844,7 +1022,7 @@ func (it *StrategyManagerStorageDepositIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(StrategyManagerStorageDeposit)
+ it.Event = new(StrategyManagerStorageBurnableSharesIncreased)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -860,44 +1038,42 @@ func (it *StrategyManagerStorageDepositIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *StrategyManagerStorageDepositIterator) Error() error {
+func (it *StrategyManagerStorageBurnableSharesIncreasedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *StrategyManagerStorageDepositIterator) Close() error {
+func (it *StrategyManagerStorageBurnableSharesIncreasedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// StrategyManagerStorageDeposit represents a Deposit event raised by the StrategyManagerStorage contract.
-type StrategyManagerStorageDeposit struct {
- Staker common.Address
- Token common.Address
+// StrategyManagerStorageBurnableSharesIncreased represents a BurnableSharesIncreased event raised by the StrategyManagerStorage contract.
+type StrategyManagerStorageBurnableSharesIncreased struct {
Strategy common.Address
Shares *big.Int
Raw types.Log // Blockchain specific contextual infos
}
-// FilterDeposit is a free log retrieval operation binding the contract event 0x7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a96.
+// FilterBurnableSharesIncreased is a free log retrieval operation binding the contract event 0xca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff.
//
-// Solidity: event Deposit(address staker, address token, address strategy, uint256 shares)
-func (_StrategyManagerStorage *StrategyManagerStorageFilterer) FilterDeposit(opts *bind.FilterOpts) (*StrategyManagerStorageDepositIterator, error) {
+// Solidity: event BurnableSharesIncreased(address strategy, uint256 shares)
+func (_StrategyManagerStorage *StrategyManagerStorageFilterer) FilterBurnableSharesIncreased(opts *bind.FilterOpts) (*StrategyManagerStorageBurnableSharesIncreasedIterator, error) {
- logs, sub, err := _StrategyManagerStorage.contract.FilterLogs(opts, "Deposit")
+ logs, sub, err := _StrategyManagerStorage.contract.FilterLogs(opts, "BurnableSharesIncreased")
if err != nil {
return nil, err
}
- return &StrategyManagerStorageDepositIterator{contract: _StrategyManagerStorage.contract, event: "Deposit", logs: logs, sub: sub}, nil
+ return &StrategyManagerStorageBurnableSharesIncreasedIterator{contract: _StrategyManagerStorage.contract, event: "BurnableSharesIncreased", logs: logs, sub: sub}, nil
}
-// WatchDeposit is a free log subscription operation binding the contract event 0x7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a96.
+// WatchBurnableSharesIncreased is a free log subscription operation binding the contract event 0xca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff.
//
-// Solidity: event Deposit(address staker, address token, address strategy, uint256 shares)
-func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *StrategyManagerStorageDeposit) (event.Subscription, error) {
+// Solidity: event BurnableSharesIncreased(address strategy, uint256 shares)
+func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchBurnableSharesIncreased(opts *bind.WatchOpts, sink chan<- *StrategyManagerStorageBurnableSharesIncreased) (event.Subscription, error) {
- logs, sub, err := _StrategyManagerStorage.contract.WatchLogs(opts, "Deposit")
+ logs, sub, err := _StrategyManagerStorage.contract.WatchLogs(opts, "BurnableSharesIncreased")
if err != nil {
return nil, err
}
@@ -907,8 +1083,8 @@ func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchDeposit(opts
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(StrategyManagerStorageDeposit)
- if err := _StrategyManagerStorage.contract.UnpackLog(event, "Deposit", log); err != nil {
+ event := new(StrategyManagerStorageBurnableSharesIncreased)
+ if err := _StrategyManagerStorage.contract.UnpackLog(event, "BurnableSharesIncreased", log); err != nil {
return err
}
event.Raw = log
@@ -929,21 +1105,21 @@ func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchDeposit(opts
}), nil
}
-// ParseDeposit is a log parse operation binding the contract event 0x7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a96.
+// ParseBurnableSharesIncreased is a log parse operation binding the contract event 0xca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff.
//
-// Solidity: event Deposit(address staker, address token, address strategy, uint256 shares)
-func (_StrategyManagerStorage *StrategyManagerStorageFilterer) ParseDeposit(log types.Log) (*StrategyManagerStorageDeposit, error) {
- event := new(StrategyManagerStorageDeposit)
- if err := _StrategyManagerStorage.contract.UnpackLog(event, "Deposit", log); err != nil {
+// Solidity: event BurnableSharesIncreased(address strategy, uint256 shares)
+func (_StrategyManagerStorage *StrategyManagerStorageFilterer) ParseBurnableSharesIncreased(log types.Log) (*StrategyManagerStorageBurnableSharesIncreased, error) {
+ event := new(StrategyManagerStorageBurnableSharesIncreased)
+ if err := _StrategyManagerStorage.contract.UnpackLog(event, "BurnableSharesIncreased", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// StrategyManagerStorageStrategyAddedToDepositWhitelistIterator is returned from FilterStrategyAddedToDepositWhitelist and is used to iterate over the raw logs and unpacked data for StrategyAddedToDepositWhitelist events raised by the StrategyManagerStorage contract.
-type StrategyManagerStorageStrategyAddedToDepositWhitelistIterator struct {
- Event *StrategyManagerStorageStrategyAddedToDepositWhitelist // Event containing the contract specifics and raw log
+// StrategyManagerStorageDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the StrategyManagerStorage contract.
+type StrategyManagerStorageDepositIterator struct {
+ Event *StrategyManagerStorageDeposit // 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
@@ -957,7 +1133,7 @@ type StrategyManagerStorageStrategyAddedToDepositWhitelistIterator 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 *StrategyManagerStorageStrategyAddedToDepositWhitelistIterator) Next() bool {
+func (it *StrategyManagerStorageDepositIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -966,7 +1142,7 @@ func (it *StrategyManagerStorageStrategyAddedToDepositWhitelistIterator) Next()
if it.done {
select {
case log := <-it.logs:
- it.Event = new(StrategyManagerStorageStrategyAddedToDepositWhitelist)
+ it.Event = new(StrategyManagerStorageDeposit)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -981,7 +1157,7 @@ func (it *StrategyManagerStorageStrategyAddedToDepositWhitelistIterator) Next()
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(StrategyManagerStorageStrategyAddedToDepositWhitelist)
+ it.Event = new(StrategyManagerStorageDeposit)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -997,41 +1173,43 @@ func (it *StrategyManagerStorageStrategyAddedToDepositWhitelistIterator) Next()
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *StrategyManagerStorageStrategyAddedToDepositWhitelistIterator) Error() error {
+func (it *StrategyManagerStorageDepositIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *StrategyManagerStorageStrategyAddedToDepositWhitelistIterator) Close() error {
+func (it *StrategyManagerStorageDepositIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// StrategyManagerStorageStrategyAddedToDepositWhitelist represents a StrategyAddedToDepositWhitelist event raised by the StrategyManagerStorage contract.
-type StrategyManagerStorageStrategyAddedToDepositWhitelist struct {
+// StrategyManagerStorageDeposit represents a Deposit event raised by the StrategyManagerStorage contract.
+type StrategyManagerStorageDeposit struct {
+ Staker common.Address
Strategy common.Address
+ Shares *big.Int
Raw types.Log // Blockchain specific contextual infos
}
-// FilterStrategyAddedToDepositWhitelist is a free log retrieval operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe.
+// FilterDeposit is a free log retrieval operation binding the contract event 0x5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62.
//
-// Solidity: event StrategyAddedToDepositWhitelist(address strategy)
-func (_StrategyManagerStorage *StrategyManagerStorageFilterer) FilterStrategyAddedToDepositWhitelist(opts *bind.FilterOpts) (*StrategyManagerStorageStrategyAddedToDepositWhitelistIterator, error) {
+// Solidity: event Deposit(address staker, address strategy, uint256 shares)
+func (_StrategyManagerStorage *StrategyManagerStorageFilterer) FilterDeposit(opts *bind.FilterOpts) (*StrategyManagerStorageDepositIterator, error) {
- logs, sub, err := _StrategyManagerStorage.contract.FilterLogs(opts, "StrategyAddedToDepositWhitelist")
+ logs, sub, err := _StrategyManagerStorage.contract.FilterLogs(opts, "Deposit")
if err != nil {
return nil, err
}
- return &StrategyManagerStorageStrategyAddedToDepositWhitelistIterator{contract: _StrategyManagerStorage.contract, event: "StrategyAddedToDepositWhitelist", logs: logs, sub: sub}, nil
+ return &StrategyManagerStorageDepositIterator{contract: _StrategyManagerStorage.contract, event: "Deposit", logs: logs, sub: sub}, nil
}
-// WatchStrategyAddedToDepositWhitelist is a free log subscription operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe.
+// WatchDeposit is a free log subscription operation binding the contract event 0x5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62.
//
-// Solidity: event StrategyAddedToDepositWhitelist(address strategy)
-func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchStrategyAddedToDepositWhitelist(opts *bind.WatchOpts, sink chan<- *StrategyManagerStorageStrategyAddedToDepositWhitelist) (event.Subscription, error) {
+// Solidity: event Deposit(address staker, address strategy, uint256 shares)
+func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *StrategyManagerStorageDeposit) (event.Subscription, error) {
- logs, sub, err := _StrategyManagerStorage.contract.WatchLogs(opts, "StrategyAddedToDepositWhitelist")
+ logs, sub, err := _StrategyManagerStorage.contract.WatchLogs(opts, "Deposit")
if err != nil {
return nil, err
}
@@ -1041,8 +1219,8 @@ func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchStrategyAdde
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(StrategyManagerStorageStrategyAddedToDepositWhitelist)
- if err := _StrategyManagerStorage.contract.UnpackLog(event, "StrategyAddedToDepositWhitelist", log); err != nil {
+ event := new(StrategyManagerStorageDeposit)
+ if err := _StrategyManagerStorage.contract.UnpackLog(event, "Deposit", log); err != nil {
return err
}
event.Raw = log
@@ -1063,21 +1241,21 @@ func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchStrategyAdde
}), nil
}
-// ParseStrategyAddedToDepositWhitelist is a log parse operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe.
+// ParseDeposit is a log parse operation binding the contract event 0x5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62.
//
-// Solidity: event StrategyAddedToDepositWhitelist(address strategy)
-func (_StrategyManagerStorage *StrategyManagerStorageFilterer) ParseStrategyAddedToDepositWhitelist(log types.Log) (*StrategyManagerStorageStrategyAddedToDepositWhitelist, error) {
- event := new(StrategyManagerStorageStrategyAddedToDepositWhitelist)
- if err := _StrategyManagerStorage.contract.UnpackLog(event, "StrategyAddedToDepositWhitelist", log); err != nil {
+// Solidity: event Deposit(address staker, address strategy, uint256 shares)
+func (_StrategyManagerStorage *StrategyManagerStorageFilterer) ParseDeposit(log types.Log) (*StrategyManagerStorageDeposit, error) {
+ event := new(StrategyManagerStorageDeposit)
+ if err := _StrategyManagerStorage.contract.UnpackLog(event, "Deposit", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator is returned from FilterStrategyRemovedFromDepositWhitelist and is used to iterate over the raw logs and unpacked data for StrategyRemovedFromDepositWhitelist events raised by the StrategyManagerStorage contract.
-type StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator struct {
- Event *StrategyManagerStorageStrategyRemovedFromDepositWhitelist // Event containing the contract specifics and raw log
+// StrategyManagerStorageStrategyAddedToDepositWhitelistIterator is returned from FilterStrategyAddedToDepositWhitelist and is used to iterate over the raw logs and unpacked data for StrategyAddedToDepositWhitelist events raised by the StrategyManagerStorage contract.
+type StrategyManagerStorageStrategyAddedToDepositWhitelistIterator struct {
+ Event *StrategyManagerStorageStrategyAddedToDepositWhitelist // 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
@@ -1091,7 +1269,7 @@ type StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator 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 *StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator) Next() bool {
+func (it *StrategyManagerStorageStrategyAddedToDepositWhitelistIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -1100,7 +1278,7 @@ func (it *StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator) Nex
if it.done {
select {
case log := <-it.logs:
- it.Event = new(StrategyManagerStorageStrategyRemovedFromDepositWhitelist)
+ it.Event = new(StrategyManagerStorageStrategyAddedToDepositWhitelist)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1115,7 +1293,7 @@ func (it *StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator) Nex
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(StrategyManagerStorageStrategyRemovedFromDepositWhitelist)
+ it.Event = new(StrategyManagerStorageStrategyAddedToDepositWhitelist)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1131,41 +1309,41 @@ func (it *StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator) Nex
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator) Error() error {
+func (it *StrategyManagerStorageStrategyAddedToDepositWhitelistIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator) Close() error {
+func (it *StrategyManagerStorageStrategyAddedToDepositWhitelistIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// StrategyManagerStorageStrategyRemovedFromDepositWhitelist represents a StrategyRemovedFromDepositWhitelist event raised by the StrategyManagerStorage contract.
-type StrategyManagerStorageStrategyRemovedFromDepositWhitelist struct {
+// StrategyManagerStorageStrategyAddedToDepositWhitelist represents a StrategyAddedToDepositWhitelist event raised by the StrategyManagerStorage contract.
+type StrategyManagerStorageStrategyAddedToDepositWhitelist struct {
Strategy common.Address
Raw types.Log // Blockchain specific contextual infos
}
-// FilterStrategyRemovedFromDepositWhitelist is a free log retrieval operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030.
+// FilterStrategyAddedToDepositWhitelist is a free log retrieval operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe.
//
-// Solidity: event StrategyRemovedFromDepositWhitelist(address strategy)
-func (_StrategyManagerStorage *StrategyManagerStorageFilterer) FilterStrategyRemovedFromDepositWhitelist(opts *bind.FilterOpts) (*StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator, error) {
+// Solidity: event StrategyAddedToDepositWhitelist(address strategy)
+func (_StrategyManagerStorage *StrategyManagerStorageFilterer) FilterStrategyAddedToDepositWhitelist(opts *bind.FilterOpts) (*StrategyManagerStorageStrategyAddedToDepositWhitelistIterator, error) {
- logs, sub, err := _StrategyManagerStorage.contract.FilterLogs(opts, "StrategyRemovedFromDepositWhitelist")
+ logs, sub, err := _StrategyManagerStorage.contract.FilterLogs(opts, "StrategyAddedToDepositWhitelist")
if err != nil {
return nil, err
}
- return &StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator{contract: _StrategyManagerStorage.contract, event: "StrategyRemovedFromDepositWhitelist", logs: logs, sub: sub}, nil
+ return &StrategyManagerStorageStrategyAddedToDepositWhitelistIterator{contract: _StrategyManagerStorage.contract, event: "StrategyAddedToDepositWhitelist", logs: logs, sub: sub}, nil
}
-// WatchStrategyRemovedFromDepositWhitelist is a free log subscription operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030.
+// WatchStrategyAddedToDepositWhitelist is a free log subscription operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe.
//
-// Solidity: event StrategyRemovedFromDepositWhitelist(address strategy)
-func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchStrategyRemovedFromDepositWhitelist(opts *bind.WatchOpts, sink chan<- *StrategyManagerStorageStrategyRemovedFromDepositWhitelist) (event.Subscription, error) {
+// Solidity: event StrategyAddedToDepositWhitelist(address strategy)
+func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchStrategyAddedToDepositWhitelist(opts *bind.WatchOpts, sink chan<- *StrategyManagerStorageStrategyAddedToDepositWhitelist) (event.Subscription, error) {
- logs, sub, err := _StrategyManagerStorage.contract.WatchLogs(opts, "StrategyRemovedFromDepositWhitelist")
+ logs, sub, err := _StrategyManagerStorage.contract.WatchLogs(opts, "StrategyAddedToDepositWhitelist")
if err != nil {
return nil, err
}
@@ -1175,8 +1353,8 @@ func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchStrategyRemo
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(StrategyManagerStorageStrategyRemovedFromDepositWhitelist)
- if err := _StrategyManagerStorage.contract.UnpackLog(event, "StrategyRemovedFromDepositWhitelist", log); err != nil {
+ event := new(StrategyManagerStorageStrategyAddedToDepositWhitelist)
+ if err := _StrategyManagerStorage.contract.UnpackLog(event, "StrategyAddedToDepositWhitelist", log); err != nil {
return err
}
event.Raw = log
@@ -1197,21 +1375,21 @@ func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchStrategyRemo
}), nil
}
-// ParseStrategyRemovedFromDepositWhitelist is a log parse operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030.
+// ParseStrategyAddedToDepositWhitelist is a log parse operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe.
//
-// Solidity: event StrategyRemovedFromDepositWhitelist(address strategy)
-func (_StrategyManagerStorage *StrategyManagerStorageFilterer) ParseStrategyRemovedFromDepositWhitelist(log types.Log) (*StrategyManagerStorageStrategyRemovedFromDepositWhitelist, error) {
- event := new(StrategyManagerStorageStrategyRemovedFromDepositWhitelist)
- if err := _StrategyManagerStorage.contract.UnpackLog(event, "StrategyRemovedFromDepositWhitelist", log); err != nil {
+// Solidity: event StrategyAddedToDepositWhitelist(address strategy)
+func (_StrategyManagerStorage *StrategyManagerStorageFilterer) ParseStrategyAddedToDepositWhitelist(log types.Log) (*StrategyManagerStorageStrategyAddedToDepositWhitelist, error) {
+ event := new(StrategyManagerStorageStrategyAddedToDepositWhitelist)
+ if err := _StrategyManagerStorage.contract.UnpackLog(event, "StrategyAddedToDepositWhitelist", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// StrategyManagerStorageStrategyWhitelisterChangedIterator is returned from FilterStrategyWhitelisterChanged and is used to iterate over the raw logs and unpacked data for StrategyWhitelisterChanged events raised by the StrategyManagerStorage contract.
-type StrategyManagerStorageStrategyWhitelisterChangedIterator struct {
- Event *StrategyManagerStorageStrategyWhitelisterChanged // Event containing the contract specifics and raw log
+// StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator is returned from FilterStrategyRemovedFromDepositWhitelist and is used to iterate over the raw logs and unpacked data for StrategyRemovedFromDepositWhitelist events raised by the StrategyManagerStorage contract.
+type StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator struct {
+ Event *StrategyManagerStorageStrategyRemovedFromDepositWhitelist // 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
@@ -1225,7 +1403,7 @@ type StrategyManagerStorageStrategyWhitelisterChangedIterator 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 *StrategyManagerStorageStrategyWhitelisterChangedIterator) Next() bool {
+func (it *StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -1234,7 +1412,7 @@ func (it *StrategyManagerStorageStrategyWhitelisterChangedIterator) Next() bool
if it.done {
select {
case log := <-it.logs:
- it.Event = new(StrategyManagerStorageStrategyWhitelisterChanged)
+ it.Event = new(StrategyManagerStorageStrategyRemovedFromDepositWhitelist)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1249,7 +1427,7 @@ func (it *StrategyManagerStorageStrategyWhitelisterChangedIterator) Next() bool
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(StrategyManagerStorageStrategyWhitelisterChanged)
+ it.Event = new(StrategyManagerStorageStrategyRemovedFromDepositWhitelist)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1265,42 +1443,41 @@ func (it *StrategyManagerStorageStrategyWhitelisterChangedIterator) Next() bool
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *StrategyManagerStorageStrategyWhitelisterChangedIterator) Error() error {
+func (it *StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *StrategyManagerStorageStrategyWhitelisterChangedIterator) Close() error {
+func (it *StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// StrategyManagerStorageStrategyWhitelisterChanged represents a StrategyWhitelisterChanged event raised by the StrategyManagerStorage contract.
-type StrategyManagerStorageStrategyWhitelisterChanged struct {
- PreviousAddress common.Address
- NewAddress common.Address
- Raw types.Log // Blockchain specific contextual infos
+// StrategyManagerStorageStrategyRemovedFromDepositWhitelist represents a StrategyRemovedFromDepositWhitelist event raised by the StrategyManagerStorage contract.
+type StrategyManagerStorageStrategyRemovedFromDepositWhitelist struct {
+ Strategy common.Address
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterStrategyWhitelisterChanged is a free log retrieval operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29.
+// FilterStrategyRemovedFromDepositWhitelist is a free log retrieval operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030.
//
-// Solidity: event StrategyWhitelisterChanged(address previousAddress, address newAddress)
-func (_StrategyManagerStorage *StrategyManagerStorageFilterer) FilterStrategyWhitelisterChanged(opts *bind.FilterOpts) (*StrategyManagerStorageStrategyWhitelisterChangedIterator, error) {
+// Solidity: event StrategyRemovedFromDepositWhitelist(address strategy)
+func (_StrategyManagerStorage *StrategyManagerStorageFilterer) FilterStrategyRemovedFromDepositWhitelist(opts *bind.FilterOpts) (*StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator, error) {
- logs, sub, err := _StrategyManagerStorage.contract.FilterLogs(opts, "StrategyWhitelisterChanged")
+ logs, sub, err := _StrategyManagerStorage.contract.FilterLogs(opts, "StrategyRemovedFromDepositWhitelist")
if err != nil {
return nil, err
}
- return &StrategyManagerStorageStrategyWhitelisterChangedIterator{contract: _StrategyManagerStorage.contract, event: "StrategyWhitelisterChanged", logs: logs, sub: sub}, nil
+ return &StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator{contract: _StrategyManagerStorage.contract, event: "StrategyRemovedFromDepositWhitelist", logs: logs, sub: sub}, nil
}
-// WatchStrategyWhitelisterChanged is a free log subscription operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29.
+// WatchStrategyRemovedFromDepositWhitelist is a free log subscription operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030.
//
-// Solidity: event StrategyWhitelisterChanged(address previousAddress, address newAddress)
-func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchStrategyWhitelisterChanged(opts *bind.WatchOpts, sink chan<- *StrategyManagerStorageStrategyWhitelisterChanged) (event.Subscription, error) {
+// Solidity: event StrategyRemovedFromDepositWhitelist(address strategy)
+func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchStrategyRemovedFromDepositWhitelist(opts *bind.WatchOpts, sink chan<- *StrategyManagerStorageStrategyRemovedFromDepositWhitelist) (event.Subscription, error) {
- logs, sub, err := _StrategyManagerStorage.contract.WatchLogs(opts, "StrategyWhitelisterChanged")
+ logs, sub, err := _StrategyManagerStorage.contract.WatchLogs(opts, "StrategyRemovedFromDepositWhitelist")
if err != nil {
return nil, err
}
@@ -1310,8 +1487,8 @@ func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchStrategyWhit
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(StrategyManagerStorageStrategyWhitelisterChanged)
- if err := _StrategyManagerStorage.contract.UnpackLog(event, "StrategyWhitelisterChanged", log); err != nil {
+ event := new(StrategyManagerStorageStrategyRemovedFromDepositWhitelist)
+ if err := _StrategyManagerStorage.contract.UnpackLog(event, "StrategyRemovedFromDepositWhitelist", log); err != nil {
return err
}
event.Raw = log
@@ -1332,21 +1509,21 @@ func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchStrategyWhit
}), nil
}
-// ParseStrategyWhitelisterChanged is a log parse operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29.
+// ParseStrategyRemovedFromDepositWhitelist is a log parse operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030.
//
-// Solidity: event StrategyWhitelisterChanged(address previousAddress, address newAddress)
-func (_StrategyManagerStorage *StrategyManagerStorageFilterer) ParseStrategyWhitelisterChanged(log types.Log) (*StrategyManagerStorageStrategyWhitelisterChanged, error) {
- event := new(StrategyManagerStorageStrategyWhitelisterChanged)
- if err := _StrategyManagerStorage.contract.UnpackLog(event, "StrategyWhitelisterChanged", log); err != nil {
+// Solidity: event StrategyRemovedFromDepositWhitelist(address strategy)
+func (_StrategyManagerStorage *StrategyManagerStorageFilterer) ParseStrategyRemovedFromDepositWhitelist(log types.Log) (*StrategyManagerStorageStrategyRemovedFromDepositWhitelist, error) {
+ event := new(StrategyManagerStorageStrategyRemovedFromDepositWhitelist)
+ if err := _StrategyManagerStorage.contract.UnpackLog(event, "StrategyRemovedFromDepositWhitelist", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// StrategyManagerStorageUpdatedThirdPartyTransfersForbiddenIterator is returned from FilterUpdatedThirdPartyTransfersForbidden and is used to iterate over the raw logs and unpacked data for UpdatedThirdPartyTransfersForbidden events raised by the StrategyManagerStorage contract.
-type StrategyManagerStorageUpdatedThirdPartyTransfersForbiddenIterator struct {
- Event *StrategyManagerStorageUpdatedThirdPartyTransfersForbidden // Event containing the contract specifics and raw log
+// StrategyManagerStorageStrategyWhitelisterChangedIterator is returned from FilterStrategyWhitelisterChanged and is used to iterate over the raw logs and unpacked data for StrategyWhitelisterChanged events raised by the StrategyManagerStorage contract.
+type StrategyManagerStorageStrategyWhitelisterChangedIterator struct {
+ Event *StrategyManagerStorageStrategyWhitelisterChanged // 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
@@ -1360,7 +1537,7 @@ type StrategyManagerStorageUpdatedThirdPartyTransfersForbiddenIterator 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 *StrategyManagerStorageUpdatedThirdPartyTransfersForbiddenIterator) Next() bool {
+func (it *StrategyManagerStorageStrategyWhitelisterChangedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -1369,7 +1546,7 @@ func (it *StrategyManagerStorageUpdatedThirdPartyTransfersForbiddenIterator) Nex
if it.done {
select {
case log := <-it.logs:
- it.Event = new(StrategyManagerStorageUpdatedThirdPartyTransfersForbidden)
+ it.Event = new(StrategyManagerStorageStrategyWhitelisterChanged)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1384,7 +1561,7 @@ func (it *StrategyManagerStorageUpdatedThirdPartyTransfersForbiddenIterator) Nex
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(StrategyManagerStorageUpdatedThirdPartyTransfersForbidden)
+ it.Event = new(StrategyManagerStorageStrategyWhitelisterChanged)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1400,42 +1577,42 @@ func (it *StrategyManagerStorageUpdatedThirdPartyTransfersForbiddenIterator) Nex
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *StrategyManagerStorageUpdatedThirdPartyTransfersForbiddenIterator) Error() error {
+func (it *StrategyManagerStorageStrategyWhitelisterChangedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *StrategyManagerStorageUpdatedThirdPartyTransfersForbiddenIterator) Close() error {
+func (it *StrategyManagerStorageStrategyWhitelisterChangedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// StrategyManagerStorageUpdatedThirdPartyTransfersForbidden represents a UpdatedThirdPartyTransfersForbidden event raised by the StrategyManagerStorage contract.
-type StrategyManagerStorageUpdatedThirdPartyTransfersForbidden struct {
- Strategy common.Address
- Value bool
- Raw types.Log // Blockchain specific contextual infos
+// StrategyManagerStorageStrategyWhitelisterChanged represents a StrategyWhitelisterChanged event raised by the StrategyManagerStorage contract.
+type StrategyManagerStorageStrategyWhitelisterChanged struct {
+ PreviousAddress common.Address
+ NewAddress common.Address
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterUpdatedThirdPartyTransfersForbidden is a free log retrieval operation binding the contract event 0x77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786.
+// FilterStrategyWhitelisterChanged is a free log retrieval operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29.
//
-// Solidity: event UpdatedThirdPartyTransfersForbidden(address strategy, bool value)
-func (_StrategyManagerStorage *StrategyManagerStorageFilterer) FilterUpdatedThirdPartyTransfersForbidden(opts *bind.FilterOpts) (*StrategyManagerStorageUpdatedThirdPartyTransfersForbiddenIterator, error) {
+// Solidity: event StrategyWhitelisterChanged(address previousAddress, address newAddress)
+func (_StrategyManagerStorage *StrategyManagerStorageFilterer) FilterStrategyWhitelisterChanged(opts *bind.FilterOpts) (*StrategyManagerStorageStrategyWhitelisterChangedIterator, error) {
- logs, sub, err := _StrategyManagerStorage.contract.FilterLogs(opts, "UpdatedThirdPartyTransfersForbidden")
+ logs, sub, err := _StrategyManagerStorage.contract.FilterLogs(opts, "StrategyWhitelisterChanged")
if err != nil {
return nil, err
}
- return &StrategyManagerStorageUpdatedThirdPartyTransfersForbiddenIterator{contract: _StrategyManagerStorage.contract, event: "UpdatedThirdPartyTransfersForbidden", logs: logs, sub: sub}, nil
+ return &StrategyManagerStorageStrategyWhitelisterChangedIterator{contract: _StrategyManagerStorage.contract, event: "StrategyWhitelisterChanged", logs: logs, sub: sub}, nil
}
-// WatchUpdatedThirdPartyTransfersForbidden is a free log subscription operation binding the contract event 0x77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786.
+// WatchStrategyWhitelisterChanged is a free log subscription operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29.
//
-// Solidity: event UpdatedThirdPartyTransfersForbidden(address strategy, bool value)
-func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchUpdatedThirdPartyTransfersForbidden(opts *bind.WatchOpts, sink chan<- *StrategyManagerStorageUpdatedThirdPartyTransfersForbidden) (event.Subscription, error) {
+// Solidity: event StrategyWhitelisterChanged(address previousAddress, address newAddress)
+func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchStrategyWhitelisterChanged(opts *bind.WatchOpts, sink chan<- *StrategyManagerStorageStrategyWhitelisterChanged) (event.Subscription, error) {
- logs, sub, err := _StrategyManagerStorage.contract.WatchLogs(opts, "UpdatedThirdPartyTransfersForbidden")
+ logs, sub, err := _StrategyManagerStorage.contract.WatchLogs(opts, "StrategyWhitelisterChanged")
if err != nil {
return nil, err
}
@@ -1445,8 +1622,8 @@ func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchUpdatedThird
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(StrategyManagerStorageUpdatedThirdPartyTransfersForbidden)
- if err := _StrategyManagerStorage.contract.UnpackLog(event, "UpdatedThirdPartyTransfersForbidden", log); err != nil {
+ event := new(StrategyManagerStorageStrategyWhitelisterChanged)
+ if err := _StrategyManagerStorage.contract.UnpackLog(event, "StrategyWhitelisterChanged", log); err != nil {
return err
}
event.Raw = log
@@ -1467,12 +1644,12 @@ func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchUpdatedThird
}), nil
}
-// ParseUpdatedThirdPartyTransfersForbidden is a log parse operation binding the contract event 0x77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786.
+// ParseStrategyWhitelisterChanged is a log parse operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29.
//
-// Solidity: event UpdatedThirdPartyTransfersForbidden(address strategy, bool value)
-func (_StrategyManagerStorage *StrategyManagerStorageFilterer) ParseUpdatedThirdPartyTransfersForbidden(log types.Log) (*StrategyManagerStorageUpdatedThirdPartyTransfersForbidden, error) {
- event := new(StrategyManagerStorageUpdatedThirdPartyTransfersForbidden)
- if err := _StrategyManagerStorage.contract.UnpackLog(event, "UpdatedThirdPartyTransfersForbidden", log); err != nil {
+// Solidity: event StrategyWhitelisterChanged(address previousAddress, address newAddress)
+func (_StrategyManagerStorage *StrategyManagerStorageFilterer) ParseStrategyWhitelisterChanged(log types.Log) (*StrategyManagerStorageStrategyWhitelisterChanged, error) {
+ event := new(StrategyManagerStorageStrategyWhitelisterChanged)
+ if err := _StrategyManagerStorage.contract.UnpackLog(event, "StrategyWhitelisterChanged", log); err != nil {
return nil, err
}
event.Raw = log
diff --git a/pkg/bindings/StructuredLinkedList/binding.go b/pkg/bindings/StructuredLinkedList/binding.go
deleted file mode 100644
index 0e848e23ca..0000000000
--- a/pkg/bindings/StructuredLinkedList/binding.go
+++ /dev/null
@@ -1,203 +0,0 @@
-// Code generated - DO NOT EDIT.
-// This file is a generated binding and any manual changes will be lost.
-
-package StructuredLinkedList
-
-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
-)
-
-// StructuredLinkedListMetaData contains all meta data concerning the StructuredLinkedList contract.
-var StructuredLinkedListMetaData = &bind.MetaData{
- ABI: "[]",
- Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201215d519735009e4ce3e4ecd1b2c6ee486f785cb383d8e79cf7dcf93aaa3aaef64736f6c634300080c0033",
-}
-
-// StructuredLinkedListABI is the input ABI used to generate the binding from.
-// Deprecated: Use StructuredLinkedListMetaData.ABI instead.
-var StructuredLinkedListABI = StructuredLinkedListMetaData.ABI
-
-// StructuredLinkedListBin is the compiled bytecode used for deploying new contracts.
-// Deprecated: Use StructuredLinkedListMetaData.Bin instead.
-var StructuredLinkedListBin = StructuredLinkedListMetaData.Bin
-
-// DeployStructuredLinkedList deploys a new Ethereum contract, binding an instance of StructuredLinkedList to it.
-func DeployStructuredLinkedList(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *StructuredLinkedList, error) {
- parsed, err := StructuredLinkedListMetaData.GetAbi()
- if err != nil {
- return common.Address{}, nil, nil, err
- }
- if parsed == nil {
- return common.Address{}, nil, nil, errors.New("GetABI returned nil")
- }
-
- address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(StructuredLinkedListBin), backend)
- if err != nil {
- return common.Address{}, nil, nil, err
- }
- return address, tx, &StructuredLinkedList{StructuredLinkedListCaller: StructuredLinkedListCaller{contract: contract}, StructuredLinkedListTransactor: StructuredLinkedListTransactor{contract: contract}, StructuredLinkedListFilterer: StructuredLinkedListFilterer{contract: contract}}, nil
-}
-
-// StructuredLinkedList is an auto generated Go binding around an Ethereum contract.
-type StructuredLinkedList struct {
- StructuredLinkedListCaller // Read-only binding to the contract
- StructuredLinkedListTransactor // Write-only binding to the contract
- StructuredLinkedListFilterer // Log filterer for contract events
-}
-
-// StructuredLinkedListCaller is an auto generated read-only Go binding around an Ethereum contract.
-type StructuredLinkedListCaller struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// StructuredLinkedListTransactor is an auto generated write-only Go binding around an Ethereum contract.
-type StructuredLinkedListTransactor struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// StructuredLinkedListFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
-type StructuredLinkedListFilterer struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// StructuredLinkedListSession is an auto generated Go binding around an Ethereum contract,
-// with pre-set call and transact options.
-type StructuredLinkedListSession struct {
- Contract *StructuredLinkedList // 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
-}
-
-// StructuredLinkedListCallerSession is an auto generated read-only Go binding around an Ethereum contract,
-// with pre-set call options.
-type StructuredLinkedListCallerSession struct {
- Contract *StructuredLinkedListCaller // Generic contract caller binding to set the session for
- CallOpts bind.CallOpts // Call options to use throughout this session
-}
-
-// StructuredLinkedListTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
-// with pre-set transact options.
-type StructuredLinkedListTransactorSession struct {
- Contract *StructuredLinkedListTransactor // Generic contract transactor binding to set the session for
- TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
-}
-
-// StructuredLinkedListRaw is an auto generated low-level Go binding around an Ethereum contract.
-type StructuredLinkedListRaw struct {
- Contract *StructuredLinkedList // Generic contract binding to access the raw methods on
-}
-
-// StructuredLinkedListCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
-type StructuredLinkedListCallerRaw struct {
- Contract *StructuredLinkedListCaller // Generic read-only contract binding to access the raw methods on
-}
-
-// StructuredLinkedListTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
-type StructuredLinkedListTransactorRaw struct {
- Contract *StructuredLinkedListTransactor // Generic write-only contract binding to access the raw methods on
-}
-
-// NewStructuredLinkedList creates a new instance of StructuredLinkedList, bound to a specific deployed contract.
-func NewStructuredLinkedList(address common.Address, backend bind.ContractBackend) (*StructuredLinkedList, error) {
- contract, err := bindStructuredLinkedList(address, backend, backend, backend)
- if err != nil {
- return nil, err
- }
- return &StructuredLinkedList{StructuredLinkedListCaller: StructuredLinkedListCaller{contract: contract}, StructuredLinkedListTransactor: StructuredLinkedListTransactor{contract: contract}, StructuredLinkedListFilterer: StructuredLinkedListFilterer{contract: contract}}, nil
-}
-
-// NewStructuredLinkedListCaller creates a new read-only instance of StructuredLinkedList, bound to a specific deployed contract.
-func NewStructuredLinkedListCaller(address common.Address, caller bind.ContractCaller) (*StructuredLinkedListCaller, error) {
- contract, err := bindStructuredLinkedList(address, caller, nil, nil)
- if err != nil {
- return nil, err
- }
- return &StructuredLinkedListCaller{contract: contract}, nil
-}
-
-// NewStructuredLinkedListTransactor creates a new write-only instance of StructuredLinkedList, bound to a specific deployed contract.
-func NewStructuredLinkedListTransactor(address common.Address, transactor bind.ContractTransactor) (*StructuredLinkedListTransactor, error) {
- contract, err := bindStructuredLinkedList(address, nil, transactor, nil)
- if err != nil {
- return nil, err
- }
- return &StructuredLinkedListTransactor{contract: contract}, nil
-}
-
-// NewStructuredLinkedListFilterer creates a new log filterer instance of StructuredLinkedList, bound to a specific deployed contract.
-func NewStructuredLinkedListFilterer(address common.Address, filterer bind.ContractFilterer) (*StructuredLinkedListFilterer, error) {
- contract, err := bindStructuredLinkedList(address, nil, nil, filterer)
- if err != nil {
- return nil, err
- }
- return &StructuredLinkedListFilterer{contract: contract}, nil
-}
-
-// bindStructuredLinkedList binds a generic wrapper to an already deployed contract.
-func bindStructuredLinkedList(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
- parsed, err := StructuredLinkedListMetaData.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 (_StructuredLinkedList *StructuredLinkedListRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
- return _StructuredLinkedList.Contract.StructuredLinkedListCaller.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 (_StructuredLinkedList *StructuredLinkedListRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
- return _StructuredLinkedList.Contract.StructuredLinkedListTransactor.contract.Transfer(opts)
-}
-
-// Transact invokes the (paid) contract method with params as input values.
-func (_StructuredLinkedList *StructuredLinkedListRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
- return _StructuredLinkedList.Contract.StructuredLinkedListTransactor.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 (_StructuredLinkedList *StructuredLinkedListCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
- return _StructuredLinkedList.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 (_StructuredLinkedList *StructuredLinkedListTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
- return _StructuredLinkedList.Contract.contract.Transfer(opts)
-}
-
-// Transact invokes the (paid) contract method with params as input values.
-func (_StructuredLinkedList *StructuredLinkedListTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
- return _StructuredLinkedList.Contract.contract.Transact(opts, method, params...)
-}
diff --git a/pkg/bindings/UpgradeableSignatureCheckingUtils/binding.go b/pkg/bindings/UpgradeableSignatureCheckingUtils/binding.go
deleted file mode 100644
index 61b50a0940..0000000000
--- a/pkg/bindings/UpgradeableSignatureCheckingUtils/binding.go
+++ /dev/null
@@ -1,377 +0,0 @@
-// Code generated - DO NOT EDIT.
-// This file is a generated binding and any manual changes will be lost.
-
-package UpgradeableSignatureCheckingUtils
-
-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
-)
-
-// UpgradeableSignatureCheckingUtilsMetaData contains all meta data concerning the UpgradeableSignatureCheckingUtils contract.
-var UpgradeableSignatureCheckingUtilsMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"function\",\"name\":\"DOMAIN_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"domainSeparator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false}]",
-}
-
-// UpgradeableSignatureCheckingUtilsABI is the input ABI used to generate the binding from.
-// Deprecated: Use UpgradeableSignatureCheckingUtilsMetaData.ABI instead.
-var UpgradeableSignatureCheckingUtilsABI = UpgradeableSignatureCheckingUtilsMetaData.ABI
-
-// UpgradeableSignatureCheckingUtils is an auto generated Go binding around an Ethereum contract.
-type UpgradeableSignatureCheckingUtils struct {
- UpgradeableSignatureCheckingUtilsCaller // Read-only binding to the contract
- UpgradeableSignatureCheckingUtilsTransactor // Write-only binding to the contract
- UpgradeableSignatureCheckingUtilsFilterer // Log filterer for contract events
-}
-
-// UpgradeableSignatureCheckingUtilsCaller is an auto generated read-only Go binding around an Ethereum contract.
-type UpgradeableSignatureCheckingUtilsCaller struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// UpgradeableSignatureCheckingUtilsTransactor is an auto generated write-only Go binding around an Ethereum contract.
-type UpgradeableSignatureCheckingUtilsTransactor struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// UpgradeableSignatureCheckingUtilsFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
-type UpgradeableSignatureCheckingUtilsFilterer struct {
- contract *bind.BoundContract // Generic contract wrapper for the low level calls
-}
-
-// UpgradeableSignatureCheckingUtilsSession is an auto generated Go binding around an Ethereum contract,
-// with pre-set call and transact options.
-type UpgradeableSignatureCheckingUtilsSession struct {
- Contract *UpgradeableSignatureCheckingUtils // 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
-}
-
-// UpgradeableSignatureCheckingUtilsCallerSession is an auto generated read-only Go binding around an Ethereum contract,
-// with pre-set call options.
-type UpgradeableSignatureCheckingUtilsCallerSession struct {
- Contract *UpgradeableSignatureCheckingUtilsCaller // Generic contract caller binding to set the session for
- CallOpts bind.CallOpts // Call options to use throughout this session
-}
-
-// UpgradeableSignatureCheckingUtilsTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
-// with pre-set transact options.
-type UpgradeableSignatureCheckingUtilsTransactorSession struct {
- Contract *UpgradeableSignatureCheckingUtilsTransactor // Generic contract transactor binding to set the session for
- TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
-}
-
-// UpgradeableSignatureCheckingUtilsRaw is an auto generated low-level Go binding around an Ethereum contract.
-type UpgradeableSignatureCheckingUtilsRaw struct {
- Contract *UpgradeableSignatureCheckingUtils // Generic contract binding to access the raw methods on
-}
-
-// UpgradeableSignatureCheckingUtilsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
-type UpgradeableSignatureCheckingUtilsCallerRaw struct {
- Contract *UpgradeableSignatureCheckingUtilsCaller // Generic read-only contract binding to access the raw methods on
-}
-
-// UpgradeableSignatureCheckingUtilsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
-type UpgradeableSignatureCheckingUtilsTransactorRaw struct {
- Contract *UpgradeableSignatureCheckingUtilsTransactor // Generic write-only contract binding to access the raw methods on
-}
-
-// NewUpgradeableSignatureCheckingUtils creates a new instance of UpgradeableSignatureCheckingUtils, bound to a specific deployed contract.
-func NewUpgradeableSignatureCheckingUtils(address common.Address, backend bind.ContractBackend) (*UpgradeableSignatureCheckingUtils, error) {
- contract, err := bindUpgradeableSignatureCheckingUtils(address, backend, backend, backend)
- if err != nil {
- return nil, err
- }
- return &UpgradeableSignatureCheckingUtils{UpgradeableSignatureCheckingUtilsCaller: UpgradeableSignatureCheckingUtilsCaller{contract: contract}, UpgradeableSignatureCheckingUtilsTransactor: UpgradeableSignatureCheckingUtilsTransactor{contract: contract}, UpgradeableSignatureCheckingUtilsFilterer: UpgradeableSignatureCheckingUtilsFilterer{contract: contract}}, nil
-}
-
-// NewUpgradeableSignatureCheckingUtilsCaller creates a new read-only instance of UpgradeableSignatureCheckingUtils, bound to a specific deployed contract.
-func NewUpgradeableSignatureCheckingUtilsCaller(address common.Address, caller bind.ContractCaller) (*UpgradeableSignatureCheckingUtilsCaller, error) {
- contract, err := bindUpgradeableSignatureCheckingUtils(address, caller, nil, nil)
- if err != nil {
- return nil, err
- }
- return &UpgradeableSignatureCheckingUtilsCaller{contract: contract}, nil
-}
-
-// NewUpgradeableSignatureCheckingUtilsTransactor creates a new write-only instance of UpgradeableSignatureCheckingUtils, bound to a specific deployed contract.
-func NewUpgradeableSignatureCheckingUtilsTransactor(address common.Address, transactor bind.ContractTransactor) (*UpgradeableSignatureCheckingUtilsTransactor, error) {
- contract, err := bindUpgradeableSignatureCheckingUtils(address, nil, transactor, nil)
- if err != nil {
- return nil, err
- }
- return &UpgradeableSignatureCheckingUtilsTransactor{contract: contract}, nil
-}
-
-// NewUpgradeableSignatureCheckingUtilsFilterer creates a new log filterer instance of UpgradeableSignatureCheckingUtils, bound to a specific deployed contract.
-func NewUpgradeableSignatureCheckingUtilsFilterer(address common.Address, filterer bind.ContractFilterer) (*UpgradeableSignatureCheckingUtilsFilterer, error) {
- contract, err := bindUpgradeableSignatureCheckingUtils(address, nil, nil, filterer)
- if err != nil {
- return nil, err
- }
- return &UpgradeableSignatureCheckingUtilsFilterer{contract: contract}, nil
-}
-
-// bindUpgradeableSignatureCheckingUtils binds a generic wrapper to an already deployed contract.
-func bindUpgradeableSignatureCheckingUtils(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
- parsed, err := UpgradeableSignatureCheckingUtilsMetaData.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 (_UpgradeableSignatureCheckingUtils *UpgradeableSignatureCheckingUtilsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
- return _UpgradeableSignatureCheckingUtils.Contract.UpgradeableSignatureCheckingUtilsCaller.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 (_UpgradeableSignatureCheckingUtils *UpgradeableSignatureCheckingUtilsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
- return _UpgradeableSignatureCheckingUtils.Contract.UpgradeableSignatureCheckingUtilsTransactor.contract.Transfer(opts)
-}
-
-// Transact invokes the (paid) contract method with params as input values.
-func (_UpgradeableSignatureCheckingUtils *UpgradeableSignatureCheckingUtilsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
- return _UpgradeableSignatureCheckingUtils.Contract.UpgradeableSignatureCheckingUtilsTransactor.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 (_UpgradeableSignatureCheckingUtils *UpgradeableSignatureCheckingUtilsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
- return _UpgradeableSignatureCheckingUtils.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 (_UpgradeableSignatureCheckingUtils *UpgradeableSignatureCheckingUtilsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
- return _UpgradeableSignatureCheckingUtils.Contract.contract.Transfer(opts)
-}
-
-// Transact invokes the (paid) contract method with params as input values.
-func (_UpgradeableSignatureCheckingUtils *UpgradeableSignatureCheckingUtilsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
- return _UpgradeableSignatureCheckingUtils.Contract.contract.Transact(opts, method, params...)
-}
-
-// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70.
-//
-// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32)
-func (_UpgradeableSignatureCheckingUtils *UpgradeableSignatureCheckingUtilsCaller) DOMAINTYPEHASH(opts *bind.CallOpts) ([32]byte, error) {
- var out []interface{}
- err := _UpgradeableSignatureCheckingUtils.contract.Call(opts, &out, "DOMAIN_TYPEHASH")
-
- if err != nil {
- return *new([32]byte), err
- }
-
- out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
-
- return out0, err
-
-}
-
-// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70.
-//
-// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32)
-func (_UpgradeableSignatureCheckingUtils *UpgradeableSignatureCheckingUtilsSession) DOMAINTYPEHASH() ([32]byte, error) {
- return _UpgradeableSignatureCheckingUtils.Contract.DOMAINTYPEHASH(&_UpgradeableSignatureCheckingUtils.CallOpts)
-}
-
-// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70.
-//
-// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32)
-func (_UpgradeableSignatureCheckingUtils *UpgradeableSignatureCheckingUtilsCallerSession) DOMAINTYPEHASH() ([32]byte, error) {
- return _UpgradeableSignatureCheckingUtils.Contract.DOMAINTYPEHASH(&_UpgradeableSignatureCheckingUtils.CallOpts)
-}
-
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
-//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_UpgradeableSignatureCheckingUtils *UpgradeableSignatureCheckingUtilsCaller) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) {
- var out []interface{}
- err := _UpgradeableSignatureCheckingUtils.contract.Call(opts, &out, "domainSeparator")
-
- if err != nil {
- return *new([32]byte), err
- }
-
- out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
-
- return out0, err
-
-}
-
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
-//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_UpgradeableSignatureCheckingUtils *UpgradeableSignatureCheckingUtilsSession) DomainSeparator() ([32]byte, error) {
- return _UpgradeableSignatureCheckingUtils.Contract.DomainSeparator(&_UpgradeableSignatureCheckingUtils.CallOpts)
-}
-
-// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25.
-//
-// Solidity: function domainSeparator() view returns(bytes32)
-func (_UpgradeableSignatureCheckingUtils *UpgradeableSignatureCheckingUtilsCallerSession) DomainSeparator() ([32]byte, error) {
- return _UpgradeableSignatureCheckingUtils.Contract.DomainSeparator(&_UpgradeableSignatureCheckingUtils.CallOpts)
-}
-
-// UpgradeableSignatureCheckingUtilsInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the UpgradeableSignatureCheckingUtils contract.
-type UpgradeableSignatureCheckingUtilsInitializedIterator struct {
- Event *UpgradeableSignatureCheckingUtilsInitialized // 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 *UpgradeableSignatureCheckingUtilsInitializedIterator) 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(UpgradeableSignatureCheckingUtilsInitialized)
- 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(UpgradeableSignatureCheckingUtilsInitialized)
- 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 *UpgradeableSignatureCheckingUtilsInitializedIterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *UpgradeableSignatureCheckingUtilsInitializedIterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// UpgradeableSignatureCheckingUtilsInitialized represents a Initialized event raised by the UpgradeableSignatureCheckingUtils contract.
-type UpgradeableSignatureCheckingUtilsInitialized struct {
- Version uint8
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498.
-//
-// Solidity: event Initialized(uint8 version)
-func (_UpgradeableSignatureCheckingUtils *UpgradeableSignatureCheckingUtilsFilterer) FilterInitialized(opts *bind.FilterOpts) (*UpgradeableSignatureCheckingUtilsInitializedIterator, error) {
-
- logs, sub, err := _UpgradeableSignatureCheckingUtils.contract.FilterLogs(opts, "Initialized")
- if err != nil {
- return nil, err
- }
- return &UpgradeableSignatureCheckingUtilsInitializedIterator{contract: _UpgradeableSignatureCheckingUtils.contract, event: "Initialized", logs: logs, sub: sub}, nil
-}
-
-// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498.
-//
-// Solidity: event Initialized(uint8 version)
-func (_UpgradeableSignatureCheckingUtils *UpgradeableSignatureCheckingUtilsFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *UpgradeableSignatureCheckingUtilsInitialized) (event.Subscription, error) {
-
- logs, sub, err := _UpgradeableSignatureCheckingUtils.contract.WatchLogs(opts, "Initialized")
- if err != nil {
- return nil, err
- }
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(UpgradeableSignatureCheckingUtilsInitialized)
- if err := _UpgradeableSignatureCheckingUtils.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 (_UpgradeableSignatureCheckingUtils *UpgradeableSignatureCheckingUtilsFilterer) ParseInitialized(log types.Log) (*UpgradeableSignatureCheckingUtilsInitialized, error) {
- event := new(UpgradeableSignatureCheckingUtilsInitialized)
- if err := _UpgradeableSignatureCheckingUtils.contract.UnpackLog(event, "Initialized", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
diff --git a/remappings.txt b/remappings.txt
deleted file mode 100644
index 91c1fde59d..0000000000
--- a/remappings.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-@openzeppelin-upgrades/=lib/openzeppelin-contracts-upgradeable/
-@openzeppelin/=lib/openzeppelin-contracts/
-@openzeppelin-v4.9.0/=lib/openzeppelin-contracts-v4.9.0/
-@openzeppelin-upgrades-v4.9.0/=lib/openzeppelin-contracts-upgradeable-v4.9.0/
-ds-test/=lib/ds-test/src/
-forge-std/=lib/forge-std/src/
\ No newline at end of file
diff --git a/script/configs/devnet/deploy_from_scratch.anvil.config.json b/script/configs/devnet/deploy_from_scratch.anvil.config.json
new file mode 100644
index 0000000000..96df127e1f
--- /dev/null
+++ b/script/configs/devnet/deploy_from_scratch.anvil.config.json
@@ -0,0 +1,55 @@
+{
+ "maintainer": "samlaf@eigenlabs.org",
+ "multisig_addresses": {
+ "operationsMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
+ "communityMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
+ "pauserMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
+ "executorMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
+ "timelock": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
+ },
+ "strategies": [
+ {
+ "token_address": "0x0000000000000000000000000000000000000000",
+ "token_symbol": "WETH",
+ "max_per_deposit": 115792089237316195423570985008687907853269984665640564039457584007913129639935,
+ "max_deposits": 115792089237316195423570985008687907853269984665640564039457584007913129639935
+ }
+ ],
+ "strategyManager": {
+ "init_paused_status": 0,
+ "init_withdrawal_delay_blocks": 1
+ },
+ "eigenPod": {
+ "PARTIAL_WITHDRAWAL_FRAUD_PROOF_PERIOD_BLOCKS": 1,
+ "MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR": "32000000000"
+ },
+ "eigenPodManager": {
+ "init_paused_status": 30
+ },
+ "delayedWithdrawalRouter": {
+ "init_paused_status": 0,
+ "init_withdrawal_delay_blocks": 1
+ },
+ "slasher": {
+ "init_paused_status": 0
+ },
+ "delegation": {
+ "init_paused_status": 0,
+ "init_withdrawal_delay_blocks": 1
+ },
+ "rewardsCoordinator": {
+ "init_paused_status": 0,
+ "CALCULATION_INTERVAL_SECONDS": 604800,
+ "MAX_REWARDS_DURATION": 6048000,
+ "MAX_RETROACTIVE_LENGTH": 7776000,
+ "MAX_FUTURE_LENGTH": 2592000,
+ "GENESIS_REWARDS_TIMESTAMP": 1710979200,
+ "rewards_updater_address": "0x18a0f92Ad9645385E8A8f3db7d0f6CF7aBBb0aD4",
+ "activation_delay": 7200,
+ "calculation_interval_seconds": 604800,
+ "global_operator_commission_bips": 1000,
+ "OPERATOR_SET_GENESIS_REWARDS_TIMESTAMP": 1720656000,
+ "OPERATOR_SET_MAX_RETROACTIVE_LENGTH": 2592000
+ },
+ "ethPOSDepositAddress": "0x00000000219ab540356cBB839Cbe05303d7705Fa"
+}
\ No newline at end of file
diff --git a/script/configs/devnet/deploy_from_scratch.holesky.config.json b/script/configs/devnet/deploy_from_scratch.holesky.config.json
new file mode 100644
index 0000000000..3dc1f204d5
--- /dev/null
+++ b/script/configs/devnet/deploy_from_scratch.holesky.config.json
@@ -0,0 +1,55 @@
+{
+ "maintainer": "samlaf@eigenlabs.org",
+ "multisig_addresses": {
+ "operationsMultisig": "0xDA29BB71669f46F2a779b4b62f03644A84eE3479",
+ "communityMultisig": "0xDA29BB71669f46F2a779b4b62f03644A84eE3479",
+ "pauserMultisig": "0xDA29BB71669f46F2a779b4b62f03644A84eE3479",
+ "executorMultisig": "0xDA29BB71669f46F2a779b4b62f03644A84eE3479",
+ "timelock": "0xDA29BB71669f46F2a779b4b62f03644A84eE3479"
+ },
+ "strategies": [
+ {
+ "token_address": "0x0000000000000000000000000000000000000000",
+ "token_symbol": "WETH",
+ "max_per_deposit": 115792089237316195423570985008687907853269984665640564039457584007913129639935,
+ "max_deposits": 115792089237316195423570985008687907853269984665640564039457584007913129639935
+ }
+ ],
+ "strategyManager": {
+ "init_paused_status": 0,
+ "init_withdrawal_delay_blocks": 1
+ },
+ "eigenPod": {
+ "PARTIAL_WITHDRAWAL_FRAUD_PROOF_PERIOD_BLOCKS": 1,
+ "MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR": "32000000000"
+ },
+ "eigenPodManager": {
+ "init_paused_status": 30
+ },
+ "delayedWithdrawalRouter": {
+ "init_paused_status": 0,
+ "init_withdrawal_delay_blocks": 1
+ },
+ "slasher": {
+ "init_paused_status": 0
+ },
+ "delegation": {
+ "init_paused_status": 0,
+ "init_withdrawal_delay_blocks": 1
+ },
+ "rewardsCoordinator": {
+ "init_paused_status": 0,
+ "CALCULATION_INTERVAL_SECONDS": 604800,
+ "MAX_REWARDS_DURATION": 6048000,
+ "MAX_RETROACTIVE_LENGTH": 7776000,
+ "MAX_FUTURE_LENGTH": 2592000,
+ "GENESIS_REWARDS_TIMESTAMP": 1710979200,
+ "rewards_updater_address": "0xDA29BB71669f46F2a779b4b62f03644A84eE3479",
+ "activation_delay": 7200,
+ "calculation_interval_seconds": 604800,
+ "global_operator_commission_bips": 1000,
+ "OPERATOR_SET_GENESIS_REWARDS_TIMESTAMP": 1720656000,
+ "OPERATOR_SET_MAX_RETROACTIVE_LENGTH": 2592000
+ },
+ "ethPOSDepositAddress": "0x00000000219ab540356cBB839Cbe05303d7705Fa"
+}
\ No newline at end of file
diff --git a/script/configs/devnet/deploy_from_scratch.holesky.slashing.config.json b/script/configs/devnet/deploy_from_scratch.holesky.slashing.config.json
new file mode 100644
index 0000000000..bcd808f715
--- /dev/null
+++ b/script/configs/devnet/deploy_from_scratch.holesky.slashing.config.json
@@ -0,0 +1,47 @@
+{
+ "multisig_addresses": {
+ "operationsMultisig": "0xBB37b72F67A410B76Ce9b9aF9e37aa561B1C5B07",
+ "communityMultisig": "0xBB37b72F67A410B76Ce9b9aF9e37aa561B1C5B07",
+ "pauserMultisig": "0xBB37b72F67A410B76Ce9b9aF9e37aa561B1C5B07",
+ "executorMultisig": "0xBB37b72F67A410B76Ce9b9aF9e37aa561B1C5B07",
+ "timelock": "0xBB37b72F67A410B76Ce9b9aF9e37aa561B1C5B07"
+ },
+ "strategyManager": {
+ "init_paused_status": 0,
+ "init_withdrawal_delay_blocks": 1
+ },
+ "eigenPod": {
+ "PARTIAL_WITHDRAWAL_FRAUD_PROOF_PERIOD_BLOCKS": 1,
+ "MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR": "32000000000"
+ },
+ "eigenPodManager": {
+ "init_paused_status": 115792089237316195423570985008687907853269984665640564039457584007913129639935
+ },
+ "slasher": {
+ "init_paused_status": 0
+ },
+ "delegation": {
+ "init_paused_status": 0,
+ "init_withdrawal_delay_blocks": 1
+ },
+ "rewardsCoordinator": {
+ "init_paused_status": 115792089237316195423570985008687907853269984665640564039457584007913129639935,
+ "CALCULATION_INTERVAL_SECONDS": 604800,
+ "MAX_REWARDS_DURATION": 6048000,
+ "MAX_RETROACTIVE_LENGTH": 7776000,
+ "MAX_FUTURE_LENGTH": 2592000,
+ "GENESIS_REWARDS_TIMESTAMP": 1710979200,
+ "rewards_updater_address": "0xBB37b72F67A410B76Ce9b9aF9e37aa561B1C5B07",
+ "activation_delay": 7200,
+ "calculation_interval_seconds": 604800,
+ "global_operator_commission_bips": 1000,
+ "OPERATOR_SET_GENESIS_REWARDS_TIMESTAMP": 1720656000,
+ "OPERATOR_SET_MAX_RETROACTIVE_LENGTH": 2592000
+ },
+ "allocationManager": {
+ "init_paused_status": 0,
+ "DEALLOCATION_DELAY": 86400,
+ "ALLOCATION_CONFIGURATION_DELAY": 600
+ },
+ "ethPOSDepositAddress": "0x4242424242424242424242424242424242424242"
+ }
\ No newline at end of file
diff --git a/script/configs/local/deploy_from_scratch.anvil.config.json b/script/configs/local/deploy_from_scratch.anvil.config.json
index a665924b06..f8b15599d4 100644
--- a/script/configs/local/deploy_from_scratch.anvil.config.json
+++ b/script/configs/local/deploy_from_scratch.anvil.config.json
@@ -1,55 +1,61 @@
{
- "maintainer": "samlaf@eigenlabs.org",
- "multisig_addresses": {
- "operationsMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
- "communityMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
- "pauserMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
- "executorMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
- "timelock": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
- },
- "strategies": [
- {
- "token_address": "0x0000000000000000000000000000000000000000",
- "token_symbol": "WETH",
- "max_per_deposit": 115792089237316195423570985008687907853269984665640564039457584007913129639935,
- "max_deposits": 115792089237316195423570985008687907853269984665640564039457584007913129639935
- }
- ],
- "strategyManager": {
- "init_paused_status": 0,
- "init_withdrawal_delay_blocks": 1
- },
- "eigenPod": {
- "PARTIAL_WITHDRAWAL_FRAUD_PROOF_PERIOD_BLOCKS": 1,
- "MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR": "32000000000"
- },
- "eigenPodManager": {
- "init_paused_status": 30
- },
- "delayedWithdrawalRouter": {
- "init_paused_status": 0,
- "init_withdrawal_delay_blocks": 1
- },
- "slasher": {
- "init_paused_status": 0
- },
- "delegation": {
- "init_paused_status": 0,
- "init_withdrawal_delay_blocks": 1
- },
- "rewardsCoordinator": {
- "init_paused_status": 0,
- "CALCULATION_INTERVAL_SECONDS": 604800,
- "MAX_REWARDS_DURATION": 6048000,
- "MAX_RETROACTIVE_LENGTH": 7776000,
- "MAX_FUTURE_LENGTH": 2592000,
- "GENESIS_REWARDS_TIMESTAMP": 1710979200,
- "rewards_updater_address": "0x18a0f92Ad9645385E8A8f3db7d0f6CF7aBBb0aD4",
- "activation_delay": 7200,
- "calculation_interval_seconds": 604800,
- "default_operator_split_bips": 1000,
- "OPERATOR_SET_GENESIS_REWARDS_TIMESTAMP": 1720656000,
- "OPERATOR_SET_MAX_RETROACTIVE_LENGTH": 2592000
- },
- "ethPOSDepositAddress": "0x00000000219ab540356cBB839Cbe05303d7705Fa"
- }
+ "maintainer": "samlaf@eigenlabs.org",
+ "multisig_addresses": {
+ "operationsMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
+ "communityMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
+ "pauserMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
+ "executorMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
+ "timelock": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
+ },
+ "strategies": [
+ {
+ "token_address": "0x0000000000000000000000000000000000000000",
+ "token_symbol": "WETH",
+ "max_per_deposit": 115792089237316195423570985008687907853269984665640564039457584007913129639935,
+ "max_deposits": 115792089237316195423570985008687907853269984665640564039457584007913129639935
+ }
+ ],
+ "strategyManager": {
+ "init_paused_status": 0,
+ "init_withdrawal_delay_blocks": 1
+ },
+ "eigenPod": {
+ "PARTIAL_WITHDRAWAL_FRAUD_PROOF_PERIOD_BLOCKS": 1,
+ "MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR": "32000000000"
+ },
+ "eigenPodManager": {
+ "init_paused_status": 30
+ },
+ "delayedWithdrawalRouter": {
+ "init_paused_status": 0,
+ "init_withdrawal_delay_blocks": 1
+ },
+ "slasher": {
+ "init_paused_status": 0
+ },
+ "delegation": {
+ "init_paused_status": 0,
+ "init_withdrawal_delay_blocks": 1
+ },
+ "rewardsCoordinator": {
+ "init_paused_status": 0,
+ "CALCULATION_INTERVAL_SECONDS": 604800,
+ "MAX_REWARDS_DURATION": 6048000,
+ "MAX_RETROACTIVE_LENGTH": 7776000,
+ "MAX_FUTURE_LENGTH": 2592000,
+ "GENESIS_REWARDS_TIMESTAMP": 1710979200,
+ "rewards_updater_address": "0x18a0f92Ad9645385E8A8f3db7d0f6CF7aBBb0aD4",
+ "activation_delay": 7200,
+ "calculation_interval_seconds": 604800,
+ "global_operator_commission_bips": 1000,
+ "default_operator_split_bips":1000,
+ "OPERATOR_SET_GENESIS_REWARDS_TIMESTAMP": 1720656000,
+ "OPERATOR_SET_MAX_RETROACTIVE_LENGTH": 2592000
+ },
+ "allocationManager": {
+ "init_paused_status": 0,
+ "DEALLOCATION_DELAY": 900,
+ "ALLOCATION_CONFIGURATION_DELAY": 1200
+ },
+ "ethPOSDepositAddress": "0x00000000219ab540356cBB839Cbe05303d7705Fa"
+}
\ No newline at end of file
diff --git a/script/configs/local/deploy_from_scratch.slashing.anvil.config.json b/script/configs/local/deploy_from_scratch.slashing.anvil.config.json
new file mode 100644
index 0000000000..313bd1827a
--- /dev/null
+++ b/script/configs/local/deploy_from_scratch.slashing.anvil.config.json
@@ -0,0 +1,61 @@
+{
+ "maintainer": "samlaf@eigenlabs.org",
+ "multisig_addresses": {
+ "operationsMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
+ "communityMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
+ "pauserMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
+ "executorMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
+ "timelock": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
+ },
+ "strategies": [
+ {
+ "token_address": "0x0000000000000000000000000000000000000000",
+ "token_symbol": "WETH",
+ "max_per_deposit": 115792089237316195423570985008687907853269984665640564039457584007913129639935,
+ "max_deposits": 115792089237316195423570985008687907853269984665640564039457584007913129639935
+ }
+ ],
+ "allocationManager": {
+ "init_paused_status": 0,
+ "DEALLOCATION_DELAY": 86400,
+ "ALLOCATION_CONFIGURATION_DELAY": 600
+ },
+ "strategyManager": {
+ "init_paused_status": 0,
+ "init_withdrawal_delay_blocks": 1
+ },
+ "eigenPod": {
+ "PARTIAL_WITHDRAWAL_FRAUD_PROOF_PERIOD_BLOCKS": 1,
+ "MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR": "32000000000"
+ },
+ "eigenPodManager": {
+ "init_paused_status": 30
+ },
+ "delayedWithdrawalRouter": {
+ "init_paused_status": 0,
+ "init_withdrawal_delay_blocks": 1
+ },
+ "slasher": {
+ "init_paused_status": 0
+ },
+ "delegation": {
+ "withdrawal_delay_blocks": 5,
+ "init_paused_status": 0,
+ "init_withdrawal_delay_blocks": 1
+ },
+ "rewardsCoordinator": {
+ "init_paused_status": 0,
+ "CALCULATION_INTERVAL_SECONDS": 604800,
+ "MAX_REWARDS_DURATION": 6048000,
+ "MAX_RETROACTIVE_LENGTH": 7776000,
+ "MAX_FUTURE_LENGTH": 2592000,
+ "GENESIS_REWARDS_TIMESTAMP": 1710979200,
+ "rewards_updater_address": "0x18a0f92Ad9645385E8A8f3db7d0f6CF7aBBb0aD4",
+ "activation_delay": 7200,
+ "calculation_interval_seconds": 604800,
+ "global_operator_commission_bips": 1000,
+ "OPERATOR_SET_GENESIS_REWARDS_TIMESTAMP": 1720656000,
+ "OPERATOR_SET_MAX_RETROACTIVE_LENGTH": 2592000
+ },
+ "ethPOSDepositAddress": "0x00000000219ab540356cBB839Cbe05303d7705Fa"
+}
\ No newline at end of file
diff --git a/script/configs/mainnet.json b/script/configs/mainnet.json
index 3b42bc3627..856dab36ea 100644
--- a/script/configs/mainnet.json
+++ b/script/configs/mainnet.json
@@ -2,7 +2,7 @@
"config": {
"environment": {
"chainid": 1,
- "lastUpdated": "v0.4.2-mainnet-pepe",
+ "lastUpdated": "slashing-integration-testing",
"name": "mainnet"
},
"params": {
@@ -15,7 +15,9 @@
"GENESIS_REWARDS_TIMESTAMP": 1710979200,
"REWARDS_UPDATER_ADDRESS": "0x8f94F55fD8c9E090296283137C303fE97d32A9e2",
"ACTIVATION_DELAY": 604800,
- "GLOBAL_OPERATOR_COMMISSION_BIPS": 1000
+ "GLOBAL_OPERATOR_COMMISSION_BIPS": 1000,
+ "MIN_WITHDRAWAL_DELAY_BLOCKS": 100800,
+ "ALLOCATION_CONFIGURATION_DELAY": 126000
}
},
"deployment": {
diff --git a/script/deploy/devnet/deploy_from_scratch.s.sol b/script/deploy/devnet/deploy_from_scratch.s.sol
new file mode 100644
index 0000000000..5c2f888f55
--- /dev/null
+++ b/script/deploy/devnet/deploy_from_scratch.s.sol
@@ -0,0 +1,647 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.27;
+
+import "@openzeppelin/contracts/token/ERC20/presets/ERC20PresetFixedSupply.sol";
+import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
+import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
+import "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol";
+
+import "../../../src/contracts/interfaces/IETHPOSDeposit.sol";
+
+import "../../../src/contracts/core/StrategyManager.sol";
+import "../../../src/contracts/core/DelegationManager.sol";
+import "../../../src/contracts/core/AVSDirectory.sol";
+import "../../../src/contracts/core/RewardsCoordinator.sol";
+import "../../../src/contracts/core/AllocationManager.sol";
+import "../../../src/contracts/permissions/PermissionController.sol";
+
+import "../../../src/contracts/strategies/StrategyBaseTVLLimits.sol";
+import "../../../src/contracts/strategies/StrategyFactory.sol";
+import "../../../src/contracts/strategies/StrategyBase.sol";
+
+import "../../../src/contracts/pods/EigenPod.sol";
+import "../../../src/contracts/pods/EigenPodManager.sol";
+
+import "../../../src/contracts/permissions/PauserRegistry.sol";
+
+import "../../../src/test/mocks/EmptyContract.sol";
+import "../../../src/test/mocks/ETHDepositMock.sol";
+
+import "forge-std/Script.sol";
+import "forge-std/Test.sol";
+
+// # To load the variables in the .env file
+// source .env
+
+// # To deploy and verify our contract
+// forge script script/deploy/devnet/deploy_from_scratch.s.sol --rpc-url $RPC_URL --private-key $PRIVATE_KEY --broadcast --sig "run(string memory configFile)" -- local/deploy_from_scratch.anvil.config.json
+contract DeployFromScratch is Script, Test {
+ Vm cheats = Vm(VM_ADDRESS);
+
+ string public deployConfigPath;
+
+ // EigenLayer Contracts
+ ProxyAdmin public eigenLayerProxyAdmin;
+ PauserRegistry public eigenLayerPauserReg;
+ DelegationManager public delegation;
+ DelegationManager public delegationImplementation;
+ StrategyManager public strategyManager;
+ StrategyManager public strategyManagerImplementation;
+ RewardsCoordinator public rewardsCoordinator;
+ RewardsCoordinator public rewardsCoordinatorImplementation;
+ AVSDirectory public avsDirectory;
+ AVSDirectory public avsDirectoryImplementation;
+ EigenPodManager public eigenPodManager;
+ EigenPodManager public eigenPodManagerImplementation;
+ UpgradeableBeacon public eigenPodBeacon;
+ EigenPod public eigenPodImplementation;
+ StrategyFactory public strategyFactory;
+ StrategyFactory public strategyFactoryImplementation;
+ UpgradeableBeacon public strategyBeacon;
+ StrategyBase public baseStrategyImplementation;
+ AllocationManager public allocationManagerImplementation;
+ AllocationManager public allocationManager;
+ PermissionController public permissionController;
+ PermissionController public permissionControllerImplementation;
+
+ EmptyContract public emptyContract;
+
+ address executorMultisig;
+ address operationsMultisig;
+ address pauserMultisig;
+
+ // the ETH2 deposit contract -- if not on mainnet, we deploy a mock as stand-in
+ IETHPOSDeposit public ethPOSDeposit;
+
+ // strategies deployed
+ StrategyBaseTVLLimits[] public deployedStrategyArray;
+
+ // IMMUTABLES TO SET
+ uint64 GOERLI_GENESIS_TIME = 1616508000;
+
+ // OTHER DEPLOYMENT PARAMETERS
+ uint256 STRATEGY_MANAGER_INIT_PAUSED_STATUS;
+ uint256 DELEGATION_INIT_PAUSED_STATUS;
+ uint256 EIGENPOD_MANAGER_INIT_PAUSED_STATUS;
+ uint256 REWARDS_COORDINATOR_INIT_PAUSED_STATUS;
+
+ // DelegationManager
+ uint32 MIN_WITHDRAWAL_DELAY = 86400;
+
+ // AllocationManager
+ uint32 DEALLOCATION_DELAY;
+ uint32 ALLOCATION_CONFIGURATION_DELAY;
+
+ // RewardsCoordinator
+ uint32 REWARDS_COORDINATOR_MAX_REWARDS_DURATION;
+ uint32 REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH;
+ uint32 REWARDS_COORDINATOR_MAX_FUTURE_LENGTH;
+ uint32 REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP;
+ address REWARDS_COORDINATOR_UPDATER;
+ uint32 REWARDS_COORDINATOR_ACTIVATION_DELAY;
+ uint32 REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS;
+ uint32 REWARDS_COORDINATOR_GLOBAL_OPERATOR_COMMISSION_BIPS;
+ uint32 REWARDS_COORDINATOR_OPERATOR_SET_GENESIS_REWARDS_TIMESTAMP;
+ uint32 REWARDS_COORDINATOR_OPERATOR_SET_MAX_RETROACTIVE_LENGTH;
+
+ // AllocationManager
+ uint256 ALLOCATION_MANAGER_INIT_PAUSED_STATUS;
+
+ // one week in blocks -- 50400
+ uint32 STRATEGY_MANAGER_INIT_WITHDRAWAL_DELAY_BLOCKS;
+ uint256 DELEGATION_WITHDRAWAL_DELAY_BLOCKS;
+
+ function run(string memory configFileName) public {
+ // read and log the chainID
+ uint256 chainId = block.chainid;
+ emit log_named_uint("You are deploying on ChainID", chainId);
+
+ // READ JSON CONFIG DATA
+ deployConfigPath = string(bytes(string.concat("script/configs/", configFileName)));
+ string memory config_data = vm.readFile(deployConfigPath);
+ // bytes memory parsedData = vm.parseJson(config_data);
+
+ STRATEGY_MANAGER_INIT_PAUSED_STATUS = stdJson.readUint(config_data, ".strategyManager.init_paused_status");
+ DELEGATION_INIT_PAUSED_STATUS = stdJson.readUint(config_data, ".delegation.init_paused_status");
+ DELEGATION_WITHDRAWAL_DELAY_BLOCKS = stdJson.readUint(config_data, ".delegation.init_withdrawal_delay_blocks");
+ EIGENPOD_MANAGER_INIT_PAUSED_STATUS = stdJson.readUint(config_data, ".eigenPodManager.init_paused_status");
+ REWARDS_COORDINATOR_INIT_PAUSED_STATUS = stdJson.readUint(
+ config_data,
+ ".rewardsCoordinator.init_paused_status"
+ );
+ REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS = uint32(
+ stdJson.readUint(config_data, ".rewardsCoordinator.CALCULATION_INTERVAL_SECONDS")
+ );
+ REWARDS_COORDINATOR_MAX_REWARDS_DURATION = uint32(stdJson.readUint(config_data, ".rewardsCoordinator.MAX_REWARDS_DURATION"));
+ REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH = uint32(stdJson.readUint(config_data, ".rewardsCoordinator.MAX_RETROACTIVE_LENGTH"));
+ REWARDS_COORDINATOR_MAX_FUTURE_LENGTH = uint32(stdJson.readUint(config_data, ".rewardsCoordinator.MAX_FUTURE_LENGTH"));
+ REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP = uint32(stdJson.readUint(config_data, ".rewardsCoordinator.GENESIS_REWARDS_TIMESTAMP"));
+ REWARDS_COORDINATOR_UPDATER = stdJson.readAddress(config_data, ".rewardsCoordinator.rewards_updater_address");
+ REWARDS_COORDINATOR_ACTIVATION_DELAY = uint32(stdJson.readUint(config_data, ".rewardsCoordinator.activation_delay"));
+ REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS = uint32(
+ stdJson.readUint(config_data, ".rewardsCoordinator.calculation_interval_seconds")
+ );
+ REWARDS_COORDINATOR_GLOBAL_OPERATOR_COMMISSION_BIPS = uint32(
+ stdJson.readUint(config_data, ".rewardsCoordinator.global_operator_commission_bips")
+ );
+ REWARDS_COORDINATOR_OPERATOR_SET_GENESIS_REWARDS_TIMESTAMP = uint32(
+ stdJson.readUint(config_data, ".rewardsCoordinator.OPERATOR_SET_GENESIS_REWARDS_TIMESTAMP")
+ );
+ REWARDS_COORDINATOR_OPERATOR_SET_MAX_RETROACTIVE_LENGTH = uint32(
+ stdJson.readUint(config_data, ".rewardsCoordinator.OPERATOR_SET_MAX_RETROACTIVE_LENGTH")
+ );
+
+ STRATEGY_MANAGER_INIT_WITHDRAWAL_DELAY_BLOCKS = uint32(
+ stdJson.readUint(config_data, ".strategyManager.init_withdrawal_delay_blocks")
+ );
+
+ ALLOCATION_MANAGER_INIT_PAUSED_STATUS = uint32(
+ stdJson.readUint(config_data, ".allocationManager.init_paused_status")
+ );
+ DEALLOCATION_DELAY = uint32(
+ stdJson.readUint(config_data, ".allocationManager.DEALLOCATION_DELAY")
+ );
+ ALLOCATION_CONFIGURATION_DELAY = uint32(
+ stdJson.readUint(config_data, ".allocationManager.ALLOCATION_CONFIGURATION_DELAY")
+ );
+
+ executorMultisig = stdJson.readAddress(config_data, ".multisig_addresses.executorMultisig");
+ operationsMultisig = stdJson.readAddress(config_data, ".multisig_addresses.operationsMultisig");
+ pauserMultisig = stdJson.readAddress(config_data, ".multisig_addresses.pauserMultisig");
+
+ require(executorMultisig != address(0), "executorMultisig address not configured correctly!");
+ require(operationsMultisig != address(0), "operationsMultisig address not configured correctly!");
+
+ // START RECORDING TRANSACTIONS FOR DEPLOYMENT
+ vm.startBroadcast();
+
+ // deploy proxy admin for ability to upgrade proxy contracts
+ eigenLayerProxyAdmin = new ProxyAdmin();
+
+ //deploy pauser registry
+ {
+ address[] memory pausers = new address[](3);
+ pausers[0] = executorMultisig;
+ pausers[1] = operationsMultisig;
+ pausers[2] = pauserMultisig;
+ eigenLayerPauserReg = new PauserRegistry(pausers, executorMultisig);
+ }
+
+ /**
+ * First, deploy upgradeable proxy contracts that **will point** to the implementations. Since the implementation contracts are
+ * not yet deployed, we give these proxies an empty contract as the initial implementation, to act as if they have no code.
+ */
+ emptyContract = new EmptyContract();
+ delegation = DelegationManager(
+ address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
+ );
+ strategyManager = StrategyManager(
+ address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
+ );
+ avsDirectory = AVSDirectory(
+ address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
+ );
+ eigenPodManager = EigenPodManager(
+ address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
+ );
+ rewardsCoordinator = RewardsCoordinator(
+ address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
+ );
+ allocationManager = AllocationManager(
+ address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
+ );
+ strategyFactory = StrategyFactory(
+ address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
+ );
+ permissionController = PermissionController(
+ address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
+ );
+
+ // if on mainnet, use the ETH2 deposit contract address
+ if (chainId == 1) {
+ ethPOSDeposit = IETHPOSDeposit(0x00000000219ab540356cBB839Cbe05303d7705Fa);
+ // if not on mainnet, deploy a mock
+ } else {
+ ethPOSDeposit = IETHPOSDeposit(stdJson.readAddress(config_data, ".ethPOSDepositAddress"));
+ }
+ eigenPodImplementation = new EigenPod(
+ ethPOSDeposit,
+ eigenPodManager,
+ GOERLI_GENESIS_TIME
+ );
+
+ eigenPodBeacon = new UpgradeableBeacon(address(eigenPodImplementation));
+
+ // Second, deploy the *implementation* contracts, using the *proxy contracts* as inputs
+
+ delegationImplementation = new DelegationManager(strategyManager, eigenPodManager, allocationManager, eigenLayerPauserReg, permissionController, MIN_WITHDRAWAL_DELAY);
+ strategyManagerImplementation = new StrategyManager(delegation, eigenLayerPauserReg);
+ avsDirectoryImplementation = new AVSDirectory(delegation, eigenLayerPauserReg);
+ eigenPodManagerImplementation = new EigenPodManager(
+ ethPOSDeposit,
+ eigenPodBeacon,
+ delegation,
+ eigenLayerPauserReg
+ );
+ rewardsCoordinatorImplementation = new RewardsCoordinator(
+ delegation,
+ strategyManager,
+ allocationManager,
+ eigenLayerPauserReg,
+ permissionController,
+ REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS,
+ REWARDS_COORDINATOR_MAX_REWARDS_DURATION,
+ REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH,
+ REWARDS_COORDINATOR_MAX_FUTURE_LENGTH,
+ REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP
+ );
+ allocationManagerImplementation = new AllocationManager(delegation, eigenLayerPauserReg, permissionController, DEALLOCATION_DELAY, ALLOCATION_CONFIGURATION_DELAY);
+ permissionControllerImplementation = new PermissionController();
+ strategyFactoryImplementation = new StrategyFactory(strategyManager, eigenLayerPauserReg);
+
+ // Third, upgrade the proxy contracts to use the correct implementation contracts and initialize them.
+ {
+ eigenLayerProxyAdmin.upgradeAndCall(
+ ITransparentUpgradeableProxy(payable(address(delegation))),
+ address(delegationImplementation),
+ abi.encodeWithSelector(
+ DelegationManager.initialize.selector,
+ executorMultisig,
+ DELEGATION_INIT_PAUSED_STATUS
+ )
+ );
+ }
+ eigenLayerProxyAdmin.upgradeAndCall(
+ ITransparentUpgradeableProxy(payable(address(strategyManager))),
+ address(strategyManagerImplementation),
+ abi.encodeWithSelector(
+ StrategyManager.initialize.selector,
+ executorMultisig,
+ operationsMultisig,
+ STRATEGY_MANAGER_INIT_PAUSED_STATUS
+ )
+ );
+ eigenLayerProxyAdmin.upgradeAndCall(
+ ITransparentUpgradeableProxy(payable(address(avsDirectory))),
+ address(avsDirectoryImplementation),
+ abi.encodeWithSelector(AVSDirectory.initialize.selector, executorMultisig, eigenLayerPauserReg, 0)
+ );
+ eigenLayerProxyAdmin.upgradeAndCall(
+ ITransparentUpgradeableProxy(payable(address(eigenPodManager))),
+ address(eigenPodManagerImplementation),
+ abi.encodeWithSelector(
+ EigenPodManager.initialize.selector,
+ executorMultisig,
+ EIGENPOD_MANAGER_INIT_PAUSED_STATUS
+ )
+ );
+ eigenLayerProxyAdmin.upgradeAndCall(
+ ITransparentUpgradeableProxy(payable(address(rewardsCoordinator))),
+ address(rewardsCoordinatorImplementation),
+ abi.encodeWithSelector(
+ RewardsCoordinator.initialize.selector,
+ executorMultisig,
+ REWARDS_COORDINATOR_INIT_PAUSED_STATUS,
+ REWARDS_COORDINATOR_UPDATER,
+ REWARDS_COORDINATOR_ACTIVATION_DELAY,
+ REWARDS_COORDINATOR_GLOBAL_OPERATOR_COMMISSION_BIPS
+ )
+ );
+
+ eigenLayerProxyAdmin.upgradeAndCall(
+ ITransparentUpgradeableProxy(payable(address(allocationManager))),
+ address(allocationManagerImplementation),
+ abi.encodeWithSelector(
+ AllocationManager.initialize.selector,
+ executorMultisig,
+ ALLOCATION_MANAGER_INIT_PAUSED_STATUS
+ )
+ );
+
+ eigenLayerProxyAdmin.upgrade(
+ ITransparentUpgradeableProxy(payable(address(permissionController))),
+ address(permissionControllerImplementation)
+ );
+
+ // Deploy strategyFactory & base
+ // Create base strategy implementation
+ baseStrategyImplementation = new StrategyBase(strategyManager, eigenLayerPauserReg);
+
+ // Create a proxy beacon for base strategy implementation
+ strategyBeacon = new UpgradeableBeacon(address(baseStrategyImplementation));
+
+ // Strategy Factory, upgrade and initalized
+ eigenLayerProxyAdmin.upgradeAndCall(
+ ITransparentUpgradeableProxy(payable(address(strategyFactory))),
+ address(strategyFactoryImplementation),
+ abi.encodeWithSelector(
+ StrategyFactory.initialize.selector,
+ executorMultisig,
+ 0, // initial paused status
+ IBeacon(strategyBeacon)
+ )
+ );
+
+ // Set the strategyWhitelister to the factory
+ strategyManager.setStrategyWhitelister(address(strategyFactory));
+
+ // Deploy a WETH strategy
+ strategyFactory.deployNewStrategy(IERC20(address(0x94373a4919B3240D86eA41593D5eBa789FEF3848)));
+
+ // Transfer ownership
+ eigenLayerProxyAdmin.transferOwnership(executorMultisig);
+ eigenPodBeacon.transferOwnership(executorMultisig);
+
+ // STOP RECORDING TRANSACTIONS FOR DEPLOYMENT
+ vm.stopBroadcast();
+
+ // CHECK CORRECTNESS OF DEPLOYMENT
+ _verifyContractsPointAtOneAnother(
+ delegationImplementation,
+ strategyManagerImplementation,
+ eigenPodManagerImplementation,
+ rewardsCoordinatorImplementation,
+ allocationManagerImplementation
+ );
+ _verifyContractsPointAtOneAnother(
+ delegation,
+ strategyManager,
+ eigenPodManager,
+ rewardsCoordinator,
+ allocationManager
+ );
+ _verifyImplementationsSetCorrectly();
+ _verifyInitialOwners();
+ _checkPauserInitializations();
+ _verifyInitializationParams();
+
+ // Check DM and AM have same withdrawa/deallocation delay
+ // TODO: Update after AllocationManager is converted to timestamps as well
+ // require(
+ // delegation.minWithdrawalDelayBlocks() == allocationManager.DEALLOCATION_DELAY(),
+ // "DelegationManager and AllocationManager have different withdrawal/deallocation delays"
+ // );
+ require(
+ allocationManager.DEALLOCATION_DELAY() == 1 days
+ );
+ require(
+ allocationManager.ALLOCATION_CONFIGURATION_DELAY() == 10 minutes
+ );
+
+ // WRITE JSON DATA
+ string memory parent_object = "parent object";
+
+ string memory deployed_strategies_output = "";
+
+ string memory deployed_addresses = "addresses";
+ vm.serializeUint(deployed_addresses, "numStrategiesDeployed", 0); // for compatibility with other scripts
+ vm.serializeAddress(deployed_addresses, "eigenLayerProxyAdmin", address(eigenLayerProxyAdmin));
+ vm.serializeAddress(deployed_addresses, "eigenLayerPauserReg", address(eigenLayerPauserReg));
+ vm.serializeAddress(deployed_addresses, "delegationManager", address(delegation));
+ vm.serializeAddress(deployed_addresses, "delegationManagerImplementation", address(delegationImplementation));
+ vm.serializeAddress(deployed_addresses, "avsDirectory", address(avsDirectory));
+ vm.serializeAddress(deployed_addresses, "avsDirectoryImplementation", address(avsDirectoryImplementation));
+ vm.serializeAddress(deployed_addresses, "allocationManager", address(allocationManager));
+ vm.serializeAddress(deployed_addresses, "allocationManagerImplementation", address(allocationManagerImplementation));
+ vm.serializeAddress(deployed_addresses, "permissionController", address(permissionController));
+ vm.serializeAddress(deployed_addresses, "permissionControllerImplementation", address(permissionControllerImplementation));
+ vm.serializeAddress(deployed_addresses, "strategyManager", address(strategyManager));
+ vm.serializeAddress(
+ deployed_addresses,
+ "strategyManagerImplementation",
+ address(strategyManagerImplementation)
+ );
+ vm.serializeAddress(
+ deployed_addresses, "strategyFactory", address(strategyFactory)
+ );
+ vm.serializeAddress(
+ deployed_addresses, "strategyFactoryImplementation", address(strategyFactoryImplementation)
+ );
+ vm.serializeAddress(deployed_addresses, "strategyBeacon", address(strategyBeacon));
+ vm.serializeAddress(deployed_addresses, "baseStrategyImplementation", address(baseStrategyImplementation));
+ vm.serializeAddress(deployed_addresses, "eigenPodManager", address(eigenPodManager));
+ vm.serializeAddress(
+ deployed_addresses,
+ "eigenPodManagerImplementation",
+ address(eigenPodManagerImplementation)
+ );
+ vm.serializeAddress(deployed_addresses, "rewardsCoordinator", address(rewardsCoordinator));
+ vm.serializeAddress(
+ deployed_addresses,
+ "rewardsCoordinatorImplementation",
+ address(rewardsCoordinatorImplementation)
+ );
+ vm.serializeAddress(deployed_addresses, "eigenPodBeacon", address(eigenPodBeacon));
+ vm.serializeAddress(deployed_addresses, "eigenPodImplementation", address(eigenPodImplementation));
+ vm.serializeAddress(deployed_addresses, "emptyContract", address(emptyContract));
+
+ string memory deployed_addresses_output = vm.serializeString(
+ deployed_addresses,
+ "strategies",
+ deployed_strategies_output
+ );
+
+ {
+ // dummy token data
+ string memory token = '{"tokenProxyAdmin": "0x0000000000000000000000000000000000000000", "EIGEN": "0x0000000000000000000000000000000000000000","bEIGEN": "0x0000000000000000000000000000000000000000","EIGENImpl": "0x0000000000000000000000000000000000000000","bEIGENImpl": "0x0000000000000000000000000000000000000000","eigenStrategy": "0x0000000000000000000000000000000000000000","eigenStrategyImpl": "0x0000000000000000000000000000000000000000"}';
+ deployed_addresses_output = vm.serializeString(deployed_addresses, "token", token);
+ }
+
+ string memory parameters = "parameters";
+ vm.serializeAddress(parameters, "executorMultisig", executorMultisig);
+ vm.serializeAddress(parameters, "communityMultisig", operationsMultisig);
+ vm.serializeAddress(parameters, "pauserMultisig", pauserMultisig);
+ vm.serializeAddress(parameters, "timelock", address(0));
+ string memory parameters_output = vm.serializeAddress(parameters, "operationsMultisig", operationsMultisig);
+
+ string memory chain_info = "chainInfo";
+ vm.serializeUint(chain_info, "deploymentBlock", block.number);
+ string memory chain_info_output = vm.serializeUint(chain_info, "chainId", chainId);
+
+ // serialize all the data
+ vm.serializeString(parent_object, deployed_addresses, deployed_addresses_output);
+ vm.serializeString(parent_object, chain_info, chain_info_output);
+ string memory finalJson = vm.serializeString(parent_object, parameters, parameters_output);
+ // TODO: should output to different file depending on configFile passed to run()
+ // so that we don't override mainnet output by deploying to goerli for eg.
+ vm.writeJson(finalJson, "script/output/devnet/slashing_output.json");
+ }
+
+ function _verifyContractsPointAtOneAnother(
+ DelegationManager delegationContract,
+ StrategyManager strategyManagerContract,
+ EigenPodManager eigenPodManagerContract,
+ RewardsCoordinator rewardsCoordinatorContract,
+ AllocationManager allocationManagerContract
+ ) internal view {
+ require(
+ delegationContract.strategyManager() == strategyManager,
+ "delegation: strategyManager address not set correctly"
+ );
+
+ require(
+ strategyManagerContract.delegation() == delegation,
+ "strategyManager: delegation address not set correctly"
+ );
+ require(
+ eigenPodManagerContract.ethPOS() == ethPOSDeposit,
+ " eigenPodManager: ethPOSDeposit contract address not set correctly"
+ );
+ require(
+ eigenPodManagerContract.eigenPodBeacon() == eigenPodBeacon,
+ "eigenPodManager: eigenPodBeacon contract address not set correctly"
+ );
+
+ require(
+ rewardsCoordinatorContract.delegationManager() == delegation,
+ "rewardsCoordinator: delegation address not set correctly"
+ );
+ require(
+ rewardsCoordinatorContract.strategyManager() == strategyManager,
+ "rewardsCoordinator: strategyManager address not set correctly"
+ );
+ require(
+ delegationContract.allocationManager() == allocationManager,
+ "delegationManager: allocationManager address not set correctly"
+ );
+ require(
+ allocationManagerContract.delegation() == delegation,
+ "allocationManager: delegation address not set correctly"
+ );
+ }
+
+ function _verifyImplementationsSetCorrectly() internal view {
+ require(
+ eigenLayerProxyAdmin.getProxyImplementation(ITransparentUpgradeableProxy(payable(address(delegation)))) ==
+ address(delegationImplementation),
+ "delegation: implementation set incorrectly"
+ );
+ require(
+ eigenLayerProxyAdmin.getProxyImplementation(
+ ITransparentUpgradeableProxy(payable(address(strategyManager)))
+ ) == address(strategyManagerImplementation),
+ "strategyManager: implementation set incorrectly"
+ );
+ require(
+ eigenLayerProxyAdmin.getProxyImplementation(
+ ITransparentUpgradeableProxy(payable(address(eigenPodManager)))
+ ) == address(eigenPodManagerImplementation),
+ "eigenPodManager: implementation set incorrectly"
+ );
+ require(
+ eigenLayerProxyAdmin.getProxyImplementation(
+ ITransparentUpgradeableProxy(payable(address(rewardsCoordinator)))
+ ) == address(rewardsCoordinatorImplementation),
+ "rewardsCoordinator: implementation set incorrectly"
+ );
+
+ require(
+ eigenLayerProxyAdmin.getProxyImplementation(
+ ITransparentUpgradeableProxy(payable(address(allocationManager)))
+ ) == address(allocationManagerImplementation),
+ "allocationManager: implementation set incorrectly"
+ );
+
+ require(
+ eigenLayerProxyAdmin.getProxyImplementation(
+ ITransparentUpgradeableProxy(payable(address(strategyFactory)))
+ ) == address(strategyFactoryImplementation),
+ "strategyFactory: implementation set incorrectly"
+ );
+
+ require(
+ eigenPodBeacon.implementation() == address(eigenPodImplementation),
+ "eigenPodBeacon: implementation set incorrectly"
+ );
+
+ require(
+ strategyBeacon.implementation() == address(baseStrategyImplementation),
+ "strategyBeacon: implementation set incorrectly"
+ );
+ }
+
+ function _verifyInitialOwners() internal view {
+ require(strategyManager.owner() == executorMultisig, "strategyManager: owner not set correctly");
+ require(delegation.owner() == executorMultisig, "delegation: owner not set correctly");
+ require(eigenPodManager.owner() == executorMultisig, "eigenPodManager: owner not set correctly");
+ require(allocationManager.owner() == executorMultisig, "allocationManager: owner not set correctly");
+ require(eigenLayerProxyAdmin.owner() == executorMultisig, "eigenLayerProxyAdmin: owner not set correctly");
+ require(eigenPodBeacon.owner() == executorMultisig, "eigenPodBeacon: owner not set correctly");
+ require(strategyBeacon.owner() == executorMultisig, "strategyBeacon: owner not set correctly");
+ }
+
+ function _checkPauserInitializations() internal view {
+ require(delegation.pauserRegistry() == eigenLayerPauserReg, "delegation: pauser registry not set correctly");
+ require(
+ strategyManager.pauserRegistry() == eigenLayerPauserReg,
+ "strategyManager: pauser registry not set correctly"
+ );
+ require(
+ eigenPodManager.pauserRegistry() == eigenLayerPauserReg,
+ "eigenPodManager: pauser registry not set correctly"
+ );
+ require(
+ rewardsCoordinator.pauserRegistry() == eigenLayerPauserReg,
+ "rewardsCoordinator: pauser registry not set correctly"
+ );
+ require(
+ allocationManager.pauserRegistry() == eigenLayerPauserReg,
+ "allocationManager: pauser registry not set correctly"
+ );
+
+ require(eigenLayerPauserReg.isPauser(operationsMultisig), "pauserRegistry: operationsMultisig is not pauser");
+ require(eigenLayerPauserReg.isPauser(executorMultisig), "pauserRegistry: executorMultisig is not pauser");
+ require(eigenLayerPauserReg.isPauser(pauserMultisig), "pauserRegistry: pauserMultisig is not pauser");
+ require(eigenLayerPauserReg.unpauser() == executorMultisig, "pauserRegistry: unpauser not set correctly");
+
+ for (uint256 i = 0; i < deployedStrategyArray.length; ++i) {
+ require(
+ deployedStrategyArray[i].pauserRegistry() == eigenLayerPauserReg,
+ "StrategyBaseTVLLimits: pauser registry not set correctly"
+ );
+ require(
+ deployedStrategyArray[i].paused() == 0,
+ "StrategyBaseTVLLimits: init paused status set incorrectly"
+ );
+ }
+
+ // // pause *nothing*
+ // uint256 STRATEGY_MANAGER_INIT_PAUSED_STATUS = 0;
+ // // pause *everything*
+ // // pause *everything*
+ // uint256 DELEGATION_INIT_PAUSED_STATUS = type(uint256).max;
+ // // pause *all of the proof-related functionality* (everything that can be paused other than creation of EigenPods)
+ // uint256 EIGENPOD_MANAGER_INIT_PAUSED_STATUS = (2**1) + (2**2) + (2**3) + (2**4); /* = 30 */
+ // // pause *nothing*
+ // require(strategyManager.paused() == 0, "strategyManager: init paused status set incorrectly");
+ // require(delegation.paused() == type(uint256).max, "delegation: init paused status set incorrectly");
+ // require(eigenPodManager.paused() == 30, "eigenPodManager: init paused status set incorrectly");
+ }
+
+ function _verifyInitializationParams() internal view {
+ // // one week in blocks -- 50400
+ // uint32 STRATEGY_MANAGER_INIT_WITHDRAWAL_DELAY_BLOCKS = 7 days / 12 seconds;
+ // require(strategyManager.withdrawalDelayBlocks() == 7 days / 12 seconds,
+ // "strategyManager: withdrawalDelayBlocks initialized incorrectly");
+ // uint256 MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR = 32 ether;
+
+ require(
+ address(strategyManager.strategyWhitelister()) == address(strategyFactory),
+ "strategyManager: strategyWhitelister address not set correctly"
+ );
+
+ require(
+ baseStrategyImplementation.strategyManager() == strategyManager,
+ "baseStrategyImplementation: strategyManager set incorrectly"
+ );
+
+ require(
+ eigenPodImplementation.ethPOS() == ethPOSDeposit,
+ "eigenPodImplementation: ethPOSDeposit contract address not set correctly"
+ );
+ require(
+ eigenPodImplementation.eigenPodManager() == eigenPodManager,
+ " eigenPodImplementation: eigenPodManager contract address not set correctly"
+ );
+ }
+}
diff --git a/script/deploy/local/Deploy_From_Scratch.s.sol b/script/deploy/local/Deploy_From_Scratch.s.sol
index 24cd2b85fe..8987c680e4 100644
--- a/script/deploy/local/Deploy_From_Scratch.s.sol
+++ b/script/deploy/local/Deploy_From_Scratch.s.sol
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BUSL-1.1
-pragma solidity ^0.8.12;
+pragma solidity ^0.8.27;
import "@openzeppelin/contracts/token/ERC20/presets/ERC20PresetFixedSupply.sol";
import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
@@ -9,10 +9,11 @@ import "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol";
import "../../../src/contracts/interfaces/IETHPOSDeposit.sol";
import "../../../src/contracts/core/StrategyManager.sol";
-import "../../../src/contracts/core/Slasher.sol";
import "../../../src/contracts/core/DelegationManager.sol";
import "../../../src/contracts/core/AVSDirectory.sol";
import "../../../src/contracts/core/RewardsCoordinator.sol";
+import "../../../src/contracts/core/AllocationManager.sol";
+import "../../../src/contracts/permissions/PermissionController.sol";
import "../../../src/contracts/strategies/StrategyBaseTVLLimits.sol";
@@ -31,7 +32,7 @@ import "forge-std/Test.sol";
// source .env
// # To deploy and verify our contract
-// RUST_LOG=forge,foundry=trace forge script script/deploy/local/Deploy_From_Scratch.s.sol --rpc-url $RPC_URL --private-key $PRIVATE_KEY --broadcast --sig "run(string memory configFile)" -- local/deploy_from_scratch.anvil.config.json
+// forge script script/deploy/local/Deploy_From_Scratch.s.sol --rpc-url $RPC_URL --private-key $PRIVATE_KEY --broadcast --sig "run(string memory configFile)" -- local/deploy_from_scratch.anvil.config.json
contract DeployFromScratch is Script, Test {
Vm cheats = Vm(VM_ADDRESS);
@@ -48,8 +49,6 @@ contract DeployFromScratch is Script, Test {
// EigenLayer Contracts
ProxyAdmin public eigenLayerProxyAdmin;
PauserRegistry public eigenLayerPauserReg;
- Slasher public slasher;
- Slasher public slasherImplementation;
DelegationManager public delegation;
DelegationManager public delegationImplementation;
StrategyManager public strategyManager;
@@ -63,6 +62,10 @@ contract DeployFromScratch is Script, Test {
UpgradeableBeacon public eigenPodBeacon;
EigenPod public eigenPodImplementation;
StrategyBase public baseStrategyImplementation;
+ AllocationManager public allocationManagerImplementation;
+ AllocationManager public allocationManager;
+ PermissionController public permissionController;
+ PermissionController public permissionControllerImplementation;
EmptyContract public emptyContract;
@@ -81,11 +84,17 @@ contract DeployFromScratch is Script, Test {
// OTHER DEPLOYMENT PARAMETERS
uint256 STRATEGY_MANAGER_INIT_PAUSED_STATUS;
- uint256 SLASHER_INIT_PAUSED_STATUS;
uint256 DELEGATION_INIT_PAUSED_STATUS;
uint256 EIGENPOD_MANAGER_INIT_PAUSED_STATUS;
uint256 REWARDS_COORDINATOR_INIT_PAUSED_STATUS;
+ // DelegationManager
+ uint32 MIN_WITHDRAWAL_DELAY;
+
+ // AllocationManager
+ uint32 DEALLOCATION_DELAY;
+ uint32 ALLOCATION_CONFIGURATION_DELAY;
+
// RewardsCoordinator
uint32 REWARDS_COORDINATOR_MAX_REWARDS_DURATION;
uint32 REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH;
@@ -98,6 +107,9 @@ contract DeployFromScratch is Script, Test {
uint32 REWARDS_COORDINATOR_OPERATOR_SET_GENESIS_REWARDS_TIMESTAMP;
uint32 REWARDS_COORDINATOR_OPERATOR_SET_MAX_RETROACTIVE_LENGTH;
+ // AllocationManager
+ uint256 ALLOCATION_MANAGER_INIT_PAUSED_STATUS;
+
// one week in blocks -- 50400
uint32 STRATEGY_MANAGER_INIT_WITHDRAWAL_DELAY_BLOCKS;
uint256 DELEGATION_WITHDRAWAL_DELAY_BLOCKS;
@@ -113,7 +125,6 @@ contract DeployFromScratch is Script, Test {
// bytes memory parsedData = vm.parseJson(config_data);
STRATEGY_MANAGER_INIT_PAUSED_STATUS = stdJson.readUint(config_data, ".strategyManager.init_paused_status");
- SLASHER_INIT_PAUSED_STATUS = stdJson.readUint(config_data, ".slasher.init_paused_status");
DELEGATION_INIT_PAUSED_STATUS = stdJson.readUint(config_data, ".delegation.init_paused_status");
DELEGATION_WITHDRAWAL_DELAY_BLOCKS = stdJson.readUint(config_data, ".delegation.init_withdrawal_delay_blocks");
EIGENPOD_MANAGER_INIT_PAUSED_STATUS = stdJson.readUint(config_data, ".eigenPodManager.init_paused_status");
@@ -157,6 +168,16 @@ contract DeployFromScratch is Script, Test {
stdJson.readUint(config_data, ".strategyManager.init_withdrawal_delay_blocks")
);
+ ALLOCATION_MANAGER_INIT_PAUSED_STATUS = uint32(
+ stdJson.readUint(config_data, ".allocationManager.init_paused_status")
+ );
+ DEALLOCATION_DELAY = uint32(
+ stdJson.readUint(config_data, ".allocationManager.DEALLOCATION_DELAY")
+ );
+ ALLOCATION_CONFIGURATION_DELAY = uint32(
+ stdJson.readUint(config_data, ".allocationManager.ALLOCATION_CONFIGURATION_DELAY")
+ );
+
// tokens to deploy strategies for
StrategyConfig[] memory strategyConfigs;
@@ -199,15 +220,18 @@ contract DeployFromScratch is Script, Test {
avsDirectory = AVSDirectory(
address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
);
- slasher = Slasher(
- address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
- );
eigenPodManager = EigenPodManager(
address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
);
rewardsCoordinator = RewardsCoordinator(
address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
);
+ allocationManager = AllocationManager(
+ address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
+ );
+ permissionController = PermissionController(
+ address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
+ );
// if on mainnet, use the ETH2 deposit contract address
if (chainId == 1) {
@@ -221,38 +245,41 @@ contract DeployFromScratch is Script, Test {
eigenPodBeacon = new UpgradeableBeacon(address(eigenPodImplementation));
// Second, deploy the *implementation* contracts, using the *proxy contracts* as inputs
- delegationImplementation = new DelegationManager(strategyManager, slasher, eigenPodManager);
- strategyManagerImplementation = new StrategyManager(delegation, eigenPodManager, slasher);
- avsDirectoryImplementation = new AVSDirectory(delegation);
- slasherImplementation = new Slasher(strategyManager, delegation);
+
+ delegationImplementation = new DelegationManager(strategyManager, eigenPodManager, allocationManager, eigenLayerPauserReg, permissionController, MIN_WITHDRAWAL_DELAY);
+ strategyManagerImplementation = new StrategyManager(delegation, eigenLayerPauserReg);
+ avsDirectoryImplementation = new AVSDirectory(delegation, eigenLayerPauserReg);
eigenPodManagerImplementation = new EigenPodManager(
ethPOSDeposit,
eigenPodBeacon,
- strategyManager,
- slasher,
- delegation
+ delegation,
+ eigenLayerPauserReg
);
rewardsCoordinatorImplementation = new RewardsCoordinator(
delegation,
strategyManager,
+ allocationManager,
+ eigenLayerPauserReg,
+ permissionController,
REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS,
REWARDS_COORDINATOR_MAX_REWARDS_DURATION,
REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH,
REWARDS_COORDINATOR_MAX_FUTURE_LENGTH,
REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP
);
+ allocationManagerImplementation = new AllocationManager(delegation, eigenLayerPauserReg, permissionController, DEALLOCATION_DELAY, ALLOCATION_CONFIGURATION_DELAY);
+ permissionControllerImplementation = new PermissionController();
// Third, upgrade the proxy contracts to use the correct implementation contracts and initialize them.
{
IStrategy[] memory _strategies;
uint256[] memory _withdrawalDelayBlocks;
eigenLayerProxyAdmin.upgradeAndCall(
- TransparentUpgradeableProxy(payable(address(delegation))),
+ ITransparentUpgradeableProxy(payable(address(delegation))),
address(delegationImplementation),
abi.encodeWithSelector(
DelegationManager.initialize.selector,
executorMultisig,
- eigenLayerPauserReg,
DELEGATION_INIT_PAUSED_STATUS,
DELEGATION_WITHDRAWAL_DELAY_BLOCKS,
_strategies,
@@ -261,48 +288,35 @@ contract DeployFromScratch is Script, Test {
);
}
eigenLayerProxyAdmin.upgradeAndCall(
- TransparentUpgradeableProxy(payable(address(strategyManager))),
+ ITransparentUpgradeableProxy(payable(address(strategyManager))),
address(strategyManagerImplementation),
abi.encodeWithSelector(
StrategyManager.initialize.selector,
executorMultisig,
operationsMultisig,
- eigenLayerPauserReg,
STRATEGY_MANAGER_INIT_PAUSED_STATUS
)
);
eigenLayerProxyAdmin.upgradeAndCall(
- TransparentUpgradeableProxy(payable(address(slasher))),
- address(slasherImplementation),
- abi.encodeWithSelector(
- Slasher.initialize.selector,
- executorMultisig,
- eigenLayerPauserReg,
- SLASHER_INIT_PAUSED_STATUS
- )
- );
- eigenLayerProxyAdmin.upgradeAndCall(
- TransparentUpgradeableProxy(payable(address(avsDirectory))),
+ ITransparentUpgradeableProxy(payable(address(avsDirectory))),
address(avsDirectoryImplementation),
- abi.encodeWithSelector(AVSDirectory.initialize.selector, executorMultisig, eigenLayerPauserReg, 0)
+ abi.encodeWithSelector(AVSDirectory.initialize.selector, executorMultisig, 0)
);
eigenLayerProxyAdmin.upgradeAndCall(
- TransparentUpgradeableProxy(payable(address(eigenPodManager))),
+ ITransparentUpgradeableProxy(payable(address(eigenPodManager))),
address(eigenPodManagerImplementation),
abi.encodeWithSelector(
EigenPodManager.initialize.selector,
executorMultisig,
- eigenLayerPauserReg,
EIGENPOD_MANAGER_INIT_PAUSED_STATUS
)
);
eigenLayerProxyAdmin.upgradeAndCall(
- TransparentUpgradeableProxy(payable(address(rewardsCoordinator))),
+ ITransparentUpgradeableProxy(payable(address(rewardsCoordinator))),
address(rewardsCoordinatorImplementation),
abi.encodeWithSelector(
RewardsCoordinator.initialize.selector,
executorMultisig,
- eigenLayerPauserReg,
REWARDS_COORDINATOR_INIT_PAUSED_STATUS,
REWARDS_COORDINATOR_UPDATER,
REWARDS_COORDINATOR_ACTIVATION_DELAY,
@@ -310,8 +324,23 @@ contract DeployFromScratch is Script, Test {
)
);
+ eigenLayerProxyAdmin.upgradeAndCall(
+ ITransparentUpgradeableProxy(payable(address(allocationManager))),
+ address(allocationManagerImplementation),
+ abi.encodeWithSelector(
+ AllocationManager.initialize.selector,
+ executorMultisig,
+ ALLOCATION_MANAGER_INIT_PAUSED_STATUS
+ )
+ );
+
+ eigenLayerProxyAdmin.upgrade(
+ ITransparentUpgradeableProxy(payable(address(permissionController))),
+ address(permissionControllerImplementation)
+ );
+
// deploy StrategyBaseTVLLimits contract implementation
- baseStrategyImplementation = new StrategyBaseTVLLimits(strategyManager);
+ baseStrategyImplementation = new StrategyBaseTVLLimits(strategyManager, eigenLayerPauserReg);
// create upgradeable proxies that each point to the implementation and initialize them
for (uint256 i = 0; i < strategyConfigs.length; ++i) {
if (strategyConfigs[i].tokenAddress == address(0)) {
@@ -329,8 +358,7 @@ contract DeployFromScratch is Script, Test {
StrategyBaseTVLLimits.initialize.selector,
strategyConfigs[i].maxPerDeposit,
strategyConfigs[i].maxDeposits,
- IERC20(strategyConfigs[i].tokenAddress),
- eigenLayerPauserReg
+ IERC20(strategyConfigs[i].tokenAddress)
)
)
)
@@ -338,9 +366,11 @@ contract DeployFromScratch is Script, Test {
);
}
+ // Transfer ownership
eigenLayerProxyAdmin.transferOwnership(executorMultisig);
eigenPodBeacon.transferOwnership(executorMultisig);
+
// STOP RECORDING TRANSACTIONS FOR DEPLOYMENT
vm.stopBroadcast();
@@ -348,11 +378,15 @@ contract DeployFromScratch is Script, Test {
_verifyContractsPointAtOneAnother(
delegationImplementation,
strategyManagerImplementation,
- slasherImplementation,
eigenPodManagerImplementation,
rewardsCoordinatorImplementation
);
- _verifyContractsPointAtOneAnother(delegation, strategyManager, slasher, eigenPodManager, rewardsCoordinator);
+ _verifyContractsPointAtOneAnother(
+ delegation,
+ strategyManager,
+ eigenPodManager,
+ rewardsCoordinator
+ );
_verifyImplementationsSetCorrectly();
_verifyInitialOwners();
_checkPauserInitializations();
@@ -377,12 +411,14 @@ contract DeployFromScratch is Script, Test {
vm.serializeUint(deployed_addresses, "numStrategiesDeployed", 0); // for compatibility with other scripts
vm.serializeAddress(deployed_addresses, "eigenLayerProxyAdmin", address(eigenLayerProxyAdmin));
vm.serializeAddress(deployed_addresses, "eigenLayerPauserReg", address(eigenLayerPauserReg));
- vm.serializeAddress(deployed_addresses, "slasher", address(slasher));
- vm.serializeAddress(deployed_addresses, "slasherImplementation", address(slasherImplementation));
vm.serializeAddress(deployed_addresses, "delegationManager", address(delegation));
vm.serializeAddress(deployed_addresses, "delegationManagerImplementation", address(delegationImplementation));
vm.serializeAddress(deployed_addresses, "avsDirectory", address(avsDirectory));
vm.serializeAddress(deployed_addresses, "avsDirectoryImplementation", address(avsDirectoryImplementation));
+ vm.serializeAddress(deployed_addresses, "allocationManager", address(allocationManager));
+ vm.serializeAddress(deployed_addresses, "allocationManagerImplementation", address(allocationManagerImplementation));
+ vm.serializeAddress(deployed_addresses, "permissionController", address(permissionController));
+ vm.serializeAddress(deployed_addresses, "permissionControllerImplementation", address(permissionControllerImplementation));
vm.serializeAddress(deployed_addresses, "strategyManager", address(strategyManager));
vm.serializeAddress(
deployed_addresses,
@@ -436,42 +472,24 @@ contract DeployFromScratch is Script, Test {
string memory finalJson = vm.serializeString(parent_object, parameters, parameters_output);
// TODO: should output to different file depending on configFile passed to run()
// so that we don't override mainnet output by deploying to goerli for eg.
- vm.writeJson(finalJson, "script/output/devnet/local_from_scratch_deployment_data.json");
-
- // generate + write eigenpods to file
- address podAddress = eigenPodManager.createPod();
- string memory eigenpodStruct = "eigenpodStruct";
- string memory json = vm.serializeAddress(eigenpodStruct, "podAddress", podAddress);
- vm.writeJson(json, "script/output/eigenpods.json");
+ vm.writeJson(finalJson, "script/output/devnet/M2_from_scratch_deployment_data.json");
}
function _verifyContractsPointAtOneAnother(
DelegationManager delegationContract,
StrategyManager strategyManagerContract,
- Slasher /*slasherContract*/,
EigenPodManager eigenPodManagerContract,
RewardsCoordinator rewardsCoordinatorContract
) internal view {
- require(delegationContract.slasher() == slasher, "delegation: slasher address not set correctly");
require(
delegationContract.strategyManager() == strategyManager,
"delegation: strategyManager address not set correctly"
);
- require(strategyManagerContract.slasher() == slasher, "strategyManager: slasher address not set correctly");
require(
strategyManagerContract.delegation() == delegation,
"strategyManager: delegation address not set correctly"
);
- require(
- strategyManagerContract.eigenPodManager() == eigenPodManager,
- "strategyManager: eigenPodManager address not set correctly"
- );
-
- // removing slasher requirements because there is no slasher as part of m2-mainnet release
- // require(slasherContract.strategyManager() == strategyManager, "slasher: strategyManager not set correctly");
- // require(slasherContract.delegation() == delegation, "slasher: delegation not set correctly");
-
require(
eigenPodManagerContract.ethPOS() == ethPOSDeposit,
" eigenPodManager: ethPOSDeposit contract address not set correctly"
@@ -480,14 +498,6 @@ contract DeployFromScratch is Script, Test {
eigenPodManagerContract.eigenPodBeacon() == eigenPodBeacon,
"eigenPodManager: eigenPodBeacon contract address not set correctly"
);
- require(
- eigenPodManagerContract.strategyManager() == strategyManager,
- "eigenPodManager: strategyManager contract address not set correctly"
- );
- require(
- eigenPodManagerContract.slasher() == slasher,
- "eigenPodManager: slasher contract address not set correctly"
- );
require(
rewardsCoordinatorContract.delegationManager() == delegation,
@@ -502,38 +512,40 @@ contract DeployFromScratch is Script, Test {
function _verifyImplementationsSetCorrectly() internal view {
require(
- eigenLayerProxyAdmin.getProxyImplementation(TransparentUpgradeableProxy(payable(address(delegation)))) ==
+ eigenLayerProxyAdmin.getProxyImplementation(ITransparentUpgradeableProxy(payable(address(delegation)))) ==
address(delegationImplementation),
"delegation: implementation set incorrectly"
);
require(
eigenLayerProxyAdmin.getProxyImplementation(
- TransparentUpgradeableProxy(payable(address(strategyManager)))
+ ITransparentUpgradeableProxy(payable(address(strategyManager)))
) == address(strategyManagerImplementation),
"strategyManager: implementation set incorrectly"
);
- require(
- eigenLayerProxyAdmin.getProxyImplementation(TransparentUpgradeableProxy(payable(address(slasher)))) ==
- address(slasherImplementation),
- "slasher: implementation set incorrectly"
- );
require(
eigenLayerProxyAdmin.getProxyImplementation(
- TransparentUpgradeableProxy(payable(address(eigenPodManager)))
+ ITransparentUpgradeableProxy(payable(address(eigenPodManager)))
) == address(eigenPodManagerImplementation),
"eigenPodManager: implementation set incorrectly"
);
require(
eigenLayerProxyAdmin.getProxyImplementation(
- TransparentUpgradeableProxy(payable(address(rewardsCoordinator)))
+ ITransparentUpgradeableProxy(payable(address(rewardsCoordinator)))
) == address(rewardsCoordinatorImplementation),
"rewardsCoordinator: implementation set incorrectly"
);
+ require(
+ eigenLayerProxyAdmin.getProxyImplementation(
+ ITransparentUpgradeableProxy(payable(address(allocationManager)))
+ ) == address(allocationManagerImplementation),
+ "allocationManager: implementation set incorrectly"
+ );
+
for (uint256 i = 0; i < deployedStrategyArray.length; ++i) {
require(
eigenLayerProxyAdmin.getProxyImplementation(
- TransparentUpgradeableProxy(payable(address(deployedStrategyArray[i])))
+ ITransparentUpgradeableProxy(payable(address(deployedStrategyArray[i])))
) == address(baseStrategyImplementation),
"strategy: implementation set incorrectly"
);
@@ -548,8 +560,6 @@ contract DeployFromScratch is Script, Test {
function _verifyInitialOwners() internal view {
require(strategyManager.owner() == executorMultisig, "strategyManager: owner not set correctly");
require(delegation.owner() == executorMultisig, "delegation: owner not set correctly");
- // removing slasher requirements because there is no slasher as part of m2-mainnet release
- // require(slasher.owner() == executorMultisig, "slasher: owner not set correctly");
require(eigenPodManager.owner() == executorMultisig, "eigenPodManager: owner not set correctly");
require(eigenLayerProxyAdmin.owner() == executorMultisig, "eigenLayerProxyAdmin: owner not set correctly");
@@ -562,8 +572,6 @@ contract DeployFromScratch is Script, Test {
strategyManager.pauserRegistry() == eigenLayerPauserReg,
"strategyManager: pauser registry not set correctly"
);
- // removing slasher requirements because there is no slasher as part of m2-mainnet release
- // require(slasher.pauserRegistry() == eigenLayerPauserReg, "slasher: pauser registry not set correctly");
require(
eigenPodManager.pauserRegistry() == eigenLayerPauserReg,
"eigenPodManager: pauser registry not set correctly"
@@ -592,19 +600,17 @@ contract DeployFromScratch is Script, Test {
// // pause *nothing*
// uint256 STRATEGY_MANAGER_INIT_PAUSED_STATUS = 0;
// // pause *everything*
- // uint256 SLASHER_INIT_PAUSED_STATUS = type(uint256).max;
// // pause *everything*
// uint256 DELEGATION_INIT_PAUSED_STATUS = type(uint256).max;
// // pause *all of the proof-related functionality* (everything that can be paused other than creation of EigenPods)
// uint256 EIGENPOD_MANAGER_INIT_PAUSED_STATUS = (2**1) + (2**2) + (2**3) + (2**4); /* = 30 */
// // pause *nothing*
// require(strategyManager.paused() == 0, "strategyManager: init paused status set incorrectly");
- // require(slasher.paused() == type(uint256).max, "slasher: init paused status set incorrectly");
// require(delegation.paused() == type(uint256).max, "delegation: init paused status set incorrectly");
// require(eigenPodManager.paused() == 30, "eigenPodManager: init paused status set incorrectly");
}
- function _verifyInitializationParams() internal {
+ function _verifyInitializationParams() internal view {
// // one week in blocks -- 50400
// uint32 STRATEGY_MANAGER_INIT_WITHDRAWAL_DELAY_BLOCKS = 7 days / 12 seconds;
// require(strategyManager.withdrawalDelayBlocks() == 7 days / 12 seconds,
diff --git a/script/deploy/local/deploy_from_scratch.slashing.s.sol b/script/deploy/local/deploy_from_scratch.slashing.s.sol
new file mode 100644
index 0000000000..38ba01b7de
--- /dev/null
+++ b/script/deploy/local/deploy_from_scratch.slashing.s.sol
@@ -0,0 +1,653 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.27;
+
+import "@openzeppelin/contracts/token/ERC20/presets/ERC20PresetFixedSupply.sol";
+import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
+import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
+import "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol";
+
+import "../../../src/contracts/interfaces/IETHPOSDeposit.sol";
+
+import "../../../src/contracts/core/StrategyManager.sol";
+import "../../../src/contracts/core/DelegationManager.sol";
+import "../../../src/contracts/core/AVSDirectory.sol";
+import "../../../src/contracts/core/RewardsCoordinator.sol";
+import "../../../src/contracts/core/AllocationManager.sol";
+import "../../../src/contracts/permissions/PermissionController.sol";
+
+import "../../../src/contracts/strategies/StrategyBaseTVLLimits.sol";
+
+import "../../../src/contracts/pods/EigenPod.sol";
+import "../../../src/contracts/pods/EigenPodManager.sol";
+
+import "../../../src/contracts/permissions/PauserRegistry.sol";
+
+import "../../../src/test/mocks/EmptyContract.sol";
+import "../../../src/test/mocks/ETHDepositMock.sol";
+
+import "forge-std/Script.sol";
+import "forge-std/Test.sol";
+
+// # To load the variables in the .env file
+// source .env
+
+// # To deploy and verify our contract
+// forge script script/deploy/local/deploy_from_scratch.slashing.s.sol --rpc-url $RPC_URL --private-key $PRIVATE_KEY --broadcast --sig "run(string memory configFile)" -- local/deploy_from_scratch.slashing.anvil.config.json
+contract DeployFromScratch is Script, Test {
+ Vm cheats = Vm(VM_ADDRESS);
+
+ // struct used to encode token info in config file
+ struct StrategyConfig {
+ uint256 maxDeposits;
+ uint256 maxPerDeposit;
+ address tokenAddress;
+ string tokenSymbol;
+ }
+
+ string public deployConfigPath;
+
+ // EigenLayer Contracts
+ ProxyAdmin public eigenLayerProxyAdmin;
+ PauserRegistry public eigenLayerPauserReg;
+ DelegationManager public delegation;
+ DelegationManager public delegationImplementation;
+ StrategyManager public strategyManager;
+ StrategyManager public strategyManagerImplementation;
+ RewardsCoordinator public rewardsCoordinator;
+ RewardsCoordinator public rewardsCoordinatorImplementation;
+ AVSDirectory public avsDirectory;
+ AVSDirectory public avsDirectoryImplementation;
+ EigenPodManager public eigenPodManager;
+ EigenPodManager public eigenPodManagerImplementation;
+ UpgradeableBeacon public eigenPodBeacon;
+ EigenPod public eigenPodImplementation;
+ StrategyBase public baseStrategyImplementation;
+ AllocationManager public allocationManagerImplementation;
+ AllocationManager public allocationManager;
+ PermissionController public permissionControllerImplementation;
+ PermissionController public permissionController;
+
+ EmptyContract public emptyContract;
+
+ address executorMultisig;
+ address operationsMultisig;
+ address pauserMultisig;
+
+ // the ETH2 deposit contract -- if not on mainnet, we deploy a mock as stand-in
+ IETHPOSDeposit public ethPOSDeposit;
+
+ // strategies deployed
+ StrategyBaseTVLLimits[] public deployedStrategyArray;
+
+ // IMMUTABLES TO SET
+ uint64 GOERLI_GENESIS_TIME = 1616508000;
+
+ // OTHER DEPLOYMENT PARAMETERS
+ uint256 STRATEGY_MANAGER_INIT_PAUSED_STATUS;
+ uint256 DELEGATION_INIT_PAUSED_STATUS;
+ uint256 EIGENPOD_MANAGER_INIT_PAUSED_STATUS;
+ uint256 REWARDS_COORDINATOR_INIT_PAUSED_STATUS;
+
+ // DelegationManager
+ uint32 MIN_WITHDRAWAL_DELAY;
+
+ // AllocationManager
+ uint32 DEALLOCATION_DELAY;
+ uint32 ALLOCATION_CONFIGURATION_DELAY;
+
+ // RewardsCoordinator
+ uint32 REWARDS_COORDINATOR_MAX_REWARDS_DURATION;
+ uint32 REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH;
+ uint32 REWARDS_COORDINATOR_MAX_FUTURE_LENGTH;
+ uint32 REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP;
+ address REWARDS_COORDINATOR_UPDATER;
+ uint32 REWARDS_COORDINATOR_ACTIVATION_DELAY;
+ uint32 REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS;
+ uint32 REWARDS_COORDINATOR_GLOBAL_OPERATOR_COMMISSION_BIPS;
+ uint32 REWARDS_COORDINATOR_OPERATOR_SET_GENESIS_REWARDS_TIMESTAMP;
+ uint32 REWARDS_COORDINATOR_OPERATOR_SET_MAX_RETROACTIVE_LENGTH;
+
+ // AllocationManager
+ uint256 ALLOCATION_MANAGER_INIT_PAUSED_STATUS;
+
+ // one week in blocks -- 50400
+ uint32 STRATEGY_MANAGER_INIT_WITHDRAWAL_DELAY_BLOCKS;
+ uint256 DELEGATION_WITHDRAWAL_DELAY_BLOCKS;
+
+ function run(string memory configFileName) public {
+ // read and log the chainID
+ uint256 chainId = block.chainid;
+ emit log_named_uint("You are deploying on ChainID", chainId);
+
+ // READ JSON CONFIG DATA
+ deployConfigPath = string(bytes(string.concat("script/configs/", configFileName)));
+ string memory config_data = vm.readFile(deployConfigPath);
+ // bytes memory parsedData = vm.parseJson(config_data);
+
+ MIN_WITHDRAWAL_DELAY = uint32(stdJson.readUint(config_data, ".delegation.withdrawal_delay_blocks"));
+ STRATEGY_MANAGER_INIT_PAUSED_STATUS = stdJson.readUint(config_data, ".strategyManager.init_paused_status");
+ DELEGATION_INIT_PAUSED_STATUS = stdJson.readUint(config_data, ".delegation.init_paused_status");
+ DELEGATION_WITHDRAWAL_DELAY_BLOCKS = stdJson.readUint(config_data, ".delegation.init_withdrawal_delay_blocks");
+ EIGENPOD_MANAGER_INIT_PAUSED_STATUS = stdJson.readUint(config_data, ".eigenPodManager.init_paused_status");
+ REWARDS_COORDINATOR_INIT_PAUSED_STATUS = stdJson.readUint(
+ config_data,
+ ".rewardsCoordinator.init_paused_status"
+ );
+ REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS = uint32(
+ stdJson.readUint(config_data, ".rewardsCoordinator.CALCULATION_INTERVAL_SECONDS")
+ );
+ REWARDS_COORDINATOR_MAX_REWARDS_DURATION = uint32(stdJson.readUint(config_data, ".rewardsCoordinator.MAX_REWARDS_DURATION"));
+ REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH = uint32(stdJson.readUint(config_data, ".rewardsCoordinator.MAX_RETROACTIVE_LENGTH"));
+ REWARDS_COORDINATOR_MAX_FUTURE_LENGTH = uint32(stdJson.readUint(config_data, ".rewardsCoordinator.MAX_FUTURE_LENGTH"));
+ REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP = uint32(stdJson.readUint(config_data, ".rewardsCoordinator.GENESIS_REWARDS_TIMESTAMP"));
+ REWARDS_COORDINATOR_UPDATER = stdJson.readAddress(config_data, ".rewardsCoordinator.rewards_updater_address");
+ REWARDS_COORDINATOR_ACTIVATION_DELAY = uint32(stdJson.readUint(config_data, ".rewardsCoordinator.activation_delay"));
+ REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS = uint32(
+ stdJson.readUint(config_data, ".rewardsCoordinator.calculation_interval_seconds")
+ );
+ REWARDS_COORDINATOR_GLOBAL_OPERATOR_COMMISSION_BIPS = uint32(
+ stdJson.readUint(config_data, ".rewardsCoordinator.global_operator_commission_bips")
+ );
+ REWARDS_COORDINATOR_OPERATOR_SET_GENESIS_REWARDS_TIMESTAMP = uint32(
+ stdJson.readUint(config_data, ".rewardsCoordinator.OPERATOR_SET_GENESIS_REWARDS_TIMESTAMP")
+ );
+ REWARDS_COORDINATOR_OPERATOR_SET_MAX_RETROACTIVE_LENGTH = uint32(
+ stdJson.readUint(config_data, ".rewardsCoordinator.OPERATOR_SET_MAX_RETROACTIVE_LENGTH")
+ );
+
+ STRATEGY_MANAGER_INIT_WITHDRAWAL_DELAY_BLOCKS = uint32(
+ stdJson.readUint(config_data, ".strategyManager.init_withdrawal_delay_blocks")
+ );
+
+ ALLOCATION_MANAGER_INIT_PAUSED_STATUS = uint32(
+ stdJson.readUint(config_data, ".allocationManager.init_paused_status")
+ );
+ DEALLOCATION_DELAY = uint32(
+ stdJson.readUint(config_data, ".allocationManager.DEALLOCATION_DELAY")
+ );
+ ALLOCATION_CONFIGURATION_DELAY = uint32(
+ stdJson.readUint(config_data, ".allocationManager.ALLOCATION_CONFIGURATION_DELAY")
+ );
+
+ // tokens to deploy strategies for
+ StrategyConfig[] memory strategyConfigs;
+
+ executorMultisig = stdJson.readAddress(config_data, ".multisig_addresses.executorMultisig");
+ operationsMultisig = stdJson.readAddress(config_data, ".multisig_addresses.operationsMultisig");
+ pauserMultisig = stdJson.readAddress(config_data, ".multisig_addresses.pauserMultisig");
+ // load token list
+ bytes memory strategyConfigsRaw = stdJson.parseRaw(config_data, ".strategies");
+ strategyConfigs = abi.decode(strategyConfigsRaw, (StrategyConfig[]));
+
+ require(executorMultisig != address(0), "executorMultisig address not configured correctly!");
+ require(operationsMultisig != address(0), "operationsMultisig address not configured correctly!");
+
+ // START RECORDING TRANSACTIONS FOR DEPLOYMENT
+ vm.startBroadcast();
+
+ // deploy proxy admin for ability to upgrade proxy contracts
+ eigenLayerProxyAdmin = new ProxyAdmin();
+
+ //deploy pauser registry
+ {
+ address[] memory pausers = new address[](3);
+ pausers[0] = executorMultisig;
+ pausers[1] = operationsMultisig;
+ pausers[2] = pauserMultisig;
+ eigenLayerPauserReg = new PauserRegistry(pausers, executorMultisig);
+ }
+
+ /**
+ * First, deploy upgradeable proxy contracts that **will point** to the implementations. Since the implementation contracts are
+ * not yet deployed, we give these proxies an empty contract as the initial implementation, to act as if they have no code.
+ */
+ emptyContract = new EmptyContract();
+ delegation = DelegationManager(
+ address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
+ );
+ strategyManager = StrategyManager(
+ address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
+ );
+ avsDirectory = AVSDirectory(
+ address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
+ );
+ eigenPodManager = EigenPodManager(
+ address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
+ );
+ rewardsCoordinator = RewardsCoordinator(
+ address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
+ );
+ allocationManager = AllocationManager(
+ address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
+ );
+ permissionController = PermissionController(
+ address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), ""))
+ );
+
+ // if on mainnet, use the ETH2 deposit contract address
+ if (chainId == 1) {
+ ethPOSDeposit = IETHPOSDeposit(0x00000000219ab540356cBB839Cbe05303d7705Fa);
+ // if not on mainnet, deploy a mock
+ } else {
+ ethPOSDeposit = IETHPOSDeposit(stdJson.readAddress(config_data, ".ethPOSDepositAddress"));
+ }
+ eigenPodImplementation = new EigenPod(
+ ethPOSDeposit,
+ eigenPodManager,
+ GOERLI_GENESIS_TIME
+ );
+
+ eigenPodBeacon = new UpgradeableBeacon(address(eigenPodImplementation));
+
+ // Second, deploy the *implementation* contracts, using the *proxy contracts* as inputs
+
+ delegationImplementation = new DelegationManager(strategyManager, eigenPodManager, allocationManager, eigenLayerPauserReg, permissionController, MIN_WITHDRAWAL_DELAY);
+ strategyManagerImplementation = new StrategyManager(delegation, eigenLayerPauserReg);
+ avsDirectoryImplementation = new AVSDirectory(delegation, eigenLayerPauserReg);
+ eigenPodManagerImplementation = new EigenPodManager(
+ ethPOSDeposit,
+ eigenPodBeacon,
+ delegation,
+ eigenLayerPauserReg
+ );
+ rewardsCoordinatorImplementation = new RewardsCoordinator(
+ delegation,
+ strategyManager,
+ allocationManager,
+ eigenLayerPauserReg,
+ permissionController,
+ REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS,
+ REWARDS_COORDINATOR_MAX_REWARDS_DURATION,
+ REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH,
+ REWARDS_COORDINATOR_MAX_FUTURE_LENGTH,
+ REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP
+ );
+ allocationManagerImplementation = new AllocationManager(delegation, eigenLayerPauserReg, permissionController, DEALLOCATION_DELAY, ALLOCATION_CONFIGURATION_DELAY);
+ permissionControllerImplementation = new PermissionController();
+
+ // Third, upgrade the proxy contracts to use the correct implementation contracts and initialize them.
+ {
+ IStrategy[] memory _strategies;
+ uint256[] memory _withdrawalDelayBlocks;
+ eigenLayerProxyAdmin.upgradeAndCall(
+ ITransparentUpgradeableProxy(payable(address(delegation))),
+ address(delegationImplementation),
+ abi.encodeWithSelector(
+ DelegationManager.initialize.selector,
+ executorMultisig,
+ DELEGATION_INIT_PAUSED_STATUS,
+ DELEGATION_WITHDRAWAL_DELAY_BLOCKS,
+ _strategies,
+ _withdrawalDelayBlocks
+ )
+ );
+ }
+ eigenLayerProxyAdmin.upgradeAndCall(
+ ITransparentUpgradeableProxy(payable(address(strategyManager))),
+ address(strategyManagerImplementation),
+ abi.encodeWithSelector(
+ StrategyManager.initialize.selector,
+ executorMultisig,
+ operationsMultisig,
+ STRATEGY_MANAGER_INIT_PAUSED_STATUS
+ )
+ );
+ eigenLayerProxyAdmin.upgradeAndCall(
+ ITransparentUpgradeableProxy(payable(address(avsDirectory))),
+ address(avsDirectoryImplementation),
+ abi.encodeWithSelector(AVSDirectory.initialize.selector, executorMultisig, 0)
+ );
+ eigenLayerProxyAdmin.upgradeAndCall(
+ ITransparentUpgradeableProxy(payable(address(eigenPodManager))),
+ address(eigenPodManagerImplementation),
+ abi.encodeWithSelector(
+ EigenPodManager.initialize.selector,
+ executorMultisig,
+ EIGENPOD_MANAGER_INIT_PAUSED_STATUS
+ )
+ );
+ eigenLayerProxyAdmin.upgradeAndCall(
+ ITransparentUpgradeableProxy(payable(address(rewardsCoordinator))),
+ address(rewardsCoordinatorImplementation),
+ abi.encodeWithSelector(
+ RewardsCoordinator.initialize.selector,
+ executorMultisig,
+ REWARDS_COORDINATOR_INIT_PAUSED_STATUS,
+ REWARDS_COORDINATOR_UPDATER,
+ REWARDS_COORDINATOR_ACTIVATION_DELAY,
+ REWARDS_COORDINATOR_GLOBAL_OPERATOR_COMMISSION_BIPS
+ )
+ );
+
+ eigenLayerProxyAdmin.upgradeAndCall(
+ ITransparentUpgradeableProxy(payable(address(allocationManager))),
+ address(allocationManagerImplementation),
+ abi.encodeWithSelector(
+ AllocationManager.initialize.selector,
+ executorMultisig,
+ ALLOCATION_MANAGER_INIT_PAUSED_STATUS
+ )
+ );
+
+ eigenLayerProxyAdmin.upgrade(
+ ITransparentUpgradeableProxy(payable(address(permissionController))),
+ address(permissionControllerImplementation)
+ );
+
+ // deploy StrategyBaseTVLLimits contract implementation
+ baseStrategyImplementation = new StrategyBaseTVLLimits(strategyManager, eigenLayerPauserReg);
+ // create upgradeable proxies that each point to the implementation and initialize them
+ for (uint256 i = 0; i < strategyConfigs.length; ++i) {
+ if (strategyConfigs[i].tokenAddress == address(0)) {
+ strategyConfigs[i].tokenAddress = address(new ERC20PresetFixedSupply("TestToken", "TEST", uint256(type(uint128).max), executorMultisig));
+ }
+ deployedStrategyArray.push(
+ StrategyBaseTVLLimits(
+ address(
+ new TransparentUpgradeableProxy(
+ address(baseStrategyImplementation),
+ address(eigenLayerProxyAdmin),
+ abi.encodeWithSelector(
+ StrategyBaseTVLLimits.initialize.selector,
+ strategyConfigs[i].maxPerDeposit,
+ strategyConfigs[i].maxDeposits,
+ IERC20(strategyConfigs[i].tokenAddress)
+ )
+ )
+ )
+ )
+ );
+ }
+
+ {
+ // Whitelist the strategies
+ IStrategy[] memory strategies = new IStrategy[](deployedStrategyArray.length);
+ for (uint256 i = 0; i < deployedStrategyArray.length; ++i) {
+ strategies[i] = IStrategy(deployedStrategyArray[i]);
+ }
+ strategyManager.addStrategiesToDepositWhitelist(strategies);
+ }
+
+ // STOP RECORDING TRANSACTIONS FOR DEPLOYMENT
+ vm.stopBroadcast();
+
+ // CHECK CORRECTNESS OF DEPLOYMENT
+ _verifyContractsPointAtOneAnother(
+ delegationImplementation,
+ strategyManagerImplementation,
+ eigenPodManagerImplementation,
+ rewardsCoordinatorImplementation
+ );
+ _verifyContractsPointAtOneAnother(
+ delegation,
+ strategyManager,
+ eigenPodManager,
+ rewardsCoordinator
+ );
+ _verifyImplementationsSetCorrectly();
+ _verifyInitialOwners();
+ _checkPauserInitializations();
+ _verifyInitializationParams();
+
+ // WRITE JSON DATA
+ string memory parent_object = "parent object";
+
+ string memory deployed_strategies = "strategies";
+ for (uint256 i = 0; i < strategyConfigs.length; ++i) {
+ vm.serializeAddress(deployed_strategies, strategyConfigs[i].tokenSymbol, address(deployedStrategyArray[i]));
+ }
+ string memory deployed_strategies_output = strategyConfigs.length == 0
+ ? ""
+ : vm.serializeAddress(
+ deployed_strategies,
+ strategyConfigs[strategyConfigs.length - 1].tokenSymbol,
+ address(deployedStrategyArray[strategyConfigs.length - 1])
+ );
+
+ string memory deployed_addresses = "addresses";
+ vm.serializeUint(deployed_addresses, "numStrategiesDeployed", 0); // for compatibility with other scripts
+ vm.serializeAddress(deployed_addresses, "eigenLayerProxyAdmin", address(eigenLayerProxyAdmin));
+ vm.serializeAddress(deployed_addresses, "eigenLayerPauserReg", address(eigenLayerPauserReg));
+ vm.serializeAddress(deployed_addresses, "delegationManager", address(delegation));
+ vm.serializeAddress(deployed_addresses, "delegationManagerImplementation", address(delegationImplementation));
+ vm.serializeAddress(deployed_addresses, "avsDirectory", address(avsDirectory));
+ vm.serializeAddress(deployed_addresses, "avsDirectoryImplementation", address(avsDirectoryImplementation));
+ vm.serializeAddress(deployed_addresses, "allocationManager", address(allocationManager));
+ vm.serializeAddress(deployed_addresses, "allocationManagerImplementation", address(allocationManagerImplementation));
+ vm.serializeAddress(deployed_addresses, "permissionController", address(permissionController));
+ vm.serializeAddress(deployed_addresses, "permissionControllerImplementation", address(permissionControllerImplementation));
+ vm.serializeAddress(deployed_addresses, "strategyManager", address(strategyManager));
+ vm.serializeAddress(
+ deployed_addresses,
+ "strategyManagerImplementation",
+ address(strategyManagerImplementation)
+ );
+ vm.serializeAddress(deployed_addresses, "eigenPodManager", address(eigenPodManager));
+ vm.serializeAddress(
+ deployed_addresses,
+ "eigenPodManagerImplementation",
+ address(eigenPodManagerImplementation)
+ );
+ vm.serializeAddress(deployed_addresses, "rewardsCoordinator", address(rewardsCoordinator));
+ vm.serializeAddress(
+ deployed_addresses,
+ "rewardsCoordinatorImplementation",
+ address(rewardsCoordinatorImplementation)
+ );
+ vm.serializeAddress(deployed_addresses, "eigenPodBeacon", address(eigenPodBeacon));
+ vm.serializeAddress(deployed_addresses, "eigenPodImplementation", address(eigenPodImplementation));
+ vm.serializeAddress(deployed_addresses, "baseStrategyImplementation", address(baseStrategyImplementation));
+ vm.serializeAddress(deployed_addresses, "emptyContract", address(emptyContract));
+
+ vm.serializeAddress(deployed_addresses, "strategy", address(deployedStrategyArray[0]));
+ vm.serializeAddress(deployed_addresses, "TestToken", address(strategyConfigs[0].tokenAddress));
+
+ string memory deployed_addresses_output = vm.serializeString(
+ deployed_addresses,
+ "strategies",
+ deployed_strategies_output
+ );
+
+ {
+ // dummy token data
+ string memory token = '{"tokenProxyAdmin": "0x0000000000000000000000000000000000000000", "EIGEN": "0x0000000000000000000000000000000000000000","bEIGEN": "0x0000000000000000000000000000000000000000","EIGENImpl": "0x0000000000000000000000000000000000000000","bEIGENImpl": "0x0000000000000000000000000000000000000000","eigenStrategy": "0x0000000000000000000000000000000000000000","eigenStrategyImpl": "0x0000000000000000000000000000000000000000"}';
+ deployed_addresses_output = vm.serializeString(deployed_addresses, "token", token);
+ }
+
+ string memory parameters = "parameters";
+ vm.serializeAddress(parameters, "executorMultisig", executorMultisig);
+ vm.serializeAddress(parameters, "communityMultisig", operationsMultisig);
+ vm.serializeAddress(parameters, "pauserMultisig", pauserMultisig);
+ vm.serializeAddress(parameters, "timelock", address(0));
+ string memory parameters_output = vm.serializeAddress(parameters, "operationsMultisig", operationsMultisig);
+
+ string memory chain_info = "chainInfo";
+ vm.serializeUint(chain_info, "deploymentBlock", block.number);
+ string memory chain_info_output = vm.serializeUint(chain_info, "chainId", chainId);
+
+ // serialize all the data
+ vm.serializeString(parent_object, deployed_addresses, deployed_addresses_output);
+ vm.serializeString(parent_object, chain_info, chain_info_output);
+ string memory finalJson = vm.serializeString(parent_object, parameters, parameters_output);
+ // TODO: should output to different file depending on configFile passed to run()
+ // so that we don't override mainnet output by deploying to goerli for eg.
+ vm.writeJson(finalJson, "script/output/local/slashing_output.json");
+ }
+
+ function _verifyContractsPointAtOneAnother(
+ DelegationManager delegationContract,
+ StrategyManager strategyManagerContract,
+ EigenPodManager eigenPodManagerContract,
+ RewardsCoordinator rewardsCoordinatorContract
+ ) internal view {
+ require(
+ delegationContract.strategyManager() == strategyManager,
+ "delegation: strategyManager address not set correctly"
+ );
+
+ require(
+ strategyManagerContract.delegation() == delegation,
+ "strategyManager: delegation address not set correctly"
+ );
+ require(
+ eigenPodManagerContract.ethPOS() == ethPOSDeposit,
+ " eigenPodManager: ethPOSDeposit contract address not set correctly"
+ );
+ require(
+ eigenPodManagerContract.eigenPodBeacon() == eigenPodBeacon,
+ "eigenPodManager: eigenPodBeacon contract address not set correctly"
+ );
+
+ require(
+ rewardsCoordinatorContract.delegationManager() == delegation,
+ "rewardsCoordinator: delegation address not set correctly"
+ );
+
+ require(
+ rewardsCoordinatorContract.strategyManager() == strategyManager,
+ "rewardsCoordinator: strategyManager address not set correctly"
+ );
+ }
+
+ function _verifyImplementationsSetCorrectly() internal view {
+ require(
+ eigenLayerProxyAdmin.getProxyImplementation(ITransparentUpgradeableProxy(payable(address(delegation)))) ==
+ address(delegationImplementation),
+ "delegation: implementation set incorrectly"
+ );
+ require(
+ eigenLayerProxyAdmin.getProxyImplementation(
+ ITransparentUpgradeableProxy(payable(address(strategyManager)))
+ ) == address(strategyManagerImplementation),
+ "strategyManager: implementation set incorrectly"
+ );
+ require(
+ eigenLayerProxyAdmin.getProxyImplementation(
+ ITransparentUpgradeableProxy(payable(address(eigenPodManager)))
+ ) == address(eigenPodManagerImplementation),
+ "eigenPodManager: implementation set incorrectly"
+ );
+ require(
+ eigenLayerProxyAdmin.getProxyImplementation(
+ ITransparentUpgradeableProxy(payable(address(rewardsCoordinator)))
+ ) == address(rewardsCoordinatorImplementation),
+ "rewardsCoordinator: implementation set incorrectly"
+ );
+
+ require(
+ eigenLayerProxyAdmin.getProxyImplementation(
+ ITransparentUpgradeableProxy(payable(address(allocationManager)))
+ ) == address(allocationManagerImplementation),
+ "allocationManager: implementation set incorrectly"
+ );
+
+ for (uint256 i = 0; i < deployedStrategyArray.length; ++i) {
+ require(
+ eigenLayerProxyAdmin.getProxyImplementation(
+ ITransparentUpgradeableProxy(payable(address(deployedStrategyArray[i])))
+ ) == address(baseStrategyImplementation),
+ "strategy: implementation set incorrectly"
+ );
+ }
+
+ require(
+ eigenPodBeacon.implementation() == address(eigenPodImplementation),
+ "eigenPodBeacon: implementation set incorrectly"
+ );
+ }
+
+ function _verifyInitialOwners() internal view {
+ require(strategyManager.owner() == executorMultisig, "strategyManager: owner not set correctly");
+ require(delegation.owner() == executorMultisig, "delegation: owner not set correctly");
+ require(eigenPodManager.owner() == executorMultisig, "eigenPodManager: owner not set correctly");
+
+ require(eigenLayerProxyAdmin.owner() == executorMultisig, "eigenLayerProxyAdmin: owner not set correctly");
+ require(eigenPodBeacon.owner() == executorMultisig, "eigenPodBeacon: owner not set correctly");
+ }
+
+ function _checkPauserInitializations() internal view {
+ require(delegation.pauserRegistry() == eigenLayerPauserReg, "delegation: pauser registry not set correctly");
+ require(
+ strategyManager.pauserRegistry() == eigenLayerPauserReg,
+ "strategyManager: pauser registry not set correctly"
+ );
+ require(
+ eigenPodManager.pauserRegistry() == eigenLayerPauserReg,
+ "eigenPodManager: pauser registry not set correctly"
+ );
+ require(
+ rewardsCoordinator.pauserRegistry() == eigenLayerPauserReg,
+ "rewardsCoordinator: pauser registry not set correctly"
+ );
+
+ require(eigenLayerPauserReg.isPauser(operationsMultisig), "pauserRegistry: operationsMultisig is not pauser");
+ require(eigenLayerPauserReg.isPauser(executorMultisig), "pauserRegistry: executorMultisig is not pauser");
+ require(eigenLayerPauserReg.isPauser(pauserMultisig), "pauserRegistry: pauserMultisig is not pauser");
+ require(eigenLayerPauserReg.unpauser() == executorMultisig, "pauserRegistry: unpauser not set correctly");
+
+ for (uint256 i = 0; i < deployedStrategyArray.length; ++i) {
+ require(
+ deployedStrategyArray[i].pauserRegistry() == eigenLayerPauserReg,
+ "StrategyBaseTVLLimits: pauser registry not set correctly"
+ );
+ require(
+ deployedStrategyArray[i].paused() == 0,
+ "StrategyBaseTVLLimits: init paused status set incorrectly"
+ );
+ }
+
+ // // pause *nothing*
+ // uint256 STRATEGY_MANAGER_INIT_PAUSED_STATUS = 0;
+ // // pause *everything*
+ // // pause *everything*
+ // uint256 DELEGATION_INIT_PAUSED_STATUS = type(uint256).max;
+ // // pause *all of the proof-related functionality* (everything that can be paused other than creation of EigenPods)
+ // uint256 EIGENPOD_MANAGER_INIT_PAUSED_STATUS = (2**1) + (2**2) + (2**3) + (2**4); /* = 30 */
+ // // pause *nothing*
+ // require(strategyManager.paused() == 0, "strategyManager: init paused status set incorrectly");
+ // require(delegation.paused() == type(uint256).max, "delegation: init paused status set incorrectly");
+ // require(eigenPodManager.paused() == 30, "eigenPodManager: init paused status set incorrectly");
+ }
+
+ function _verifyInitializationParams() internal view {
+ // // one week in blocks -- 50400
+ // uint32 STRATEGY_MANAGER_INIT_WITHDRAWAL_DELAY_BLOCKS = 7 days / 12 seconds;
+ // require(strategyManager.withdrawalDelayBlocks() == 7 days / 12 seconds,
+ // "strategyManager: withdrawalDelayBlocks initialized incorrectly");
+ // uint256 MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR = 32 ether;
+
+ require(
+ strategyManager.strategyWhitelister() == operationsMultisig,
+ "strategyManager: strategyWhitelister address not set correctly"
+ );
+
+ require(
+ baseStrategyImplementation.strategyManager() == strategyManager,
+ "baseStrategyImplementation: strategyManager set incorrectly"
+ );
+
+ require(
+ eigenPodImplementation.ethPOS() == ethPOSDeposit,
+ "eigenPodImplementation: ethPOSDeposit contract address not set correctly"
+ );
+ require(
+ eigenPodImplementation.eigenPodManager() == eigenPodManager,
+ " eigenPodImplementation: eigenPodManager contract address not set correctly"
+ );
+
+ string memory config_data = vm.readFile(deployConfigPath);
+ for (uint i = 0; i < deployedStrategyArray.length; i++) {
+ uint256 maxPerDeposit = stdJson.readUint(
+ config_data,
+ string.concat(".strategies[", vm.toString(i), "].max_per_deposit")
+ );
+ uint256 maxDeposits = stdJson.readUint(
+ config_data,
+ string.concat(".strategies[", vm.toString(i), "].max_deposits")
+ );
+ (uint256 setMaxPerDeposit, uint256 setMaxDeposits) = deployedStrategyArray[i].getTVLLimits();
+ require(setMaxPerDeposit == maxPerDeposit, "setMaxPerDeposit not set correctly");
+ require(setMaxDeposits == maxDeposits, "setMaxDeposits not set correctly");
+ }
+ }
+}
diff --git a/script/output/devnet/SLASHING_deploy_from_scratch_deployment_data.json b/script/output/devnet/SLASHING_deploy_from_scratch_deployment_data.json
new file mode 100644
index 0000000000..b83fcb7d80
--- /dev/null
+++ b/script/output/devnet/SLASHING_deploy_from_scratch_deployment_data.json
@@ -0,0 +1,52 @@
+{
+ "addresses": {
+ "allocationManager": "0xAbD5Dd30CaEF8598d4EadFE7D45Fd582EDEade15",
+ "allocationManagerImplementation": "0xBFF7154bAa41e702E78Fb082a8Ce257Ce13E6f55",
+ "avsDirectory": "0xCa839541648D3e23137457b1Fd4A06bccEADD33a",
+ "avsDirectoryImplementation": "0x1362e9Cb37831C433095f1f1568215B7FDeD37Ef",
+ "baseStrategyImplementation": "0x61C6A250AEcAbf6b5e4611725b4f99C4DC85DB34",
+ "delegationManager": "0x3391eBafDD4b2e84Eeecf1711Ff9FC06EF9Ed182",
+ "delegationManagerImplementation": "0x4073a9B0fb0f31420C2A2263fB6E9adD33ea6F2A",
+ "eigenLayerPauserReg": "0xBb02ACE793e921D6a454062D2933064F31Fae0B2",
+ "eigenLayerProxyAdmin": "0xBf0c97a7df334BD83e0912c1218E44FD7953d122",
+ "eigenPodBeacon": "0x8ad244c2a986e48862c5bE1FdCA27cef0aaa6E15",
+ "eigenPodImplementation": "0x93cecf40F05389E99e163539F8d1CCbd4267f9A7",
+ "eigenPodManager": "0x8C9781FD55c67CE4DC08e3035ECbdB2B67a07307",
+ "eigenPodManagerImplementation": "0x3013B13BF3a464ff9078EFa40b7dbfF8fA67138d",
+ "emptyContract": "0x689CEE9134e4234caEF6c15Bf1D82779415daFAe",
+ "rewardsCoordinator": "0xa7DB7B0E63B5B75e080924F9C842758711177c07",
+ "rewardsCoordinatorImplementation": "0x0e93df1A21CA53F93160AbDee19A92A20f8b397B",
+ "strategies": [
+ {
+ "strategy_address": "0x4f812633943022fA97cb0881683aAf9f318D5Caa",
+ "token_address": "0x94373a4919B3240D86eA41593D5eBa789FEF3848",
+ "token_symbol": "WETH"
+ }
+ ],
+ "strategyBeacon": "0x957c04A5666079255fD75220a15918ecBA6039c6",
+ "strategyFactory": "0x09F8f1c1ca1815083a8a05E1b4A0c65EFB509141",
+ "strategyFactoryImplementation": "0x8b1F09f8292fd658Da35b9b3b1d4F7d1C0F3F592",
+ "strategyManager": "0x70f8bC2Da145b434de66114ac539c9756eF64fb3",
+ "strategyManagerImplementation": "0x1562BfE7Cb4644ff030C1dE4aA5A9aBb88a61aeC",
+ "token": {
+ "tokenProxyAdmin": "0x0000000000000000000000000000000000000000",
+ "EIGEN": "0x0000000000000000000000000000000000000000",
+ "bEIGEN": "0x0000000000000000000000000000000000000000",
+ "EIGENImpl": "0x0000000000000000000000000000000000000000",
+ "bEIGENImpl": "0x0000000000000000000000000000000000000000",
+ "eigenStrategy": "0x0000000000000000000000000000000000000000",
+ "eigenStrategyImpl": "0x0000000000000000000000000000000000000000"
+ }
+ },
+ "chainInfo": {
+ "chainId": 17000,
+ "deploymentBlock": 2548240
+ },
+ "parameters": {
+ "communityMultisig": "0xBB37b72F67A410B76Ce9b9aF9e37aa561B1C5B07",
+ "executorMultisig": "0xBB37b72F67A410B76Ce9b9aF9e37aa561B1C5B07",
+ "operationsMultisig": "0xBB37b72F67A410B76Ce9b9aF9e37aa561B1C5B07",
+ "pauserMultisig": "0xBB37b72F67A410B76Ce9b9aF9e37aa561B1C5B07",
+ "timelock": "0x0000000000000000000000000000000000000000"
+ }
+}
\ No newline at end of file
diff --git a/script/releases/EigenLabsUpgrade.s.sol b/script/releases/EigenLabsUpgrade.s.sol
deleted file mode 100644
index 2d24c6c348..0000000000
--- a/script/releases/EigenLabsUpgrade.s.sol
+++ /dev/null
@@ -1,88 +0,0 @@
-// SPDX-License-Identifier: BUSL-1.1
-pragma solidity ^0.8.12;
-
-import {ZeusScript} from "zeus-templates/utils/ZeusScript.sol";
-import {EncGnosisSafe} from "zeus-templates/utils/EncGnosisSafe.sol";
-import {TimelockController} from "@openzeppelin/contracts/governance/TimelockController.sol";
-
-library EigenLabsUpgrade {
- using EncGnosisSafe for *;
-
- function _ethPos(
- ZeusScript self
- ) internal view returns (address) {
- return self.zAddress("ethPOS");
- }
-
- function _eigenpodGenesisTime(
- ZeusScript self
- ) internal view returns (uint64) {
- return self.zUint64("EIGENPOD_GENESIS_TIME");
- }
-
- function _eigenPodManagerPendingImpl(
- ZeusScript self
- ) internal view returns (address) {
- return self.zDeployedContract("EigenPodManager_pendingImpl");
- }
-
- function _operationsMultisig(
- ZeusScript self
- ) internal view returns (address) {
- return self.zAddress("operationsMultisig");
- }
-
- function _pauserRegistry(
- ZeusScript self
- ) internal view returns (address) {
- return self.zDeployedImpl("PauserRegistry");
- }
-
- function _proxyAdmin(
- ZeusScript self
- ) internal view returns (address) {
- return self.zAddress("proxyAdmin");
- }
-
- function _eigenPodManagerProxy(
- ZeusScript self
- ) internal view returns (address) {
- return self.zAddress("EigenPodManager_proxy");
- }
-
- function _eigenPodBeacon(
- ZeusScript self
- ) internal view returns (address) {
- return self.zAddress("EigenPod_beacon");
- }
-
- function _eigenPodPendingImpl(
- ZeusScript self
- ) internal view returns (address) {
- return self.zAddress("EigenPod_pendingImpl");
- }
-
- function _multiSendCallOnly(
- ZeusScript self
- ) internal view returns (address) {
- return self.zAddress("MultiSendCallOnly");
- }
-
- function _timelock(
- ZeusScript self
- ) internal view returns (TimelockController) {
- return TimelockController(payable(self.zAddress("timelockController")));
- }
-
- function _executorMultisig(
- ZeusScript self
- ) internal view returns (address) {
- return self.zAddress("executorMultisig");
- }
-
- function _protocolCouncilMultisig(
- ZeusScript self
- ) internal view returns (address) {
- return self.zAddress("protocolCouncilMultisig");
- }
-}
diff --git a/script/releases/Env.sol b/script/releases/Env.sol
new file mode 100644
index 0000000000..e094d9ae3a
--- /dev/null
+++ b/script/releases/Env.sol
@@ -0,0 +1,323 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.12;
+
+import "forge-std/Vm.sol";
+import "zeus-templates/utils/ZEnvHelpers.sol";
+
+import {TimelockController} from "@openzeppelin/contracts/governance/TimelockController.sol";
+import "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol";
+
+/// core/
+import "src/contracts/core/AllocationManager.sol";
+import "src/contracts/core/AVSDirectory.sol";
+import "src/contracts/core/DelegationManager.sol";
+import "src/contracts/core/RewardsCoordinator.sol";
+import "src/contracts/core/StrategyManager.sol";
+
+/// permissions/
+import "src/contracts/permissions/PauserRegistry.sol";
+import "src/contracts/permissions/PermissionController.sol";
+
+/// pods/
+import "src/contracts/pods/EigenPod.sol";
+import "src/contracts/pods/EigenPodManager.sol";
+
+/// strategies/
+import "src/contracts/strategies/EigenStrategy.sol";
+import "src/contracts/strategies/StrategyBase.sol";
+import "src/contracts/strategies/StrategyBaseTVLLimits.sol";
+import "src/contracts/strategies/StrategyFactory.sol";
+
+/// token/
+import "src/contracts/interfaces/IEigen.sol";
+import "src/contracts/interfaces/IBackingEigen.sol";
+import "src/contracts/token/Eigen.sol";
+import "src/contracts/token/BackingEigen.sol";
+
+library Env {
+
+ using ZEnvHelpers for *;
+
+ /// Dummy types and variables to facilitate syntax, e.g: `Env.proxy.delegationManager()`
+ enum DeployedProxy { A }
+ enum DeployedBeacon { A }
+ enum DeployedImpl { A }
+ enum DeployedInstance { A }
+
+ DeployedProxy internal constant proxy = DeployedProxy.A;
+ DeployedBeacon internal constant beacon = DeployedBeacon.A;
+ DeployedImpl internal constant impl = DeployedImpl.A;
+ DeployedInstance internal constant instance = DeployedInstance.A;
+
+ /**
+ * env
+ */
+
+ function executorMultisig() internal view returns (address) {
+ return _envAddress("executorMultisig");
+ }
+
+ function opsMultisig() internal view returns (address) {
+ return _envAddress("operationsMultisig");
+ }
+
+ function protocolCouncilMultisig() internal view returns (address) {
+ return _envAddress("protocolCouncilMultisig");
+ }
+
+ function pauserMultisig() internal view returns (address) {
+ return _envAddress("pauserMultisig");
+ }
+
+ function proxyAdmin() internal view returns (address) {
+ return _envAddress("proxyAdmin");
+ }
+
+ function ethPOS() internal view returns (IETHPOSDeposit) {
+ return IETHPOSDeposit(_envAddress("ethPOS"));
+ }
+
+ function timelockController() internal view returns (TimelockController) {
+ return TimelockController(payable(_envAddress("timelockController")));
+ }
+
+ function multiSendCallOnly() internal view returns (address) {
+ return _envAddress("MultiSendCallOnly");
+ }
+
+ function EIGENPOD_GENESIS_TIME() internal view returns (uint64) {
+ return _envU64("EIGENPOD_GENESIS_TIME");
+ }
+
+ function MIN_WITHDRAWAL_DELAY() internal view returns (uint32) {
+ return _envU32("MIN_WITHDRAWAL_DELAY");
+ }
+
+ function ALLOCATION_CONFIGURATION_DELAY() internal view returns (uint32) {
+ return _envU32("ALLOCATION_CONFIGURATION_DELAY");
+ }
+
+ function REWARDS_UPDATER() internal view returns (address) {
+ return _envAddress("REWARDS_COORDINATOR_UPDATER");
+ }
+
+ function ACTIVATION_DELAY() internal view returns (uint32) {
+ return _envU32("REWARDS_COORDINATOR_ACTIVATION_DELAY");
+ }
+
+ function DEFAULT_SPLIT_BIPS() internal view returns (uint16) {
+ return _envU16("REWARDS_COORDINATOR_DEFAULT_OPERATOR_SPLIT_BIPS");
+ }
+
+ function CALCULATION_INTERVAL_SECONDS() internal view returns (uint32) {
+ return _envU32("REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS");
+ }
+
+ function MAX_REWARDS_DURATION() internal view returns (uint32) {
+ return _envU32("REWARDS_COORDINATOR_MAX_REWARDS_DURATION");
+ }
+
+ function MAX_RETROACTIVE_LENGTH() internal view returns (uint32) {
+ return _envU32("REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH");
+ }
+
+ function MAX_FUTURE_LENGTH() internal view returns (uint32) {
+ return _envU32("REWARDS_COORDINATOR_MAX_FUTURE_LENGTH");
+ }
+
+ function GENESIS_REWARDS_TIMESTAMP() internal view returns (uint32) {
+ return _envU32("REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP");
+ }
+
+ function REWARDS_PAUSE_STATUS() internal view returns (uint) {
+ return _envU256("REWARDS_COORDINATOR_PAUSE_STATUS");
+ }
+
+ /**
+ * core/
+ */
+
+ function allocationManager(DeployedProxy) internal view returns (AllocationManager) {
+ return AllocationManager(_deployedProxy(type(AllocationManager).name));
+ }
+
+ function allocationManager(DeployedImpl) internal view returns (AllocationManager) {
+ return AllocationManager(_deployedImpl(type(AllocationManager).name));
+ }
+
+ function avsDirectory(DeployedProxy) internal view returns (AVSDirectory) {
+ return AVSDirectory(_deployedProxy(type(AVSDirectory).name));
+ }
+
+ function avsDirectory(DeployedImpl) internal view returns (AVSDirectory) {
+ return AVSDirectory(_deployedImpl(type(AVSDirectory).name));
+ }
+
+ function delegationManager(DeployedProxy) internal view returns (DelegationManager) {
+ return DelegationManager(_deployedProxy(type(DelegationManager).name));
+ }
+
+ function delegationManager(DeployedImpl) internal view returns (DelegationManager) {
+ return DelegationManager(_deployedImpl(type(DelegationManager).name));
+ }
+
+ function rewardsCoordinator(DeployedProxy) internal view returns (RewardsCoordinator) {
+ return RewardsCoordinator(_deployedProxy(type(RewardsCoordinator).name));
+ }
+
+ function rewardsCoordinator(DeployedImpl) internal view returns (RewardsCoordinator) {
+ return RewardsCoordinator(_deployedImpl(type(RewardsCoordinator).name));
+ }
+
+ function strategyManager(DeployedProxy) internal view returns (StrategyManager) {
+ return StrategyManager(_deployedProxy(type(StrategyManager).name));
+ }
+
+ function strategyManager(DeployedImpl) internal view returns (StrategyManager) {
+ return StrategyManager(_deployedImpl(type(StrategyManager).name));
+ }
+
+ /**
+ * permissions/
+ */
+
+ function pauserRegistry(DeployedImpl) internal view returns (PauserRegistry) {
+ return PauserRegistry(_deployedImpl(type(PauserRegistry).name));
+ }
+
+ function permissionController(DeployedProxy) internal view returns (PermissionController) {
+ return PermissionController(_deployedProxy(type(PermissionController).name));
+ }
+
+ function permissionController(DeployedImpl) internal view returns (PermissionController) {
+ return PermissionController(_deployedImpl(type(PermissionController).name));
+ }
+
+ /**
+ * pods/
+ */
+
+ function eigenPod(DeployedBeacon) internal view returns (UpgradeableBeacon) {
+ return UpgradeableBeacon(_deployedBeacon(type(EigenPod).name));
+ }
+
+ function eigenPod(DeployedImpl) internal view returns (EigenPod) {
+ return EigenPod(payable(_deployedImpl(type(EigenPod).name)));
+ }
+
+ function eigenPodManager(DeployedProxy) internal view returns (EigenPodManager) {
+ return EigenPodManager(_deployedProxy(type(EigenPodManager).name));
+ }
+
+ function eigenPodManager(DeployedImpl) internal view returns (EigenPodManager) {
+ return EigenPodManager(_deployedImpl(type(EigenPodManager).name));
+ }
+
+ /**
+ * strategies/
+ */
+
+ function eigenStrategy(DeployedProxy) internal view returns (EigenStrategy) {
+ return EigenStrategy(_deployedProxy(type(EigenStrategy).name));
+ }
+
+ function eigenStrategy(DeployedImpl) internal view returns (EigenStrategy) {
+ return EigenStrategy(_deployedImpl(type(EigenStrategy).name));
+ }
+
+ // Beacon proxy
+ function strategyBase(DeployedBeacon) internal view returns (UpgradeableBeacon) {
+ return UpgradeableBeacon(_deployedBeacon(type(StrategyBase).name));
+ }
+
+ // Beaconed impl
+ function strategyBase(DeployedImpl) internal view returns (StrategyBase) {
+ return StrategyBase(_deployedImpl(type(StrategyBase).name));
+ }
+
+ // Returns the number of proxy instances
+ function strategyBaseTVLLimits_Count(DeployedInstance) internal view returns (uint) {
+ return _deployedInstanceCount(type(StrategyBaseTVLLimits).name);
+ }
+
+ // Returns the proxy instance at index `i`
+ function strategyBaseTVLLimits(DeployedInstance, uint i) internal view returns (StrategyBaseTVLLimits) {
+ return StrategyBaseTVLLimits(_deployedInstance(type(StrategyBaseTVLLimits).name, i));
+ }
+
+ function strategyBaseTVLLimits(DeployedImpl) internal view returns (StrategyBaseTVLLimits) {
+ return StrategyBaseTVLLimits(_deployedImpl(type(StrategyBaseTVLLimits).name));
+ }
+
+ function strategyFactory(DeployedProxy) internal view returns (StrategyFactory) {
+ return StrategyFactory(_deployedProxy(type(StrategyFactory).name));
+ }
+
+ function strategyFactory(DeployedImpl) internal view returns (StrategyFactory) {
+ return StrategyFactory(_deployedImpl(type(StrategyFactory).name));
+ }
+
+ /**
+ * token/
+ */
+
+ function eigen(DeployedProxy) internal view returns (IEigen) {
+ return IEigen(_deployedProxy(type(Eigen).name));
+ }
+
+ function eigen(DeployedImpl) internal view returns (IEigen) {
+ return IEigen(_deployedImpl(type(Eigen).name));
+ }
+
+ function beigen(DeployedProxy) internal view returns (IBackingEigen) {
+ return IBackingEigen(_deployedProxy(type(BackingEigen).name));
+ }
+
+ function beigen(DeployedImpl) internal view returns (IBackingEigen) {
+ return IBackingEigen(_deployedImpl(type(BackingEigen).name));
+ }
+
+ /**
+ * Helpers
+ */
+
+ function _deployedInstance(string memory name, uint idx) private view returns (address) {
+ return ZEnvHelpers.state().deployedInstance(name, idx);
+ }
+
+ function _deployedInstanceCount(string memory name) private view returns (uint) {
+ return ZEnvHelpers.state().deployedInstanceCount(name);
+ }
+
+ function _deployedProxy(string memory name) private view returns (address) {
+ return ZEnvHelpers.state().deployedProxy(name);
+ }
+
+ function _deployedBeacon(string memory name) private view returns (address) {
+ return ZEnvHelpers.state().deployedBeacon(name);
+ }
+
+ function _deployedImpl(string memory name) private view returns (address) {
+ return ZEnvHelpers.state().deployedImpl(name);
+ }
+
+ function _envAddress(string memory key) private view returns (address) {
+ return ZEnvHelpers.state().envAddress(key);
+ }
+
+ function _envU256(string memory key) private view returns (uint) {
+ return ZEnvHelpers.state().envU256(key);
+ }
+
+ function _envU64(string memory key) private view returns (uint64) {
+ return ZEnvHelpers.state().envU64(key);
+ }
+
+ function _envU32(string memory key) private view returns (uint32) {
+ return ZEnvHelpers.state().envU32(key);
+ }
+
+ function _envU16(string memory key) private view returns (uint16) {
+ return ZEnvHelpers.state().envU16(key);
+ }
+}
\ No newline at end of file
diff --git a/script/README.md b/script/releases/README.md
similarity index 86%
rename from script/README.md
rename to script/releases/README.md
index 34bdb34e43..8659ee634c 100644
--- a/script/README.md
+++ b/script/releases/README.md
@@ -1,17 +1,27 @@
-# Release Scripts
+# Release Scripting With Zeus
-This directory contains the following subdirectories:
+This directory is where you will build [Zeus](https://github.com/Layr-Labs/zeus) scripts to manage core protocol releases. Releases are broken up into multiple steps composed of either a `forge` script or a custom shell script. Zeus's role is:
+* Provide an environment to your script via environment variables
+* Update environment after a release is run to completion
+* Track status of releases to ensure steps are run (in order) only once per environment
-* `configs`: to store configuration data related to a given network.
-* `interfaces`: to store interfaces relevant to your scripts.
-* `releases`: to set up more subdirectories corresponding to your release, and the most important `script/` subdirectory.
-* `utils`: to define any utility contracts for performing common actions.
+**Note about environments:** Zeus scripts are intended to be written once, and run across _any_ environment we use. We currently have 3 live environments (`preprod`, `testnet`, and `mainnet`), and the params/deployment addresses for each live in separate folders in [`layr-labs/eigenlayer-contracts-metadata`](https://github.com/Layr-Labs/eigenlayer-contracts-metadata).
-It is intended to be driven by [Zeus](https://github.com/Layr-Labs/zeus), which will run `forge` commands under the hood and track the status of upgrades.
+When running or testing a script, _you tell zeus which environment to use,_ and it will fork the corresponding network state and setup environment variables for that environment's params/deployment addresses.
-## Using Zeus Templates
+##### Getting Started
+
+* Install [Zeus](https://github.com/Layr-Labs/zeus)
+* Run `zeus login`
+
+At this point, you should be able to view an environment's config (try `zeus env show preprod`)
+
+---
+
+### Writing a Script
+
+Scripts are broken up into multiple steps TODO
-The [zeus-templates](https://github.com/Layr-Labs/zeus-templates) repository provides two base contract classes to facilitate deployment and multisig scripts.
### EOADeployer
diff --git a/script/releases/v0.5.1-rewardsv2/1-eoa.s.sol b/script/releases/v0.5.1-rewardsv2/1-eoa.s.sol
deleted file mode 100644
index adf7560343..0000000000
--- a/script/releases/v0.5.1-rewardsv2/1-eoa.s.sol
+++ /dev/null
@@ -1,126 +0,0 @@
-// SPDX-License-Identifier: BUSL-1.1
-pragma solidity ^0.8.12;
-
-import {EOADeployer} from "zeus-templates/templates/EOADeployer.sol";
-import {RewardsCoordinator} from "src/contracts/core/RewardsCoordinator.sol";
-import {IDelegationManager} from "src/contracts/interfaces/IDelegationManager.sol";
-import {DelegationManager} from "src/contracts/core/DelegationManager.sol";
-import {StrategyManager} from "src/contracts/core/StrategyManager.sol";
-import {EigenLabsUpgrade} from "../EigenLabsUpgrade.s.sol";
-import {Test, console} from "forge-std/Test.sol";
-import {IPauserRegistry} from "src/contracts/interfaces/IPauserRegistry.sol";
-
-contract Deploy is EOADeployer {
- using EigenLabsUpgrade for *;
-
- function _runAsEOA() internal override {
- zUpdateUint16(string("REWARDS_COORDINATOR_DEFAULT_OPERATOR_SPLIT_BIPS"), uint16(1000));
-
- vm.startBroadcast();
- deploySingleton(
- address(
- new RewardsCoordinator(
- IDelegationManager(zDeployedProxy(type(DelegationManager).name)),
- StrategyManager(zDeployedProxy(type(StrategyManager).name)),
- zUint32("REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"),
- zUint32("REWARDS_COORDINATOR_MAX_REWARDS_DURATION"),
- zUint32("REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH"),
- zUint32("REWARDS_COORDINATOR_MAX_FUTURE_LENGTH"),
- zUint32("REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP")
- )
- ),
- this.impl(type(RewardsCoordinator).name)
- );
-
- vm.stopBroadcast();
- }
-
- function testDeploy() public virtual {
- // Deploy RewardsCoordinator Implementation
- address oldImpl = zDeployedImpl(type(RewardsCoordinator).name);
- runAsEOA();
- address newImpl = zDeployedImpl(type(RewardsCoordinator).name);
- assertTrue(oldImpl != newImpl, "impl should be different");
-
- Deployment[] memory deploys = deploys();
-
- // sanity check that zDeployedImpl is returning our deployment.
- assertEq(deploys[0].deployedTo, zDeployedImpl(type(RewardsCoordinator).name));
-
- RewardsCoordinator rewardsCoordinatorImpl = RewardsCoordinator(zDeployedImpl(type(RewardsCoordinator).name));
-
- address owner = this._operationsMultisig();
- IPauserRegistry pauserRegistry = IPauserRegistry(this._pauserRegistry());
- uint64 initPausedStatus = zUint64("REWARDS_COORDINATOR_INIT_PAUSED_STATUS");
- address rewardsUpdater = zAddress("REWARDS_COORDINATOR_UPDATER");
- uint32 activationDelay = zUint32("REWARDS_COORDINATOR_ACTIVATION_DELAY");
- uint16 defaultOperatorSplitBips = zUint16("REWARDS_COORDINATOR_DEFAULT_OPERATOR_SPLIT_BIPS");
-
- // Ensure that the implementation contract cannot be initialized.
- vm.expectRevert("Initializable: contract is already initialized");
- rewardsCoordinatorImpl.initialize(
- owner,
- pauserRegistry,
- initPausedStatus,
- rewardsUpdater,
- activationDelay,
- defaultOperatorSplitBips
- );
-
- // Assert Immutables and State Variables set through initialize
- assertEq(rewardsCoordinatorImpl.owner(), address(0), "expected owner");
- assertEq(address(rewardsCoordinatorImpl.pauserRegistry()), address(0), "expected pauserRegistry");
- assertEq(address(rewardsCoordinatorImpl.rewardsUpdater()), address(0), "expected rewardsUpdater");
- assertEq(rewardsCoordinatorImpl.activationDelay(), 0, "expected activationDelay");
- assertEq(rewardsCoordinatorImpl.defaultOperatorSplitBips(), 0, "expected defaultOperatorSplitBips");
-
- assertEq(
- address(rewardsCoordinatorImpl.delegationManager()),
- zDeployedProxy(type(DelegationManager).name),
- "expected delegationManager"
- );
- assertEq(
- address(rewardsCoordinatorImpl.strategyManager()),
- zDeployedProxy(type(StrategyManager).name),
- "expected strategyManager"
- );
-
- assertEq(
- rewardsCoordinatorImpl.CALCULATION_INTERVAL_SECONDS(),
- zUint32("REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"),
- "expected REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
- );
- assertGt(
- rewardsCoordinatorImpl.CALCULATION_INTERVAL_SECONDS(),
- 0,
- "expected non-zero REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
- );
-
- assertEq(rewardsCoordinatorImpl.MAX_REWARDS_DURATION(), zUint32("REWARDS_COORDINATOR_MAX_REWARDS_DURATION"));
- assertGt(rewardsCoordinatorImpl.MAX_REWARDS_DURATION(), 0);
-
- assertEq(
- rewardsCoordinatorImpl.MAX_RETROACTIVE_LENGTH(),
- zUint32("REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH")
- );
- assertGt(rewardsCoordinatorImpl.MAX_RETROACTIVE_LENGTH(), 0);
-
- assertEq(rewardsCoordinatorImpl.MAX_FUTURE_LENGTH(), zUint32("REWARDS_COORDINATOR_MAX_FUTURE_LENGTH"));
- assertGt(rewardsCoordinatorImpl.MAX_FUTURE_LENGTH(), 0);
-
- assertEq(
- rewardsCoordinatorImpl.GENESIS_REWARDS_TIMESTAMP(),
- zUint32("REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP")
- );
- assertGt(rewardsCoordinatorImpl.GENESIS_REWARDS_TIMESTAMP(), 0);
-
- assertEq(deploys.length, 1, "expected exactly 1 deployment");
- assertEq(
- keccak256(bytes(deploys[0].name)),
- keccak256(bytes(this.impl(type(RewardsCoordinator).name))),
- "zeusTest: Deployment name is not RewardsCoordinator"
- );
- assertTrue(deploys[0].singleton == true, "zeusTest: RewardsCoordinator should be a singleton.");
- assertNotEq(deploys[0].deployedTo, address(0), "zeusTest: Should deploy to non-zero address.");
- }
-}
diff --git a/script/releases/v0.5.1-rewardsv2/2-multisig.s.sol b/script/releases/v0.5.1-rewardsv2/2-multisig.s.sol
deleted file mode 100644
index c43b2a5b37..0000000000
--- a/script/releases/v0.5.1-rewardsv2/2-multisig.s.sol
+++ /dev/null
@@ -1,82 +0,0 @@
-// SPDX-License-Identifier: BUSL-1.1
-pragma solidity ^0.8.12;
-
-import {MultisigCall, MultisigCallUtils, MultisigBuilder} from "zeus-templates/templates/MultisigBuilder.sol";
-import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
-import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
-import {Deploy} from "./1-eoa.s.sol";
-import {RewardsCoordinator} from "src/contracts/core/RewardsCoordinator.sol";
-import {EigenLabsUpgrade} from "../EigenLabsUpgrade.s.sol";
-import {IPauserRegistry} from "src/contracts/interfaces/IPauserRegistry.sol";
-import {ITimelock} from "zeus-templates/interfaces/ITimelock.sol";
-import {console} from "forge-std/console.sol";
-import {EncGnosisSafe} from "zeus-templates/utils/EncGnosisSafe.sol";
-import {MultisigCallUtils, MultisigCall} from "zeus-templates/utils/MultisigCallUtils.sol";
-import {IMultiSend} from "zeus-templates/interfaces/IMultiSend.sol";
-import {TimelockController} from "@openzeppelin/contracts/governance/TimelockController.sol";
-
-/**
- * Purpose: enqueue a multisig transaction which tells the ProxyAdmin to upgrade RewardsCoordinator.
- */
-contract Queue is MultisigBuilder, Deploy {
- using MultisigCallUtils for MultisigCall[];
- using EigenLabsUpgrade for *;
- using EncGnosisSafe for *;
- using MultisigCallUtils for *;
-
- MultisigCall[] private _executorCalls;
- MultisigCall[] private _opsCalls;
-
- function options() internal virtual override view returns (MultisigOptions memory) {
- return MultisigOptions(
- this._operationsMultisig(),
- Operation.Call
- );
- }
-
- function _getMultisigTransactionCalldata() internal view returns (bytes memory) {
- ProxyAdmin pa = ProxyAdmin(this._proxyAdmin());
-
- bytes memory proxyAdminCalldata = abi.encodeCall(
- pa.upgrade,
- (
- TransparentUpgradeableProxy(payable(zDeployedProxy(type(RewardsCoordinator).name))),
- zDeployedImpl(type(RewardsCoordinator).name)
- )
- );
-
- bytes memory executorMultisigCalldata = address(this._timelock()).calldataToExecTransaction(
- this._proxyAdmin(),
- proxyAdminCalldata,
- EncGnosisSafe.Operation.Call
- );
-
- return (executorMultisigCalldata);
- }
-
- function runAsMultisig() internal virtual override {
- bytes memory executorMultisigCalldata = _getMultisigTransactionCalldata();
-
- TimelockController timelock = TimelockController(payable(this._timelock()));
- timelock.schedule(
- this._executorMultisig(),
- 0 /* value */,
- executorMultisigCalldata,
- 0 /* predecessor */,
- bytes32(0) /* salt */,
- timelock.getMinDelay()
- );
- }
-
- function testDeploy() public virtual override {
- runAsEOA();
-
- execute();
- TimelockController timelock = TimelockController(payable(this._timelock()));
-
- bytes memory multisigTxnData = _getMultisigTransactionCalldata();
- bytes32 txHash = timelock.hashOperation(this._executorMultisig(), 0, multisigTxnData, 0, 0);
-
- assertEq(timelock.isOperationPending(txHash), true, "Transaction should be queued.");
- }
-}
diff --git a/script/releases/v0.5.1-rewardsv2/3-multisig.s.sol b/script/releases/v0.5.1-rewardsv2/3-multisig.s.sol
deleted file mode 100644
index 28362b1cff..0000000000
--- a/script/releases/v0.5.1-rewardsv2/3-multisig.s.sol
+++ /dev/null
@@ -1,160 +0,0 @@
-// SPDX-License-Identifier: BUSL-1.1
-pragma solidity ^0.8.12;
-
-import {MultisigCall, MultisigCallUtils, MultisigBuilder} from "zeus-templates/templates/MultisigBuilder.sol";
-import {SafeTx, SafeTxUtils} from "zeus-templates/utils/SafeTxUtils.sol";
-import {Queue} from "./2-multisig.s.sol";
-import {EigenLabsUpgrade} from "../EigenLabsUpgrade.s.sol";
-import {TimelockController} from "@openzeppelin/contracts/governance/TimelockController.sol";
-import {RewardsCoordinator} from "src/contracts/core/RewardsCoordinator.sol";
-import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
-import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
-import {IPauserRegistry} from "src/contracts/interfaces/IPauserRegistry.sol";
-import {DelegationManager} from "src/contracts/core/DelegationManager.sol";
-import {StrategyManager} from "src/contracts/core/StrategyManager.sol";
-import {console} from "forge-std/console.sol";
-
-contract Execute is Queue {
- using MultisigCallUtils for MultisigCall[];
- using SafeTxUtils for SafeTx;
- using EigenLabsUpgrade for *;
-
- event Upgraded(address indexed implementation);
-
- function options() internal override view returns (MultisigOptions memory) {
- return MultisigOptions(
- this._protocolCouncilMultisig(),
- Operation.Call
- );
- }
-
- /**
- * @dev Overrides the previous _execute function to execute the queued transactions.
- */
- function runAsMultisig() internal override {
- bytes memory executorMultisigCalldata = _getMultisigTransactionCalldata();
- TimelockController timelock = TimelockController(payable(this._timelock()));
- timelock.execute(
- this._executorMultisig(),
- 0 /* value */,
- executorMultisigCalldata,
- 0 /* predecessor */,
- bytes32(0) /* salt */
- );
- }
-
- function testDeploy() public override {
- // save the previous implementation address to assert its change later
- address prevRewardsCoordinator = zDeployedImpl(type(RewardsCoordinator).name);
-
- // 0. Deploy the Implementation contract.
- runAsEOA();
-
- // 1. run the queue script.
- vm.startPrank(this._operationsMultisig());
- super.runAsMultisig();
- vm.stopPrank();
-
- RewardsCoordinator rewardsCoordinatorProxy = RewardsCoordinator(zDeployedProxy(type(RewardsCoordinator).name));
- uint256 pausedStatusBefore = rewardsCoordinatorProxy.paused();
- TimelockController timelock = this._timelock();
-
- // 2. run the execute script above.
- bytes memory multisigTxnData = _getMultisigTransactionCalldata();
- bytes32 txHash = timelock.hashOperation(this._executorMultisig(), 0, multisigTxnData, 0, 0);
-
- assertEq(timelock.isOperationPending(txHash), true, "Transaction should be queued and pending.");
- vm.warp(block.timestamp + timelock.getMinDelay()); // 1 tick after ETA.
-
- assertEq(timelock.isOperationReady(txHash), true, "Transaction should be executable.");
-
- vm.expectEmit(true, true, true, true, address(rewardsCoordinatorProxy));
- emit Upgraded(zDeployedImpl(type(RewardsCoordinator).name));
- execute();
-
- // 3. assert that the execute did something
- assertEq(timelock.isOperationDone(txHash), true, "Transaction should be executed.");
-
- // assert that the proxy implementation was updated.
- ProxyAdmin admin = ProxyAdmin(this._proxyAdmin());
- address rewardsCoordinatorImpl = admin.getProxyImplementation(
- TransparentUpgradeableProxy(payable(zDeployedProxy(type(RewardsCoordinator).name)))
- );
- assertEq(rewardsCoordinatorImpl, zDeployedImpl(type(RewardsCoordinator).name));
- assertNotEq(prevRewardsCoordinator, rewardsCoordinatorImpl, "expected rewardsCoordinatorImpl to be different");
-
- uint256 pausedStatusAfter = rewardsCoordinatorProxy.paused();
- address owner = this._operationsMultisig();
- IPauserRegistry pauserRegistry = IPauserRegistry(this._pauserRegistry());
- uint64 initPausedStatus = zUint64("REWARDS_COORDINATOR_INIT_PAUSED_STATUS");
- address rewardsUpdater = zAddress("REWARDS_COORDINATOR_UPDATER");
- uint32 activationDelay = zUint32("REWARDS_COORDINATOR_ACTIVATION_DELAY");
- uint16 defaultOperatorSplitBips = zUint16("REWARDS_COORDINATOR_DEFAULT_OPERATOR_SPLIT_BIPS");
-
- // Ensure that the proxy contract cannot be re-initialized.
- vm.expectRevert("Initializable: contract is already initialized");
- rewardsCoordinatorProxy.initialize(
- owner,
- pauserRegistry,
- initPausedStatus,
- rewardsUpdater,
- activationDelay,
- defaultOperatorSplitBips
- );
-
- // Assert Immutables and State Variables set through initialize
- assertEq(rewardsCoordinatorProxy.owner(), owner, "expected owner");
- assertEq(address(rewardsCoordinatorProxy.pauserRegistry()), address(pauserRegistry), "expected pauserRegistry");
- assertEq(address(rewardsCoordinatorProxy.rewardsUpdater()), rewardsUpdater, "expected rewardsUpdater");
- assertEq(rewardsCoordinatorProxy.activationDelay(), activationDelay, "expected activationDelay");
- assertEq(
- rewardsCoordinatorProxy.defaultOperatorSplitBips(),
- defaultOperatorSplitBips,
- "expected defaultOperatorSplitBips"
- );
- assertEq(
- pausedStatusBefore,
- pausedStatusAfter,
- "expected paused status to be the same before and after initialization"
- );
- assertEq(
- address(rewardsCoordinatorProxy.delegationManager()),
- zDeployedProxy(type(DelegationManager).name),
- "expected delegationManager"
- );
- assertEq(
- address(rewardsCoordinatorProxy.strategyManager()),
- zDeployedProxy(type(StrategyManager).name),
- "expected strategyManager"
- );
-
- assertEq(
- rewardsCoordinatorProxy.CALCULATION_INTERVAL_SECONDS(),
- zUint32("REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"),
- "expected REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
- );
- assertGt(
- rewardsCoordinatorProxy.CALCULATION_INTERVAL_SECONDS(),
- 0,
- "expected non-zero REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
- );
-
- assertEq(rewardsCoordinatorProxy.MAX_REWARDS_DURATION(), zUint32("REWARDS_COORDINATOR_MAX_REWARDS_DURATION"));
- assertGt(rewardsCoordinatorProxy.MAX_REWARDS_DURATION(), 0);
-
- assertEq(
- rewardsCoordinatorProxy.MAX_RETROACTIVE_LENGTH(),
- zUint32("REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH")
- );
- assertGt(rewardsCoordinatorProxy.MAX_RETROACTIVE_LENGTH(), 0);
-
- assertEq(rewardsCoordinatorProxy.MAX_FUTURE_LENGTH(), zUint32("REWARDS_COORDINATOR_MAX_FUTURE_LENGTH"));
- assertGt(rewardsCoordinatorProxy.MAX_FUTURE_LENGTH(), 0);
-
- assertEq(
- rewardsCoordinatorProxy.GENESIS_REWARDS_TIMESTAMP(),
- zUint32("REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP")
- );
- assertGt(rewardsCoordinatorProxy.GENESIS_REWARDS_TIMESTAMP(), 0);
- }
-}
diff --git a/script/releases/v0.5.2-rewardsv2/1-eoa.s.sol b/script/releases/v0.5.2-rewardsv2/1-eoa.s.sol
deleted file mode 100644
index 239dbb7348..0000000000
--- a/script/releases/v0.5.2-rewardsv2/1-eoa.s.sol
+++ /dev/null
@@ -1,132 +0,0 @@
-// SPDX-License-Identifier: BUSL-1.1
-pragma solidity ^0.8.12;
-
-import {EOADeployer} from "zeus-templates/templates/EOADeployer.sol";
-import {RewardsCoordinator} from "src/contracts/core/RewardsCoordinator.sol";
-import {IDelegationManager} from "src/contracts/interfaces/IDelegationManager.sol";
-import {DelegationManager} from "src/contracts/core/DelegationManager.sol";
-import {StrategyManager} from "src/contracts/core/StrategyManager.sol";
-import {EigenLabsUpgrade} from "../EigenLabsUpgrade.s.sol";
-import {Test, console} from "forge-std/Test.sol";
-import {IPauserRegistry} from "src/contracts/interfaces/IPauserRegistry.sol";
-
-contract Deploy is EOADeployer {
- using EigenLabsUpgrade for *;
-
- function _runAsEOA() internal override {
- zUpdateUint16(string("REWARDS_COORDINATOR_DEFAULT_OPERATOR_SPLIT_BIPS"), uint16(1000));
- zUpdateUint32(string("REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"), uint32(1 days));
-
- vm.startBroadcast();
- deploySingleton(
- address(
- new RewardsCoordinator(
- IDelegationManager(zDeployedProxy(type(DelegationManager).name)),
- StrategyManager(zDeployedProxy(type(StrategyManager).name)),
- zUint32("REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"),
- zUint32("REWARDS_COORDINATOR_MAX_REWARDS_DURATION"),
- zUint32("REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH"),
- zUint32("REWARDS_COORDINATOR_MAX_FUTURE_LENGTH"),
- zUint32("REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP")
- )
- ),
- this.impl(type(RewardsCoordinator).name)
- );
-
- vm.stopBroadcast();
- }
-
- function testDeploy() public virtual {
- // Deploy RewardsCoordinator Implementation
- address oldImpl = zDeployedImpl(type(RewardsCoordinator).name);
- runAsEOA();
- address newImpl = zDeployedImpl(type(RewardsCoordinator).name);
- assertTrue(oldImpl != newImpl, "impl should be different");
-
- Deployment[] memory deploys = deploys();
-
- // sanity check that zDeployedImpl is returning our deployment.
- assertEq(deploys[0].deployedTo, zDeployedImpl(type(RewardsCoordinator).name));
-
- RewardsCoordinator rewardsCoordinatorImpl = RewardsCoordinator(zDeployedImpl(type(RewardsCoordinator).name));
-
- address owner = this._operationsMultisig();
- IPauserRegistry pauserRegistry = IPauserRegistry(this._pauserRegistry());
- uint64 initPausedStatus = zUint64("REWARDS_COORDINATOR_INIT_PAUSED_STATUS");
- address rewardsUpdater = zAddress("REWARDS_COORDINATOR_UPDATER");
- uint32 activationDelay = zUint32("REWARDS_COORDINATOR_ACTIVATION_DELAY");
- uint16 defaultOperatorSplitBips = zUint16("REWARDS_COORDINATOR_DEFAULT_OPERATOR_SPLIT_BIPS");
-
- // Ensure that the implementation contract cannot be initialized.
- vm.expectRevert("Initializable: contract is already initialized");
- rewardsCoordinatorImpl.initialize(
- owner,
- pauserRegistry,
- initPausedStatus,
- rewardsUpdater,
- activationDelay,
- defaultOperatorSplitBips
- );
-
- // Assert Immutables and State Variables set through initialize
- assertEq(rewardsCoordinatorImpl.owner(), address(0), "expected owner");
- assertEq(address(rewardsCoordinatorImpl.pauserRegistry()), address(0), "expected pauserRegistry");
- assertEq(address(rewardsCoordinatorImpl.rewardsUpdater()), address(0), "expected rewardsUpdater");
- assertEq(rewardsCoordinatorImpl.activationDelay(), 0, "expected activationDelay");
- assertEq(rewardsCoordinatorImpl.defaultOperatorSplitBips(), 0, "expected defaultOperatorSplitBips");
-
- assertEq(
- address(rewardsCoordinatorImpl.delegationManager()),
- zDeployedProxy(type(DelegationManager).name),
- "expected delegationManager"
- );
- assertEq(
- address(rewardsCoordinatorImpl.strategyManager()),
- zDeployedProxy(type(StrategyManager).name),
- "expected strategyManager"
- );
-
- assertEq(
- rewardsCoordinatorImpl.CALCULATION_INTERVAL_SECONDS(),
- zUint32("REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"),
- "expected REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
- );
- assertEq(
- rewardsCoordinatorImpl.CALCULATION_INTERVAL_SECONDS(),
- 1 days,
- "expected REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
- );
- assertGt(
- rewardsCoordinatorImpl.CALCULATION_INTERVAL_SECONDS(),
- 0,
- "expected non-zero REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
- );
-
- assertEq(rewardsCoordinatorImpl.MAX_REWARDS_DURATION(), zUint32("REWARDS_COORDINATOR_MAX_REWARDS_DURATION"));
- assertGt(rewardsCoordinatorImpl.MAX_REWARDS_DURATION(), 0);
-
- assertEq(
- rewardsCoordinatorImpl.MAX_RETROACTIVE_LENGTH(),
- zUint32("REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH")
- );
- assertGt(rewardsCoordinatorImpl.MAX_RETROACTIVE_LENGTH(), 0);
-
- assertEq(rewardsCoordinatorImpl.MAX_FUTURE_LENGTH(), zUint32("REWARDS_COORDINATOR_MAX_FUTURE_LENGTH"));
- assertGt(rewardsCoordinatorImpl.MAX_FUTURE_LENGTH(), 0);
-
- assertEq(
- rewardsCoordinatorImpl.GENESIS_REWARDS_TIMESTAMP(),
- zUint32("REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP")
- );
- assertGt(rewardsCoordinatorImpl.GENESIS_REWARDS_TIMESTAMP(), 0);
-
- assertEq(deploys.length, 1, "expected exactly 1 deployment");
- assertEq(
- keccak256(bytes(deploys[0].name)),
- keccak256(bytes(this.impl(type(RewardsCoordinator).name))),
- "zeusTest: Deployment name is not RewardsCoordinator"
- );
- assertTrue(deploys[0].singleton == true, "zeusTest: RewardsCoordinator should be a singleton.");
- assertNotEq(deploys[0].deployedTo, address(0), "zeusTest: Should deploy to non-zero address.");
- }
-}
diff --git a/script/releases/v0.5.2-rewardsv2/2-multisig.s.sol b/script/releases/v0.5.2-rewardsv2/2-multisig.s.sol
deleted file mode 100644
index c43b2a5b37..0000000000
--- a/script/releases/v0.5.2-rewardsv2/2-multisig.s.sol
+++ /dev/null
@@ -1,82 +0,0 @@
-// SPDX-License-Identifier: BUSL-1.1
-pragma solidity ^0.8.12;
-
-import {MultisigCall, MultisigCallUtils, MultisigBuilder} from "zeus-templates/templates/MultisigBuilder.sol";
-import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
-import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
-import {Deploy} from "./1-eoa.s.sol";
-import {RewardsCoordinator} from "src/contracts/core/RewardsCoordinator.sol";
-import {EigenLabsUpgrade} from "../EigenLabsUpgrade.s.sol";
-import {IPauserRegistry} from "src/contracts/interfaces/IPauserRegistry.sol";
-import {ITimelock} from "zeus-templates/interfaces/ITimelock.sol";
-import {console} from "forge-std/console.sol";
-import {EncGnosisSafe} from "zeus-templates/utils/EncGnosisSafe.sol";
-import {MultisigCallUtils, MultisigCall} from "zeus-templates/utils/MultisigCallUtils.sol";
-import {IMultiSend} from "zeus-templates/interfaces/IMultiSend.sol";
-import {TimelockController} from "@openzeppelin/contracts/governance/TimelockController.sol";
-
-/**
- * Purpose: enqueue a multisig transaction which tells the ProxyAdmin to upgrade RewardsCoordinator.
- */
-contract Queue is MultisigBuilder, Deploy {
- using MultisigCallUtils for MultisigCall[];
- using EigenLabsUpgrade for *;
- using EncGnosisSafe for *;
- using MultisigCallUtils for *;
-
- MultisigCall[] private _executorCalls;
- MultisigCall[] private _opsCalls;
-
- function options() internal virtual override view returns (MultisigOptions memory) {
- return MultisigOptions(
- this._operationsMultisig(),
- Operation.Call
- );
- }
-
- function _getMultisigTransactionCalldata() internal view returns (bytes memory) {
- ProxyAdmin pa = ProxyAdmin(this._proxyAdmin());
-
- bytes memory proxyAdminCalldata = abi.encodeCall(
- pa.upgrade,
- (
- TransparentUpgradeableProxy(payable(zDeployedProxy(type(RewardsCoordinator).name))),
- zDeployedImpl(type(RewardsCoordinator).name)
- )
- );
-
- bytes memory executorMultisigCalldata = address(this._timelock()).calldataToExecTransaction(
- this._proxyAdmin(),
- proxyAdminCalldata,
- EncGnosisSafe.Operation.Call
- );
-
- return (executorMultisigCalldata);
- }
-
- function runAsMultisig() internal virtual override {
- bytes memory executorMultisigCalldata = _getMultisigTransactionCalldata();
-
- TimelockController timelock = TimelockController(payable(this._timelock()));
- timelock.schedule(
- this._executorMultisig(),
- 0 /* value */,
- executorMultisigCalldata,
- 0 /* predecessor */,
- bytes32(0) /* salt */,
- timelock.getMinDelay()
- );
- }
-
- function testDeploy() public virtual override {
- runAsEOA();
-
- execute();
- TimelockController timelock = TimelockController(payable(this._timelock()));
-
- bytes memory multisigTxnData = _getMultisigTransactionCalldata();
- bytes32 txHash = timelock.hashOperation(this._executorMultisig(), 0, multisigTxnData, 0, 0);
-
- assertEq(timelock.isOperationPending(txHash), true, "Transaction should be queued.");
- }
-}
diff --git a/script/releases/v0.5.2-rewardsv2/3-multisig.s.sol b/script/releases/v0.5.2-rewardsv2/3-multisig.s.sol
deleted file mode 100644
index 4b46fb34ef..0000000000
--- a/script/releases/v0.5.2-rewardsv2/3-multisig.s.sol
+++ /dev/null
@@ -1,162 +0,0 @@
-// SPDX-License-Identifier: BUSL-1.1
-pragma solidity ^0.8.12;
-
-import {MultisigCall, MultisigCallUtils, MultisigBuilder} from "zeus-templates/templates/MultisigBuilder.sol";
-import {SafeTx, SafeTxUtils} from "zeus-templates/utils/SafeTxUtils.sol";
-import {Queue} from "./2-multisig.s.sol";
-import {EigenLabsUpgrade} from "../EigenLabsUpgrade.s.sol";
-import {TimelockController} from "@openzeppelin/contracts/governance/TimelockController.sol";
-import {RewardsCoordinator} from "src/contracts/core/RewardsCoordinator.sol";
-import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
-import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
-import {IPauserRegistry} from "src/contracts/interfaces/IPauserRegistry.sol";
-import {DelegationManager} from "src/contracts/core/DelegationManager.sol";
-import {StrategyManager} from "src/contracts/core/StrategyManager.sol";
-import {console} from "forge-std/console.sol";
-
-contract Execute is Queue {
- using MultisigCallUtils for MultisigCall[];
- using SafeTxUtils for SafeTx;
- using EigenLabsUpgrade for *;
-
- event Upgraded(address indexed implementation);
-
- function options() internal view override returns (MultisigOptions memory) {
- return MultisigOptions(this._protocolCouncilMultisig(), Operation.Call);
- }
-
- /**
- * @dev Overrides the previous _execute function to execute the queued transactions.
- */
- function runAsMultisig() internal override {
- bytes memory executorMultisigCalldata = _getMultisigTransactionCalldata();
- TimelockController timelock = TimelockController(payable(this._timelock()));
- timelock.execute(
- this._executorMultisig(),
- 0 /* value */,
- executorMultisigCalldata,
- 0 /* predecessor */,
- bytes32(0) /* salt */
- );
- }
-
- function testDeploy() public override {
- // save the previous implementation address to assert its change later
- address prevRewardsCoordinator = zDeployedImpl(type(RewardsCoordinator).name);
-
- // 0. Deploy the Implementation contract.
- runAsEOA();
-
- // 1. run the queue script.
- vm.startPrank(this._operationsMultisig());
- super.runAsMultisig();
- vm.stopPrank();
-
- RewardsCoordinator rewardsCoordinatorProxy = RewardsCoordinator(zDeployedProxy(type(RewardsCoordinator).name));
- uint256 pausedStatusBefore = rewardsCoordinatorProxy.paused();
- TimelockController timelock = this._timelock();
-
- // 2. run the execute script above.
- bytes memory multisigTxnData = _getMultisigTransactionCalldata();
- bytes32 txHash = timelock.hashOperation(this._executorMultisig(), 0, multisigTxnData, 0, 0);
-
- assertEq(timelock.isOperationPending(txHash), true, "Transaction should be queued and pending.");
- vm.warp(block.timestamp + timelock.getMinDelay()); // 1 tick after ETA.
-
- assertEq(timelock.isOperationReady(txHash), true, "Transaction should be executable.");
-
- vm.expectEmit(true, true, true, true, address(rewardsCoordinatorProxy));
- emit Upgraded(zDeployedImpl(type(RewardsCoordinator).name));
- execute();
-
- // 3. assert that the execute did something
- assertEq(timelock.isOperationDone(txHash), true, "Transaction should be executed.");
-
- // assert that the proxy implementation was updated.
- ProxyAdmin admin = ProxyAdmin(this._proxyAdmin());
- address rewardsCoordinatorImpl = admin.getProxyImplementation(
- TransparentUpgradeableProxy(payable(zDeployedProxy(type(RewardsCoordinator).name)))
- );
- assertEq(rewardsCoordinatorImpl, zDeployedImpl(type(RewardsCoordinator).name));
- assertNotEq(prevRewardsCoordinator, rewardsCoordinatorImpl, "expected rewardsCoordinatorImpl to be different");
-
- uint256 pausedStatusAfter = rewardsCoordinatorProxy.paused();
- address owner = this._operationsMultisig();
- IPauserRegistry pauserRegistry = IPauserRegistry(this._pauserRegistry());
- uint64 initPausedStatus = zUint64("REWARDS_COORDINATOR_INIT_PAUSED_STATUS");
- address rewardsUpdater = zAddress("REWARDS_COORDINATOR_UPDATER");
- uint32 activationDelay = zUint32("REWARDS_COORDINATOR_ACTIVATION_DELAY");
- uint16 defaultOperatorSplitBips = zUint16("REWARDS_COORDINATOR_DEFAULT_OPERATOR_SPLIT_BIPS");
-
- // Ensure that the proxy contract cannot be re-initialized.
- vm.expectRevert("Initializable: contract is already initialized");
- rewardsCoordinatorProxy.initialize(
- owner,
- pauserRegistry,
- initPausedStatus,
- rewardsUpdater,
- activationDelay,
- defaultOperatorSplitBips
- );
-
- // Assert Immutables and State Variables set through initialize
- assertEq(rewardsCoordinatorProxy.owner(), owner, "expected owner");
- assertEq(address(rewardsCoordinatorProxy.pauserRegistry()), address(pauserRegistry), "expected pauserRegistry");
- assertEq(address(rewardsCoordinatorProxy.rewardsUpdater()), rewardsUpdater, "expected rewardsUpdater");
- assertEq(rewardsCoordinatorProxy.activationDelay(), activationDelay, "expected activationDelay");
- assertEq(
- rewardsCoordinatorProxy.defaultOperatorSplitBips(),
- defaultOperatorSplitBips,
- "expected defaultOperatorSplitBips"
- );
- assertEq(
- pausedStatusBefore,
- pausedStatusAfter,
- "expected paused status to be the same before and after initialization"
- );
- assertEq(
- address(rewardsCoordinatorProxy.delegationManager()),
- zDeployedProxy(type(DelegationManager).name),
- "expected delegationManager"
- );
- assertEq(
- address(rewardsCoordinatorProxy.strategyManager()),
- zDeployedProxy(type(StrategyManager).name),
- "expected strategyManager"
- );
-
- assertEq(
- rewardsCoordinatorProxy.CALCULATION_INTERVAL_SECONDS(),
- zUint32("REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"),
- "expected REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
- );
- assertEq(
- rewardsCoordinatorProxy.CALCULATION_INTERVAL_SECONDS(),
- 1 days,
- "expected REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
- );
- assertGt(
- rewardsCoordinatorProxy.CALCULATION_INTERVAL_SECONDS(),
- 0,
- "expected non-zero REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
- );
-
- assertEq(rewardsCoordinatorProxy.MAX_REWARDS_DURATION(), zUint32("REWARDS_COORDINATOR_MAX_REWARDS_DURATION"));
- assertGt(rewardsCoordinatorProxy.MAX_REWARDS_DURATION(), 0);
-
- assertEq(
- rewardsCoordinatorProxy.MAX_RETROACTIVE_LENGTH(),
- zUint32("REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH")
- );
- assertGt(rewardsCoordinatorProxy.MAX_RETROACTIVE_LENGTH(), 0);
-
- assertEq(rewardsCoordinatorProxy.MAX_FUTURE_LENGTH(), zUint32("REWARDS_COORDINATOR_MAX_FUTURE_LENGTH"));
- assertGt(rewardsCoordinatorProxy.MAX_FUTURE_LENGTH(), 0);
-
- assertEq(
- rewardsCoordinatorProxy.GENESIS_REWARDS_TIMESTAMP(),
- zUint32("REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP")
- );
- assertGt(rewardsCoordinatorProxy.GENESIS_REWARDS_TIMESTAMP(), 0);
- }
-}
diff --git a/script/releases/v0.5.3-rewardsv2/1-eoa.s.sol b/script/releases/v0.5.3-rewardsv2/1-eoa.s.sol
deleted file mode 100644
index 8634e2dd10..0000000000
--- a/script/releases/v0.5.3-rewardsv2/1-eoa.s.sol
+++ /dev/null
@@ -1,133 +0,0 @@
-// SPDX-License-Identifier: BUSL-1.1
-pragma solidity ^0.8.12;
-
-import {EOADeployer} from "zeus-templates/templates/EOADeployer.sol";
-import {RewardsCoordinator} from "src/contracts/core/RewardsCoordinator.sol";
-import {IDelegationManager} from "src/contracts/interfaces/IDelegationManager.sol";
-import {DelegationManager} from "src/contracts/core/DelegationManager.sol";
-import {StrategyManager} from "src/contracts/core/StrategyManager.sol";
-import {EigenLabsUpgrade} from "../EigenLabsUpgrade.s.sol";
-import {Test, console} from "forge-std/Test.sol";
-import {IPauserRegistry} from "src/contracts/interfaces/IPauserRegistry.sol";
-
-contract Deploy is EOADeployer {
- using EigenLabsUpgrade for *;
-
- function _runAsEOA() internal override {
- zUpdateUint16(string("REWARDS_COORDINATOR_DEFAULT_OPERATOR_SPLIT_BIPS"), uint16(1000));
- zUpdateUint32(string("REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"), uint32(1 days));
-
- // Deploying new RewardsCoordinator implementation with operator split activation delay lock.
- vm.startBroadcast();
- deploySingleton(
- address(
- new RewardsCoordinator(
- IDelegationManager(zDeployedProxy(type(DelegationManager).name)),
- StrategyManager(zDeployedProxy(type(StrategyManager).name)),
- zUint32("REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"),
- zUint32("REWARDS_COORDINATOR_MAX_REWARDS_DURATION"),
- zUint32("REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH"),
- zUint32("REWARDS_COORDINATOR_MAX_FUTURE_LENGTH"),
- zUint32("REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP")
- )
- ),
- this.impl(type(RewardsCoordinator).name)
- );
-
- vm.stopBroadcast();
- }
-
- function testDeploy() public virtual {
- // Deploy RewardsCoordinator Implementation
- address oldImpl = zDeployedImpl(type(RewardsCoordinator).name);
- runAsEOA();
- address newImpl = zDeployedImpl(type(RewardsCoordinator).name);
- assertTrue(oldImpl != newImpl, "impl should be different");
-
- Deployment[] memory deploys = deploys();
-
- // sanity check that zDeployedImpl is returning our deployment.
- assertEq(deploys[0].deployedTo, zDeployedImpl(type(RewardsCoordinator).name));
-
- RewardsCoordinator rewardsCoordinatorImpl = RewardsCoordinator(zDeployedImpl(type(RewardsCoordinator).name));
-
- address owner = this._operationsMultisig();
- IPauserRegistry pauserRegistry = IPauserRegistry(this._pauserRegistry());
- uint64 initPausedStatus = zUint64("REWARDS_COORDINATOR_INIT_PAUSED_STATUS");
- address rewardsUpdater = zAddress("REWARDS_COORDINATOR_UPDATER");
- uint32 activationDelay = zUint32("REWARDS_COORDINATOR_ACTIVATION_DELAY");
- uint16 defaultOperatorSplitBips = zUint16("REWARDS_COORDINATOR_DEFAULT_OPERATOR_SPLIT_BIPS");
-
- // Ensure that the implementation contract cannot be initialized.
- vm.expectRevert("Initializable: contract is already initialized");
- rewardsCoordinatorImpl.initialize(
- owner,
- pauserRegistry,
- initPausedStatus,
- rewardsUpdater,
- activationDelay,
- defaultOperatorSplitBips
- );
-
- // Assert Immutables and State Variables set through initialize
- assertEq(rewardsCoordinatorImpl.owner(), address(0), "expected owner");
- assertEq(address(rewardsCoordinatorImpl.pauserRegistry()), address(0), "expected pauserRegistry");
- assertEq(address(rewardsCoordinatorImpl.rewardsUpdater()), address(0), "expected rewardsUpdater");
- assertEq(rewardsCoordinatorImpl.activationDelay(), 0, "expected activationDelay");
- assertEq(rewardsCoordinatorImpl.defaultOperatorSplitBips(), 0, "expected defaultOperatorSplitBips");
-
- assertEq(
- address(rewardsCoordinatorImpl.delegationManager()),
- zDeployedProxy(type(DelegationManager).name),
- "expected delegationManager"
- );
- assertEq(
- address(rewardsCoordinatorImpl.strategyManager()),
- zDeployedProxy(type(StrategyManager).name),
- "expected strategyManager"
- );
-
- assertEq(
- rewardsCoordinatorImpl.CALCULATION_INTERVAL_SECONDS(),
- zUint32("REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"),
- "expected REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
- );
- assertEq(
- rewardsCoordinatorImpl.CALCULATION_INTERVAL_SECONDS(),
- 1 days,
- "expected REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
- );
- assertGt(
- rewardsCoordinatorImpl.CALCULATION_INTERVAL_SECONDS(),
- 0,
- "expected non-zero REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
- );
-
- assertEq(rewardsCoordinatorImpl.MAX_REWARDS_DURATION(), zUint32("REWARDS_COORDINATOR_MAX_REWARDS_DURATION"));
- assertGt(rewardsCoordinatorImpl.MAX_REWARDS_DURATION(), 0);
-
- assertEq(
- rewardsCoordinatorImpl.MAX_RETROACTIVE_LENGTH(),
- zUint32("REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH")
- );
- assertGt(rewardsCoordinatorImpl.MAX_RETROACTIVE_LENGTH(), 0);
-
- assertEq(rewardsCoordinatorImpl.MAX_FUTURE_LENGTH(), zUint32("REWARDS_COORDINATOR_MAX_FUTURE_LENGTH"));
- assertGt(rewardsCoordinatorImpl.MAX_FUTURE_LENGTH(), 0);
-
- assertEq(
- rewardsCoordinatorImpl.GENESIS_REWARDS_TIMESTAMP(),
- zUint32("REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP")
- );
- assertGt(rewardsCoordinatorImpl.GENESIS_REWARDS_TIMESTAMP(), 0);
-
- assertEq(deploys.length, 1, "expected exactly 1 deployment");
- assertEq(
- keccak256(bytes(deploys[0].name)),
- keccak256(bytes(this.impl(type(RewardsCoordinator).name))),
- "zeusTest: Deployment name is not RewardsCoordinator"
- );
- assertTrue(deploys[0].singleton == true, "zeusTest: RewardsCoordinator should be a singleton.");
- assertNotEq(deploys[0].deployedTo, address(0), "zeusTest: Should deploy to non-zero address.");
- }
-}
diff --git a/script/releases/v0.5.3-rewardsv2/2-multisig.s.sol b/script/releases/v0.5.3-rewardsv2/2-multisig.s.sol
deleted file mode 100644
index c43b2a5b37..0000000000
--- a/script/releases/v0.5.3-rewardsv2/2-multisig.s.sol
+++ /dev/null
@@ -1,82 +0,0 @@
-// SPDX-License-Identifier: BUSL-1.1
-pragma solidity ^0.8.12;
-
-import {MultisigCall, MultisigCallUtils, MultisigBuilder} from "zeus-templates/templates/MultisigBuilder.sol";
-import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
-import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
-import {Deploy} from "./1-eoa.s.sol";
-import {RewardsCoordinator} from "src/contracts/core/RewardsCoordinator.sol";
-import {EigenLabsUpgrade} from "../EigenLabsUpgrade.s.sol";
-import {IPauserRegistry} from "src/contracts/interfaces/IPauserRegistry.sol";
-import {ITimelock} from "zeus-templates/interfaces/ITimelock.sol";
-import {console} from "forge-std/console.sol";
-import {EncGnosisSafe} from "zeus-templates/utils/EncGnosisSafe.sol";
-import {MultisigCallUtils, MultisigCall} from "zeus-templates/utils/MultisigCallUtils.sol";
-import {IMultiSend} from "zeus-templates/interfaces/IMultiSend.sol";
-import {TimelockController} from "@openzeppelin/contracts/governance/TimelockController.sol";
-
-/**
- * Purpose: enqueue a multisig transaction which tells the ProxyAdmin to upgrade RewardsCoordinator.
- */
-contract Queue is MultisigBuilder, Deploy {
- using MultisigCallUtils for MultisigCall[];
- using EigenLabsUpgrade for *;
- using EncGnosisSafe for *;
- using MultisigCallUtils for *;
-
- MultisigCall[] private _executorCalls;
- MultisigCall[] private _opsCalls;
-
- function options() internal virtual override view returns (MultisigOptions memory) {
- return MultisigOptions(
- this._operationsMultisig(),
- Operation.Call
- );
- }
-
- function _getMultisigTransactionCalldata() internal view returns (bytes memory) {
- ProxyAdmin pa = ProxyAdmin(this._proxyAdmin());
-
- bytes memory proxyAdminCalldata = abi.encodeCall(
- pa.upgrade,
- (
- TransparentUpgradeableProxy(payable(zDeployedProxy(type(RewardsCoordinator).name))),
- zDeployedImpl(type(RewardsCoordinator).name)
- )
- );
-
- bytes memory executorMultisigCalldata = address(this._timelock()).calldataToExecTransaction(
- this._proxyAdmin(),
- proxyAdminCalldata,
- EncGnosisSafe.Operation.Call
- );
-
- return (executorMultisigCalldata);
- }
-
- function runAsMultisig() internal virtual override {
- bytes memory executorMultisigCalldata = _getMultisigTransactionCalldata();
-
- TimelockController timelock = TimelockController(payable(this._timelock()));
- timelock.schedule(
- this._executorMultisig(),
- 0 /* value */,
- executorMultisigCalldata,
- 0 /* predecessor */,
- bytes32(0) /* salt */,
- timelock.getMinDelay()
- );
- }
-
- function testDeploy() public virtual override {
- runAsEOA();
-
- execute();
- TimelockController timelock = TimelockController(payable(this._timelock()));
-
- bytes memory multisigTxnData = _getMultisigTransactionCalldata();
- bytes32 txHash = timelock.hashOperation(this._executorMultisig(), 0, multisigTxnData, 0, 0);
-
- assertEq(timelock.isOperationPending(txHash), true, "Transaction should be queued.");
- }
-}
diff --git a/script/releases/v0.5.3-rewardsv2/3-multisig.s.sol b/script/releases/v0.5.3-rewardsv2/3-multisig.s.sol
deleted file mode 100644
index 4b46fb34ef..0000000000
--- a/script/releases/v0.5.3-rewardsv2/3-multisig.s.sol
+++ /dev/null
@@ -1,162 +0,0 @@
-// SPDX-License-Identifier: BUSL-1.1
-pragma solidity ^0.8.12;
-
-import {MultisigCall, MultisigCallUtils, MultisigBuilder} from "zeus-templates/templates/MultisigBuilder.sol";
-import {SafeTx, SafeTxUtils} from "zeus-templates/utils/SafeTxUtils.sol";
-import {Queue} from "./2-multisig.s.sol";
-import {EigenLabsUpgrade} from "../EigenLabsUpgrade.s.sol";
-import {TimelockController} from "@openzeppelin/contracts/governance/TimelockController.sol";
-import {RewardsCoordinator} from "src/contracts/core/RewardsCoordinator.sol";
-import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
-import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
-import {IPauserRegistry} from "src/contracts/interfaces/IPauserRegistry.sol";
-import {DelegationManager} from "src/contracts/core/DelegationManager.sol";
-import {StrategyManager} from "src/contracts/core/StrategyManager.sol";
-import {console} from "forge-std/console.sol";
-
-contract Execute is Queue {
- using MultisigCallUtils for MultisigCall[];
- using SafeTxUtils for SafeTx;
- using EigenLabsUpgrade for *;
-
- event Upgraded(address indexed implementation);
-
- function options() internal view override returns (MultisigOptions memory) {
- return MultisigOptions(this._protocolCouncilMultisig(), Operation.Call);
- }
-
- /**
- * @dev Overrides the previous _execute function to execute the queued transactions.
- */
- function runAsMultisig() internal override {
- bytes memory executorMultisigCalldata = _getMultisigTransactionCalldata();
- TimelockController timelock = TimelockController(payable(this._timelock()));
- timelock.execute(
- this._executorMultisig(),
- 0 /* value */,
- executorMultisigCalldata,
- 0 /* predecessor */,
- bytes32(0) /* salt */
- );
- }
-
- function testDeploy() public override {
- // save the previous implementation address to assert its change later
- address prevRewardsCoordinator = zDeployedImpl(type(RewardsCoordinator).name);
-
- // 0. Deploy the Implementation contract.
- runAsEOA();
-
- // 1. run the queue script.
- vm.startPrank(this._operationsMultisig());
- super.runAsMultisig();
- vm.stopPrank();
-
- RewardsCoordinator rewardsCoordinatorProxy = RewardsCoordinator(zDeployedProxy(type(RewardsCoordinator).name));
- uint256 pausedStatusBefore = rewardsCoordinatorProxy.paused();
- TimelockController timelock = this._timelock();
-
- // 2. run the execute script above.
- bytes memory multisigTxnData = _getMultisigTransactionCalldata();
- bytes32 txHash = timelock.hashOperation(this._executorMultisig(), 0, multisigTxnData, 0, 0);
-
- assertEq(timelock.isOperationPending(txHash), true, "Transaction should be queued and pending.");
- vm.warp(block.timestamp + timelock.getMinDelay()); // 1 tick after ETA.
-
- assertEq(timelock.isOperationReady(txHash), true, "Transaction should be executable.");
-
- vm.expectEmit(true, true, true, true, address(rewardsCoordinatorProxy));
- emit Upgraded(zDeployedImpl(type(RewardsCoordinator).name));
- execute();
-
- // 3. assert that the execute did something
- assertEq(timelock.isOperationDone(txHash), true, "Transaction should be executed.");
-
- // assert that the proxy implementation was updated.
- ProxyAdmin admin = ProxyAdmin(this._proxyAdmin());
- address rewardsCoordinatorImpl = admin.getProxyImplementation(
- TransparentUpgradeableProxy(payable(zDeployedProxy(type(RewardsCoordinator).name)))
- );
- assertEq(rewardsCoordinatorImpl, zDeployedImpl(type(RewardsCoordinator).name));
- assertNotEq(prevRewardsCoordinator, rewardsCoordinatorImpl, "expected rewardsCoordinatorImpl to be different");
-
- uint256 pausedStatusAfter = rewardsCoordinatorProxy.paused();
- address owner = this._operationsMultisig();
- IPauserRegistry pauserRegistry = IPauserRegistry(this._pauserRegistry());
- uint64 initPausedStatus = zUint64("REWARDS_COORDINATOR_INIT_PAUSED_STATUS");
- address rewardsUpdater = zAddress("REWARDS_COORDINATOR_UPDATER");
- uint32 activationDelay = zUint32("REWARDS_COORDINATOR_ACTIVATION_DELAY");
- uint16 defaultOperatorSplitBips = zUint16("REWARDS_COORDINATOR_DEFAULT_OPERATOR_SPLIT_BIPS");
-
- // Ensure that the proxy contract cannot be re-initialized.
- vm.expectRevert("Initializable: contract is already initialized");
- rewardsCoordinatorProxy.initialize(
- owner,
- pauserRegistry,
- initPausedStatus,
- rewardsUpdater,
- activationDelay,
- defaultOperatorSplitBips
- );
-
- // Assert Immutables and State Variables set through initialize
- assertEq(rewardsCoordinatorProxy.owner(), owner, "expected owner");
- assertEq(address(rewardsCoordinatorProxy.pauserRegistry()), address(pauserRegistry), "expected pauserRegistry");
- assertEq(address(rewardsCoordinatorProxy.rewardsUpdater()), rewardsUpdater, "expected rewardsUpdater");
- assertEq(rewardsCoordinatorProxy.activationDelay(), activationDelay, "expected activationDelay");
- assertEq(
- rewardsCoordinatorProxy.defaultOperatorSplitBips(),
- defaultOperatorSplitBips,
- "expected defaultOperatorSplitBips"
- );
- assertEq(
- pausedStatusBefore,
- pausedStatusAfter,
- "expected paused status to be the same before and after initialization"
- );
- assertEq(
- address(rewardsCoordinatorProxy.delegationManager()),
- zDeployedProxy(type(DelegationManager).name),
- "expected delegationManager"
- );
- assertEq(
- address(rewardsCoordinatorProxy.strategyManager()),
- zDeployedProxy(type(StrategyManager).name),
- "expected strategyManager"
- );
-
- assertEq(
- rewardsCoordinatorProxy.CALCULATION_INTERVAL_SECONDS(),
- zUint32("REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"),
- "expected REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
- );
- assertEq(
- rewardsCoordinatorProxy.CALCULATION_INTERVAL_SECONDS(),
- 1 days,
- "expected REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
- );
- assertGt(
- rewardsCoordinatorProxy.CALCULATION_INTERVAL_SECONDS(),
- 0,
- "expected non-zero REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
- );
-
- assertEq(rewardsCoordinatorProxy.MAX_REWARDS_DURATION(), zUint32("REWARDS_COORDINATOR_MAX_REWARDS_DURATION"));
- assertGt(rewardsCoordinatorProxy.MAX_REWARDS_DURATION(), 0);
-
- assertEq(
- rewardsCoordinatorProxy.MAX_RETROACTIVE_LENGTH(),
- zUint32("REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH")
- );
- assertGt(rewardsCoordinatorProxy.MAX_RETROACTIVE_LENGTH(), 0);
-
- assertEq(rewardsCoordinatorProxy.MAX_FUTURE_LENGTH(), zUint32("REWARDS_COORDINATOR_MAX_FUTURE_LENGTH"));
- assertGt(rewardsCoordinatorProxy.MAX_FUTURE_LENGTH(), 0);
-
- assertEq(
- rewardsCoordinatorProxy.GENESIS_REWARDS_TIMESTAMP(),
- zUint32("REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP")
- );
- assertGt(rewardsCoordinatorProxy.GENESIS_REWARDS_TIMESTAMP(), 0);
- }
-}
diff --git a/script/releases/v1.0.0-slashing/1-deployContracts.s.sol b/script/releases/v1.0.0-slashing/1-deployContracts.s.sol
new file mode 100644
index 0000000000..6c5828600a
--- /dev/null
+++ b/script/releases/v1.0.0-slashing/1-deployContracts.s.sol
@@ -0,0 +1,528 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.12;
+
+import {EOADeployer} from "zeus-templates/templates/EOADeployer.sol";
+import "../Env.sol";
+
+import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
+import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
+import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
+import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
+
+/**
+ * Purpose: use an EOA to deploy all of the new contracts for this upgrade.
+ */
+contract Deploy is EOADeployer {
+ using Env for *;
+
+ function _runAsEOA() internal override {
+ vm.startBroadcast();
+
+ /// permissions/
+
+ address[] memory pausers = new address[](3);
+ pausers[0] = Env.pauserMultisig();
+ pausers[1] = Env.opsMultisig();
+ pausers[2] = Env.executorMultisig();
+
+ deployImpl({
+ name: type(PauserRegistry).name,
+ deployedTo: address(new PauserRegistry({
+ _pausers: pausers,
+ _unpauser: Env.executorMultisig()
+ }))
+ });
+
+ deployImpl({
+ name: type(PermissionController).name,
+ deployedTo: address(new PermissionController())
+ });
+
+ deployProxy({
+ name: type(PermissionController).name,
+ deployedTo: address(new TransparentUpgradeableProxy({
+ _logic: address(Env.impl.permissionController()),
+ admin_: Env.proxyAdmin(),
+ _data: ""
+ }))
+ });
+
+ /// core/
+
+ deployImpl({
+ name: type(AllocationManager).name,
+ deployedTo: address(new AllocationManager({
+ _delegation: Env.proxy.delegationManager(),
+ _pauserRegistry: Env.impl.pauserRegistry(),
+ _permissionController: Env.proxy.permissionController(),
+ _DEALLOCATION_DELAY: Env.MIN_WITHDRAWAL_DELAY(),
+ _ALLOCATION_CONFIGURATION_DELAY: Env.ALLOCATION_CONFIGURATION_DELAY()
+ }))
+ });
+
+ deployProxy({
+ name: type(AllocationManager).name,
+ deployedTo: address(new TransparentUpgradeableProxy({
+ _logic: address(Env.impl.allocationManager()),
+ admin_: Env.proxyAdmin(),
+ _data: abi.encodeCall(
+ AllocationManager.initialize,
+ (
+ Env.executorMultisig(), // initialOwner
+ 0 // initialPausedStatus
+ )
+ )
+ }))
+ });
+
+ deployImpl({
+ name: type(AVSDirectory).name,
+ deployedTo: address(new AVSDirectory({
+ _delegation: Env.proxy.delegationManager(),
+ _pauserRegistry: Env.impl.pauserRegistry()
+ }))
+ });
+
+ deployImpl({
+ name: type(DelegationManager).name,
+ deployedTo: address(new DelegationManager({
+ _strategyManager: Env.proxy.strategyManager(),
+ _eigenPodManager: Env.proxy.eigenPodManager(),
+ _allocationManager: Env.proxy.allocationManager(),
+ _pauserRegistry: Env.impl.pauserRegistry(),
+ _permissionController: Env.proxy.permissionController(),
+ _MIN_WITHDRAWAL_DELAY: Env.MIN_WITHDRAWAL_DELAY()
+ }))
+ });
+
+ deployImpl({
+ name: type(RewardsCoordinator).name,
+ deployedTo: address(new RewardsCoordinator({
+ _delegationManager: Env.proxy.delegationManager(),
+ _strategyManager: Env.proxy.strategyManager(),
+ _allocationManager: Env.proxy.allocationManager(),
+ _pauserRegistry: Env.impl.pauserRegistry(),
+ _permissionController: Env.proxy.permissionController(),
+ _CALCULATION_INTERVAL_SECONDS: Env.CALCULATION_INTERVAL_SECONDS(),
+ _MAX_REWARDS_DURATION: Env.MAX_REWARDS_DURATION(),
+ _MAX_RETROACTIVE_LENGTH: Env.MAX_RETROACTIVE_LENGTH(),
+ _MAX_FUTURE_LENGTH: Env.MAX_FUTURE_LENGTH(),
+ _GENESIS_REWARDS_TIMESTAMP: Env.GENESIS_REWARDS_TIMESTAMP()
+ }))
+ });
+
+ deployImpl({
+ name: type(StrategyManager).name,
+ deployedTo: address(new StrategyManager({
+ _delegation: Env.proxy.delegationManager(),
+ _pauserRegistry: Env.impl.pauserRegistry()
+ }))
+ });
+
+ /// pods/
+
+ deployImpl({
+ name: type(EigenPodManager).name,
+ deployedTo: address(new EigenPodManager({
+ _ethPOS: Env.ethPOS(),
+ _eigenPodBeacon: Env.beacon.eigenPod(),
+ _delegationManager: Env.proxy.delegationManager(),
+ _pauserRegistry: Env.impl.pauserRegistry()
+ }))
+ });
+
+ deployImpl({
+ name: type(EigenPod).name,
+ deployedTo: address(new EigenPod({
+ _ethPOS: Env.ethPOS(),
+ _eigenPodManager: Env.proxy.eigenPodManager(),
+ _GENESIS_TIME: Env.EIGENPOD_GENESIS_TIME()
+ }))
+ });
+
+ /// strategies/
+
+ deployImpl({
+ name: type(StrategyBaseTVLLimits).name,
+ deployedTo: address(new StrategyBaseTVLLimits({
+ _strategyManager: Env.proxy.strategyManager(),
+ _pauserRegistry: Env.impl.pauserRegistry()
+ }))
+ });
+
+ deployImpl({
+ name: type(EigenStrategy).name,
+ deployedTo: address(new EigenStrategy({
+ _strategyManager: Env.proxy.strategyManager(),
+ _pauserRegistry: Env.impl.pauserRegistry()
+ }))
+ });
+
+ deployImpl({
+ name: type(StrategyFactory).name,
+ deployedTo: address(new StrategyFactory({
+ _strategyManager: Env.proxy.strategyManager(),
+ _pauserRegistry: Env.impl.pauserRegistry()
+ }))
+ });
+
+ // for strategies deployed via factory
+ deployImpl({
+ name: type(StrategyBase).name,
+ deployedTo: address(new StrategyBase({
+ _strategyManager: Env.proxy.strategyManager(),
+ _pauserRegistry: Env.impl.pauserRegistry()
+ }))
+ });
+
+ vm.stopBroadcast();
+ }
+
+ function testScript() public virtual {
+ _runAsEOA();
+
+ _validateNewImplAddresses({ areMatching: false });
+ _validateProxyAdmins();
+ _validateImplConstructors();
+ _validateImplsInitialized();
+ _validateStrategiesAreWhitelisted();
+ }
+
+ /// @dev Validate that the `Env.impl` addresses are updated to be distinct from what the proxy
+ /// admin reports as the current implementation address.
+ ///
+ /// Note: The upgrade script can call this with `areMatching == true` to check that these impl
+ /// addresses _are_ matches.
+ function _validateNewImplAddresses(bool areMatching) internal view {
+ /// core/ -- can't check AllocationManager as it didn't exist before this deploy
+
+ function (address, address, string memory) internal pure assertion =
+ areMatching ? _assertMatch : _assertNotMatch;
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.avsDirectory())),
+ address(Env.impl.avsDirectory()),
+ "avsDirectory impl failed"
+ );
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.delegationManager())),
+ address(Env.impl.delegationManager()),
+ "delegationManager impl failed"
+ );
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.rewardsCoordinator())),
+ address(Env.impl.rewardsCoordinator()),
+ "rewardsCoordinator impl failed"
+ );
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.strategyManager())),
+ address(Env.impl.strategyManager()),
+ "strategyManager impl failed"
+ );
+
+ /// permissions/ -- can't check these because PauserRegistry has no proxy, and
+ /// PermissionController proxy didn't exist before this deploy
+
+ /// pods/
+
+ assertion(
+ Env.beacon.eigenPod().implementation(),
+ address(Env.impl.eigenPod()),
+ "eigenPod impl failed"
+ );
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.eigenPodManager())),
+ address(Env.impl.eigenPodManager()),
+ "eigenPodManager impl failed"
+ );
+
+ /// strategies/
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.eigenStrategy())),
+ address(Env.impl.eigenStrategy()),
+ "eigenStrategy impl failed"
+ );
+
+ assertion(
+ Env.beacon.strategyBase().implementation(),
+ address(Env.impl.strategyBase()),
+ "strategyBase impl failed"
+ );
+
+ uint count = Env.instance.strategyBaseTVLLimits_Count();
+ for (uint i = 0; i < count; i++) {
+ assertion(
+ _getProxyImpl(address(Env.instance.strategyBaseTVLLimits(i))),
+ address(Env.impl.strategyBaseTVLLimits()),
+ "strategyBaseTVLLimits impl failed"
+ );
+ }
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.strategyFactory())),
+ address(Env.impl.strategyFactory()),
+ "strategyFactory impl failed"
+ );
+ }
+
+ /// @dev Ensure each deployed TUP/beacon is owned by the proxyAdmin/executorMultisig
+ function _validateProxyAdmins() internal view {
+ address pa = Env.proxyAdmin();
+
+ assertTrue(
+ _getProxyAdmin(address(Env.proxy.allocationManager())) == pa,
+ "allocationManager proxyAdmin incorrect"
+ );
+
+ assertTrue(
+ _getProxyAdmin(address(Env.proxy.avsDirectory())) == pa,
+ "avsDirectory proxyAdmin incorrect"
+ );
+
+ assertTrue(
+ _getProxyAdmin(address(Env.proxy.delegationManager())) == pa,
+ "delegationManager proxyAdmin incorrect"
+ );
+
+ assertTrue(
+ _getProxyAdmin(address(Env.proxy.rewardsCoordinator())) == pa,
+ "rewardsCoordinator proxyAdmin incorrect"
+ );
+
+ assertTrue(
+ _getProxyAdmin(address(Env.proxy.strategyManager())) == pa,
+ "strategyManager proxyAdmin incorrect"
+ );
+
+ /// permissions/ -- can't check these because PauserRegistry has no proxy, and
+ /// PermissionController proxy didn't exist before this deploy
+
+ /// pods/
+
+ assertTrue(
+ Env.beacon.eigenPod().owner() == Env.executorMultisig(),
+ "eigenPod beacon owner incorrect"
+ );
+
+ assertTrue(
+ _getProxyAdmin(address(Env.proxy.eigenPodManager())) == pa,
+ "eigenPodManager proxyAdmin incorrect"
+ );
+
+ /// strategies/
+
+ assertTrue(
+ _getProxyAdmin(address(Env.proxy.eigenStrategy())) == pa,
+ "eigenStrategy proxyAdmin incorrect"
+ );
+
+ assertTrue(
+ Env.beacon.strategyBase().owner() == Env.executorMultisig(),
+ "strategyBase beacon owner incorrect"
+ );
+
+ uint count = Env.instance.strategyBaseTVLLimits_Count();
+ for (uint i = 0; i < count; i++) {
+ assertTrue(
+ _getProxyAdmin(address(Env.instance.strategyBaseTVLLimits(i))) == pa,
+ "strategyBaseTVLLimits proxyAdmin incorrect"
+ );
+ }
+
+ assertTrue(
+ _getProxyAdmin(address(Env.proxy.strategyFactory())) == pa,
+ "strategyFactory proxyAdmin incorrect"
+ );
+ }
+
+ /// @dev Validate the immutables set in the new implementation constructors
+ function _validateImplConstructors() internal view {
+ {
+ /// permissions/
+
+ PauserRegistry registry = Env.impl.pauserRegistry();
+ assertTrue(registry.isPauser(Env.pauserMultisig()), "pauser multisig should be pauser");
+ assertTrue(registry.isPauser(Env.opsMultisig()), "ops multisig should be pauser");
+ assertTrue(registry.isPauser(Env.executorMultisig()), "executor multisig should be pauser");
+ assertTrue(registry.unpauser() == Env.executorMultisig(), "executor multisig should be unpauser");
+
+ /// PermissionController has no initial storage
+ }
+
+ {
+ /// core/
+
+ AllocationManager allocationManager = Env.impl.allocationManager();
+ assertTrue(allocationManager.delegation() == Env.proxy.delegationManager(), "alm.dm invalid");
+ assertTrue(allocationManager.pauserRegistry() == Env.impl.pauserRegistry(), "alm.pR invalid");
+ assertTrue(allocationManager.permissionController() == Env.proxy.permissionController(), "alm.pc invalid");
+ assertTrue(allocationManager.DEALLOCATION_DELAY() == Env.MIN_WITHDRAWAL_DELAY(), "alm.deallocDelay invalid");
+ assertTrue(allocationManager.ALLOCATION_CONFIGURATION_DELAY() == Env.ALLOCATION_CONFIGURATION_DELAY(), "alm.configDelay invalid");
+
+ AVSDirectory avsDirectory = Env.impl.avsDirectory();
+ assertTrue(avsDirectory.delegation() == Env.proxy.delegationManager(), "avsD.dm invalid");
+ assertTrue(avsDirectory.pauserRegistry() == Env.impl.pauserRegistry(), "avsD.pR invalid");
+
+ DelegationManager delegation = Env.impl.delegationManager();
+ assertTrue(delegation.strategyManager() == Env.proxy.strategyManager(), "dm.sm invalid");
+ assertTrue(delegation.eigenPodManager() == Env.proxy.eigenPodManager(), "dm.epm invalid");
+ assertTrue(delegation.allocationManager() == Env.proxy.allocationManager(), "dm.alm invalid");
+ assertTrue(delegation.pauserRegistry() == Env.impl.pauserRegistry(), "dm.pR invalid");
+ assertTrue(delegation.permissionController() == Env.proxy.permissionController(), "dm.pc invalid");
+ assertTrue(delegation.minWithdrawalDelayBlocks() == Env.MIN_WITHDRAWAL_DELAY(), "dm.withdrawalDelay invalid");
+
+ RewardsCoordinator rewards = Env.impl.rewardsCoordinator();
+ assertTrue(rewards.delegationManager() == Env.proxy.delegationManager(), "rc.dm invalid");
+ assertTrue(rewards.strategyManager() == Env.proxy.strategyManager(), "rc.sm invalid");
+ assertTrue(rewards.allocationManager() == Env.proxy.allocationManager(), "rc.alm invalid");
+ assertTrue(rewards.pauserRegistry() == Env.impl.pauserRegistry(), "rc.pR invalid");
+ assertTrue(rewards.permissionController() == Env.proxy.permissionController(), "rc.pc invalid");
+ assertTrue(rewards.CALCULATION_INTERVAL_SECONDS() == Env.CALCULATION_INTERVAL_SECONDS(), "rc.calcInterval invalid");
+ assertTrue(rewards.MAX_REWARDS_DURATION() == Env.MAX_REWARDS_DURATION(), "rc.rewardsDuration invalid");
+ assertTrue(rewards.MAX_RETROACTIVE_LENGTH() == Env.MAX_RETROACTIVE_LENGTH(), "rc.retroLength invalid");
+ assertTrue(rewards.MAX_FUTURE_LENGTH() == Env.MAX_FUTURE_LENGTH(), "rc.futureLength invalid");
+ assertTrue(rewards.GENESIS_REWARDS_TIMESTAMP() == Env.GENESIS_REWARDS_TIMESTAMP(), "rc.genesis invalid");
+
+ StrategyManager strategyManager = Env.impl.strategyManager();
+ assertTrue(strategyManager.delegation() == Env.proxy.delegationManager(), "sm.dm invalid");
+ assertTrue(strategyManager.pauserRegistry() == Env.impl.pauserRegistry(), "sm.pR invalid");
+ }
+
+ {
+ /// pods/
+ EigenPod eigenPod = Env.impl.eigenPod();
+ assertTrue(eigenPod.ethPOS() == Env.ethPOS(), "ep.ethPOS invalid");
+ assertTrue(eigenPod.eigenPodManager() == Env.proxy.eigenPodManager(), "ep.epm invalid");
+ assertTrue(eigenPod.GENESIS_TIME() == Env.EIGENPOD_GENESIS_TIME(), "ep.genesis invalid");
+
+ EigenPodManager eigenPodManager = Env.impl.eigenPodManager();
+ assertTrue(eigenPodManager.ethPOS() == Env.ethPOS(), "epm.ethPOS invalid");
+ assertTrue(eigenPodManager.eigenPodBeacon() == Env.beacon.eigenPod(), "epm.epBeacon invalid");
+ assertTrue(eigenPodManager.delegationManager() == Env.proxy.delegationManager(), "epm.dm invalid");
+ assertTrue(eigenPodManager.pauserRegistry() == Env.impl.pauserRegistry(), "epm.pR invalid");
+ }
+
+ {
+ /// strategies/
+ EigenStrategy eigenStrategy = Env.impl.eigenStrategy();
+ assertTrue(eigenStrategy.strategyManager() == Env.proxy.strategyManager(), "eigStrat.sm invalid");
+ assertTrue(eigenStrategy.pauserRegistry() == Env.impl.pauserRegistry(), "eigStrat.pR invalid");
+
+ StrategyBase strategyBase = Env.impl.strategyBase();
+ assertTrue(strategyBase.strategyManager() == Env.proxy.strategyManager(), "stratBase.sm invalid");
+ assertTrue(strategyBase.pauserRegistry() == Env.impl.pauserRegistry(), "stratBase.pR invalid");
+
+ StrategyBaseTVLLimits strategyBaseTVLLimits = Env.impl.strategyBaseTVLLimits();
+ assertTrue(strategyBaseTVLLimits.strategyManager() == Env.proxy.strategyManager(), "stratBaseTVL.sm invalid");
+ assertTrue(strategyBaseTVLLimits.pauserRegistry() == Env.impl.pauserRegistry(), "stratBaseTVL.pR invalid");
+
+ StrategyFactory strategyFactory = Env.impl.strategyFactory();
+ assertTrue(strategyFactory.strategyManager() == Env.proxy.strategyManager(), "sFact.sm invalid");
+ assertTrue(strategyFactory.pauserRegistry() == Env.impl.pauserRegistry(), "sFact.pR invalid");
+ }
+ }
+
+ /// @dev Call initialize on all deployed implementations to ensure initializers are disabled
+ function _validateImplsInitialized() internal {
+ bytes memory errInit = "Initializable: contract is already initialized";
+
+ /// permissions/
+ // PermissionController is initializable, but does not expose the `initialize` method
+
+ {
+ /// core/
+
+ AllocationManager allocationManager = Env.impl.allocationManager();
+ vm.expectRevert(errInit);
+ allocationManager.initialize(address(0), 0);
+
+ AVSDirectory avsDirectory = Env.impl.avsDirectory();
+ vm.expectRevert(errInit);
+ avsDirectory.initialize(address(0), 0);
+
+ DelegationManager delegation = Env.impl.delegationManager();
+ vm.expectRevert(errInit);
+ delegation.initialize(address(0), 0);
+
+ RewardsCoordinator rewards = Env.impl.rewardsCoordinator();
+ vm.expectRevert(errInit);
+ rewards.initialize(address(0), 0, address(0), 0, 0);
+
+ StrategyManager strategyManager = Env.impl.strategyManager();
+ vm.expectRevert(errInit);
+ strategyManager.initialize(address(0), address(0), 0);
+ }
+
+ {
+ /// pods/
+ EigenPod eigenPod = Env.impl.eigenPod();
+ vm.expectRevert(errInit);
+ eigenPod.initialize(address(0));
+
+ EigenPodManager eigenPodManager = Env.impl.eigenPodManager();
+ vm.expectRevert(errInit);
+ eigenPodManager.initialize(address(0), 0);
+ }
+
+ {
+ /// strategies/
+ EigenStrategy eigenStrategy = Env.impl.eigenStrategy();
+ vm.expectRevert(errInit);
+ eigenStrategy.initialize(IEigen(address(0)), IBackingEigen(address(0)));
+
+ StrategyBase strategyBase = Env.impl.strategyBase();
+ vm.expectRevert(errInit);
+ strategyBase.initialize(IERC20(address(0)));
+
+ StrategyBaseTVLLimits strategyBaseTVLLimits = Env.impl.strategyBaseTVLLimits();
+ vm.expectRevert(errInit);
+ strategyBaseTVLLimits.initialize(0, 0, IERC20(address(0)));
+
+ StrategyFactory strategyFactory = Env.impl.strategyFactory();
+ vm.expectRevert(errInit);
+ strategyFactory.initialize(address(0), 0, UpgradeableBeacon(address(0)));
+ }
+ }
+
+ /// @dev Iterate over StrategyBaseTVLLimits instances and validate that each is
+ /// whitelisted for deposit
+ function _validateStrategiesAreWhitelisted() internal view {
+ uint count = Env.instance.strategyBaseTVLLimits_Count();
+ for (uint i = 0; i < count; i++) {
+ StrategyBaseTVLLimits strategy = Env.instance.strategyBaseTVLLimits(i);
+
+ // emit log_named_uint("strategy", i);
+ // IERC20Metadata underlying = IERC20Metadata(address(strategy.underlyingToken()));
+ // emit log_named_string("- name", underlying.name());
+ // emit log_named_string("- symbol", underlying.symbol());
+ // emit log_named_uint("- totalShares", strategy.totalShares());
+
+ bool isWhitelisted = Env.proxy.strategyManager().strategyIsWhitelistedForDeposit(strategy);
+ // emit log_named_string("- is whitelisted", isWhitelisted ? "true" : "false");
+ assertTrue(isWhitelisted, "not whitelisted!!");
+ }
+ }
+
+ /// @dev Query and return `proxyAdmin.getProxyImplementation(proxy)`
+ function _getProxyImpl(address proxy) internal view returns (address) {
+ return ProxyAdmin(Env.proxyAdmin()).getProxyImplementation(ITransparentUpgradeableProxy(proxy));
+ }
+
+ /// @dev Query and return `proxyAdmin.getProxyAdmin(proxy)`
+ function _getProxyAdmin(address proxy) internal view returns (address) {
+ return ProxyAdmin(Env.proxyAdmin()).getProxyAdmin(ITransparentUpgradeableProxy(proxy));
+ }
+
+ function _assertMatch(address a, address b, string memory err) private pure {
+ assertEq(a, b, err);
+ }
+
+ function _assertNotMatch(address a, address b, string memory err) private pure {
+ assertNotEq(a, b, err);
+ }
+}
diff --git a/script/releases/v1.0.0-slashing/2-queueUpgradeAndUnpause.s.sol b/script/releases/v1.0.0-slashing/2-queueUpgradeAndUnpause.s.sol
new file mode 100644
index 0000000000..6d8915d97d
--- /dev/null
+++ b/script/releases/v1.0.0-slashing/2-queueUpgradeAndUnpause.s.sol
@@ -0,0 +1,156 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.12;
+
+import {Deploy} from "./1-deployContracts.s.sol";
+import "../Env.sol";
+
+import {MultisigBuilder} from "zeus-templates/templates/MultisigBuilder.sol";
+import "zeus-templates/utils/Encode.sol";
+
+import {TimelockController} from "@openzeppelin/contracts/governance/TimelockController.sol";
+
+/**
+ * Purpose:
+ * * enqueue a multisig transaction which;
+ * - upgrades all the relevant contracts, and
+ * - unpauses the system.
+ * This should be run via the protocol council multisig.
+ */
+contract QueueAndUnpause is MultisigBuilder, Deploy {
+ using Env for *;
+ using Encode for *;
+
+ function _runAsMultisig() prank(Env.opsMultisig()) internal virtual override {
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+
+ TimelockController timelock = Env.timelockController();
+ timelock.schedule({
+ target: Env.executorMultisig(),
+ value: 0,
+ data: calldata_to_executor,
+ predecessor: 0,
+ salt: 0,
+ delay: timelock.getMinDelay()
+ });
+ }
+
+ /// @dev Get the calldata to be sent from the timelock to the executor
+ function _getCalldataToExecutor() internal returns (bytes memory) {
+ MultisigCall[] storage executorCalls = Encode.newMultisigCalls()
+ /// core/
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.avsDirectory()),
+ impl: address(Env.impl.avsDirectory())
+ })
+ })
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.delegationManager()),
+ impl: address(Env.impl.delegationManager())
+ })
+ })
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.rewardsCoordinator()),
+ impl: address(Env.impl.rewardsCoordinator())
+ })
+ })
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.strategyManager()),
+ impl: address(Env.impl.strategyManager())
+ })
+ })
+ /// pods/
+ .append({
+ to: address(Env.beacon.eigenPod()),
+ data: Encode.upgradeableBeacon.upgradeTo({
+ newImpl: address(Env.impl.eigenPod())
+ })
+ })
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.eigenPodManager()),
+ impl: address(Env.impl.eigenPodManager())
+ })
+ })
+ /// strategies/
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.eigenStrategy()),
+ impl: address(Env.impl.eigenStrategy())
+ })
+ })
+ .append({
+ to: address(Env.beacon.strategyBase()),
+ data: Encode.upgradeableBeacon.upgradeTo({
+ newImpl: address(Env.impl.strategyBase())
+ })
+ })
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.strategyFactory()),
+ impl: address(Env.impl.strategyFactory())
+ })
+ });
+
+ /// Add call to upgrade each pre-longtail strategy instance
+ uint count = Env.instance.strategyBaseTVLLimits_Count();
+ for (uint i = 0; i < count; i++) {
+ address proxyInstance = address(Env.instance.strategyBaseTVLLimits(i));
+
+ executorCalls.append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: proxyInstance,
+ impl: address(Env.impl.strategyBaseTVLLimits())
+ })
+ });
+ }
+
+ // /// Finally, add a call unpausing the EigenPodManager
+ // /// We will end up pausing it in step 3, so the unpause will
+ // /// go through as part of execution (step 5)
+ executorCalls.append({
+ to: address(Env.proxy.eigenPodManager()),
+ data: abi.encodeCall(Pausable.unpause, 0)
+ });
+
+ return Encode.gnosisSafe.execTransaction({
+ from: address(Env.timelockController()),
+ to: Env.multiSendCallOnly(),
+ op: Encode.Operation.DelegateCall,
+ data: Encode.multiSend(executorCalls)
+ });
+ }
+
+ function testScript() public virtual override {
+ runAsEOA();
+
+ TimelockController timelock = Env.timelockController();
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+ bytes32 txHash = timelock.hashOperation({
+ target: Env.executorMultisig(),
+ value: 0,
+ data: calldata_to_executor,
+ predecessor: 0,
+ salt: 0
+ });
+
+ // Check that the upgrade does not exist in the timelock
+ assertFalse(timelock.isOperationPending(txHash), "Transaction should NOT be queued.");
+
+ execute();
+
+ // Check that the upgrade has been added to the timelock
+ assertTrue(timelock.isOperationPending(txHash), "Transaction should be queued.");
+ }
+}
diff --git a/script/releases/v1.0.0-slashing/3-pause.s.sol b/script/releases/v1.0.0-slashing/3-pause.s.sol
new file mode 100644
index 0000000000..030949d05d
--- /dev/null
+++ b/script/releases/v1.0.0-slashing/3-pause.s.sol
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.12;
+
+import "../Env.sol";
+
+import {MultisigBuilder} from "zeus-templates/templates/MultisigBuilder.sol";
+
+/**
+ * Purpose: Enqueue a transaction which immediately sets `EigenPodManager.PAUSED_START_CHECKPOINT=true`
+ */
+contract Pause is MultisigBuilder, EigenPodPausingConstants {
+ using Env for *;
+
+ function _runAsMultisig() prank(Env.pauserMultisig()) internal virtual override {
+ uint mask = 1 << PAUSED_START_CHECKPOINT;
+
+ Env.proxy.eigenPodManager().pause(mask);
+ }
+
+ function testScript() public virtual {
+ execute();
+
+ assertTrue(Env.proxy.eigenPodManager().paused(PAUSED_START_CHECKPOINT), "Not paused!");
+
+ // Create a new pod and try to start a checkpoint
+ EigenPod pod = EigenPod(payable(Env.proxy.eigenPodManager().createPod()));
+
+ // At this point in the upgrade process, we're not using error types yet
+ vm.expectRevert("EigenPod.onlyWhenNotPaused: index is paused in EigenPodManager");
+ pod.startCheckpoint(false);
+ }
+}
diff --git a/script/releases/v1.0.0-slashing/4-podCleanup.sh b/script/releases/v1.0.0-slashing/4-podCleanup.sh
new file mode 100644
index 0000000000..f467ceb02b
--- /dev/null
+++ b/script/releases/v1.0.0-slashing/4-podCleanup.sh
@@ -0,0 +1 @@
+# TODO(justin): run a binary which completes all checkpoints on the network.
\ No newline at end of file
diff --git a/script/releases/v1.0.0-slashing/5-executeUpgradeAndUnpause.s.sol b/script/releases/v1.0.0-slashing/5-executeUpgradeAndUnpause.s.sol
new file mode 100644
index 0000000000..f237c41a1e
--- /dev/null
+++ b/script/releases/v1.0.0-slashing/5-executeUpgradeAndUnpause.s.sol
@@ -0,0 +1,267 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.12;
+
+import "../Env.sol";
+import {QueueAndUnpause} from "./2-queueUpgradeAndUnpause.s.sol";
+import {Pause} from "./3-pause.s.sol";
+
+import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
+import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
+
+contract Execute is QueueAndUnpause, Pause {
+ using Env for *;
+
+ function _runAsMultisig() prank(Env.protocolCouncilMultisig()) internal override(Pause, QueueAndUnpause) {
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+
+ TimelockController timelock = Env.timelockController();
+ timelock.execute({
+ target: Env.executorMultisig(),
+ value: 0,
+ payload: calldata_to_executor,
+ predecessor: 0,
+ salt: 0
+ });
+ }
+
+ function testScript() public virtual override(Pause, QueueAndUnpause) {
+ runAsEOA();
+
+ TimelockController timelock = Env.timelockController();
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+ bytes32 txHash = timelock.hashOperation({
+ target: Env.executorMultisig(),
+ value: 0,
+ data: calldata_to_executor,
+ predecessor: 0,
+ salt: 0
+ });
+
+ assertFalse(timelock.isOperationPending(txHash), "Transaction should NOT be queued.");
+
+ // 1- run queueing logic
+ QueueAndUnpause._runAsMultisig();
+ _unsafeResetHasPranked(); // reset hasPranked so we can use it again
+
+ assertTrue(timelock.isOperationPending(txHash), "Transaction should be queued.");
+ assertFalse(timelock.isOperationReady(txHash), "Transaction should NOT be ready for execution.");
+ assertFalse(timelock.isOperationDone(txHash), "Transaction should NOT be complete.");
+
+ // 2- run pausing logic
+ Pause._runAsMultisig();
+ _unsafeResetHasPranked(); // reset hasPranked so we can use it again
+
+ assertTrue(Env.proxy.eigenPodManager().paused(PAUSED_START_CHECKPOINT), "EPM is not paused!");
+
+ // 2- warp past delay
+ vm.warp(block.timestamp + timelock.getMinDelay()); // 1 tick after ETA
+ assertEq(timelock.isOperationReady(txHash), true, "Transaction should be executable.");
+
+ // 3- execute
+ execute();
+
+ assertTrue(timelock.isOperationDone(txHash), "Transaction should be complete.");
+
+ _validateNewImplAddresses({ areMatching: true });
+ _validateStrategiesAreWhitelisted();
+ _validateProxyAdmins();
+ _validateProxyConstructors();
+ _validateProxiesInitialized();
+ }
+
+ function _validateNewProxyImplsMatch() internal view {
+ ProxyAdmin pa = ProxyAdmin(Env.proxyAdmin());
+
+ assertTrue(
+ pa.getProxyImplementation(ITransparentUpgradeableProxy(address(Env.proxy.allocationManager()))) ==
+ address(Env.impl.allocationManager()),
+ "allocationManager impl failed"
+ );
+
+ assertTrue(
+ pa.getProxyImplementation(ITransparentUpgradeableProxy(address(Env.proxy.permissionController()))) ==
+ address(Env.impl.permissionController()),
+ "permissionController impl failed"
+ );
+ }
+
+ /// @dev Mirrors the checks done in 1-deployContracts, but now we check each contract's
+ /// proxy, as the upgrade should mean that each proxy can see these methods/immutables
+ function _validateProxyConstructors() internal view {
+ {
+ /// permissions/
+
+ // exception: PauserRegistry doesn't have a proxy!
+ PauserRegistry registry = Env.impl.pauserRegistry();
+ assertTrue(registry.isPauser(Env.pauserMultisig()), "pauser multisig should be pauser");
+ assertTrue(registry.isPauser(Env.opsMultisig()), "ops multisig should be pauser");
+ assertTrue(registry.isPauser(Env.executorMultisig()), "executor multisig should be pauser");
+ assertTrue(registry.unpauser() == Env.executorMultisig(), "executor multisig should be unpauser");
+
+ /// PermissionController has no initial storage
+ }
+
+ {
+ /// core/
+
+ AllocationManager allocationManager = Env.proxy.allocationManager();
+ assertTrue(allocationManager.delegation() == Env.proxy.delegationManager(), "alm.dm invalid");
+ assertTrue(allocationManager.pauserRegistry() == Env.impl.pauserRegistry(), "alm.pR invalid");
+ assertTrue(allocationManager.permissionController() == Env.proxy.permissionController(), "alm.pc invalid");
+ assertTrue(allocationManager.DEALLOCATION_DELAY() == Env.MIN_WITHDRAWAL_DELAY(), "alm.deallocDelay invalid");
+ assertTrue(allocationManager.ALLOCATION_CONFIGURATION_DELAY() == Env.ALLOCATION_CONFIGURATION_DELAY(), "alm.configDelay invalid");
+
+ AVSDirectory avsDirectory = Env.proxy.avsDirectory();
+ assertTrue(avsDirectory.delegation() == Env.proxy.delegationManager(), "avsD.dm invalid");
+ assertTrue(avsDirectory.pauserRegistry() == Env.impl.pauserRegistry(), "avsD.pR invalid");
+
+ DelegationManager delegation = Env.proxy.delegationManager();
+ assertTrue(delegation.strategyManager() == Env.proxy.strategyManager(), "dm.sm invalid");
+ assertTrue(delegation.eigenPodManager() == Env.proxy.eigenPodManager(), "dm.epm invalid");
+ assertTrue(delegation.allocationManager() == Env.proxy.allocationManager(), "dm.alm invalid");
+ assertTrue(delegation.pauserRegistry() == Env.impl.pauserRegistry(), "dm.pR invalid");
+ assertTrue(delegation.permissionController() == Env.proxy.permissionController(), "dm.pc invalid");
+ assertTrue(delegation.minWithdrawalDelayBlocks() == Env.MIN_WITHDRAWAL_DELAY(), "dm.withdrawalDelay invalid");
+
+ RewardsCoordinator rewards = Env.proxy.rewardsCoordinator();
+ assertTrue(rewards.delegationManager() == Env.proxy.delegationManager(), "rc.dm invalid");
+ assertTrue(rewards.strategyManager() == Env.proxy.strategyManager(), "rc.sm invalid");
+ assertTrue(rewards.allocationManager() == Env.proxy.allocationManager(), "rc.alm invalid");
+ assertTrue(rewards.pauserRegistry() == Env.impl.pauserRegistry(), "rc.pR invalid");
+ assertTrue(rewards.permissionController() == Env.proxy.permissionController(), "rc.pc invalid");
+ assertTrue(rewards.CALCULATION_INTERVAL_SECONDS() == Env.CALCULATION_INTERVAL_SECONDS(), "rc.calcInterval invalid");
+ assertTrue(rewards.MAX_REWARDS_DURATION() == Env.MAX_REWARDS_DURATION(), "rc.rewardsDuration invalid");
+ assertTrue(rewards.MAX_RETROACTIVE_LENGTH() == Env.MAX_RETROACTIVE_LENGTH(), "rc.retroLength invalid");
+ assertTrue(rewards.MAX_FUTURE_LENGTH() == Env.MAX_FUTURE_LENGTH(), "rc.futureLength invalid");
+ assertTrue(rewards.GENESIS_REWARDS_TIMESTAMP() == Env.GENESIS_REWARDS_TIMESTAMP(), "rc.genesis invalid");
+
+ StrategyManager strategyManager = Env.proxy.strategyManager();
+ assertTrue(strategyManager.delegation() == Env.proxy.delegationManager(), "sm.dm invalid");
+ assertTrue(strategyManager.pauserRegistry() == Env.impl.pauserRegistry(), "sm.pR invalid");
+ }
+
+ {
+ /// pods/
+ UpgradeableBeacon eigenPodBeacon = Env.beacon.eigenPod();
+ assertTrue(eigenPodBeacon.implementation() == address(Env.impl.eigenPod()), "eigenPodBeacon.impl invalid");
+
+ EigenPodManager eigenPodManager = Env.proxy.eigenPodManager();
+ assertTrue(eigenPodManager.ethPOS() == Env.ethPOS(), "epm.ethPOS invalid");
+ assertTrue(eigenPodManager.eigenPodBeacon() == Env.beacon.eigenPod(), "epm.epBeacon invalid");
+ assertTrue(eigenPodManager.delegationManager() == Env.proxy.delegationManager(), "epm.dm invalid");
+ assertTrue(eigenPodManager.pauserRegistry() == Env.impl.pauserRegistry(), "epm.pR invalid");
+ }
+
+ {
+ /// strategies/
+ EigenStrategy eigenStrategy = Env.proxy.eigenStrategy();
+ assertTrue(eigenStrategy.strategyManager() == Env.proxy.strategyManager(), "eigStrat.sm invalid");
+ assertTrue(eigenStrategy.pauserRegistry() == Env.impl.pauserRegistry(), "eigStrat.pR invalid");
+
+ UpgradeableBeacon strategyBeacon = Env.beacon.strategyBase();
+ assertTrue(strategyBeacon.implementation() == address(Env.impl.strategyBase()), "strategyBeacon.impl invalid");
+
+ uint count = Env.instance.strategyBaseTVLLimits_Count();
+ for (uint i = 0; i < count; i++) {
+ StrategyBaseTVLLimits strategy = Env.instance.strategyBaseTVLLimits(i);
+
+ assertTrue(strategy.strategyManager() == Env.proxy.strategyManager(), "sFact.sm invalid");
+ assertTrue(strategy.pauserRegistry() == Env.impl.pauserRegistry(), "sFact.pR invalid");
+ }
+
+ StrategyFactory strategyFactory = Env.proxy.strategyFactory();
+ assertTrue(strategyFactory.strategyManager() == Env.proxy.strategyManager(), "sFact.sm invalid");
+ assertTrue(strategyFactory.pauserRegistry() == Env.impl.pauserRegistry(), "sFact.pR invalid");
+ }
+ }
+
+ /// @dev Call initialize on all proxies to ensure they are initialized
+ /// Additionally, validate initialization variables
+ function _validateProxiesInitialized() internal {
+ bytes memory errInit = "Initializable: contract is already initialized";
+
+ /// permissions/
+ // PermissionController is initializable, but does not expose the `initialize` method
+
+ {
+ /// core/
+
+ AllocationManager allocationManager = Env.proxy.allocationManager();
+ vm.expectRevert(errInit);
+ allocationManager.initialize(address(0), 0);
+ assertTrue(allocationManager.owner() == Env.executorMultisig(), "alm.owner invalid");
+ assertTrue(allocationManager.paused() == 0, "alm.paused invalid");
+
+ AVSDirectory avsDirectory = Env.proxy.avsDirectory();
+ vm.expectRevert(errInit);
+ avsDirectory.initialize(address(0), 0);
+ assertTrue(avsDirectory.owner() == Env.executorMultisig(), "avsD.owner invalid");
+ assertTrue(avsDirectory.paused() == 0, "avsD.paused invalid");
+
+ DelegationManager delegation = Env.proxy.delegationManager();
+ vm.expectRevert(errInit);
+ delegation.initialize(address(0), 0);
+ assertTrue(delegation.owner() == Env.executorMultisig(), "dm.owner invalid");
+ assertTrue(delegation.paused() == 0, "dm.paused invalid");
+
+ RewardsCoordinator rewards = Env.proxy.rewardsCoordinator();
+ vm.expectRevert(errInit);
+ rewards.initialize(address(0), 0, address(0), 0, 0);
+ assertTrue(rewards.owner() == Env.opsMultisig(), "rc.owner invalid");
+ assertTrue(rewards.paused() == Env.REWARDS_PAUSE_STATUS(), "rc.paused invalid");
+ assertTrue(rewards.rewardsUpdater() == Env.REWARDS_UPDATER(), "rc.updater invalid");
+ assertTrue(rewards.activationDelay() == Env.ACTIVATION_DELAY(), "rc.activationDelay invalid");
+ assertTrue(rewards.defaultOperatorSplitBips() == Env.DEFAULT_SPLIT_BIPS(), "rc.splitBips invalid");
+
+ StrategyManager strategyManager = Env.proxy.strategyManager();
+ vm.expectRevert(errInit);
+ strategyManager.initialize(address(0), address(0), 0);
+ assertTrue(strategyManager.owner() == Env.executorMultisig(), "sm.owner invalid");
+ assertTrue(strategyManager.paused() == 0, "sm.paused invalid");
+ assertTrue(strategyManager.strategyWhitelister() == address(Env.proxy.strategyFactory()), "sm.whitelister invalid");
+ }
+
+ {
+ /// pods/
+ // EigenPod proxies are initialized by individual users
+
+ EigenPodManager eigenPodManager = Env.proxy.eigenPodManager();
+ vm.expectRevert(errInit);
+ eigenPodManager.initialize(address(0), 0);
+ assertTrue(eigenPodManager.owner() == Env.executorMultisig(), "epm.owner invalid");
+ assertTrue(eigenPodManager.paused() == 0, "epm.paused invalid");
+ }
+
+ {
+ /// strategies/
+
+ EigenStrategy eigenStrategy = Env.proxy.eigenStrategy();
+ vm.expectRevert(errInit);
+ eigenStrategy.initialize(IEigen(address(0)), IBackingEigen(address(0)));
+ assertTrue(eigenStrategy.paused() == 0, "eigenStrat.paused invalid");
+ assertTrue(eigenStrategy.EIGEN() == Env.proxy.eigen(), "eigenStrat.EIGEN invalid");
+ assertTrue(eigenStrategy.underlyingToken() == Env.proxy.beigen(), "eigenStrat.underlying invalid");
+
+ // StrategyBase proxies are initialized when deployed by factory
+
+ uint count = Env.instance.strategyBaseTVLLimits_Count();
+ for (uint i = 0; i < count; i++) {
+ StrategyBaseTVLLimits strategy = Env.instance.strategyBaseTVLLimits(i);
+
+ emit log_named_address("strat", address(strategy));
+
+ vm.expectRevert(errInit);
+ strategy.initialize(0, 0, IERC20(address(0)));
+ assertTrue(strategy.maxPerDeposit() == type(uint).max, "stratTVLLim.maxPerDeposit invalid");
+ assertTrue(strategy.maxTotalDeposits() == type(uint).max, "stratTVLLim.maxPerDeposit invalid");
+ }
+
+ StrategyFactory strategyFactory = Env.proxy.strategyFactory();
+ vm.expectRevert(errInit);
+ strategyFactory.initialize(address(0), 0, UpgradeableBeacon(address(0)));
+ assertTrue(strategyFactory.owner() == Env.opsMultisig(), "sFact.owner invalid");
+ assertTrue(strategyFactory.paused() == 0, "sFact.paused invalid");
+ assertTrue(strategyFactory.strategyBeacon() == Env.beacon.strategyBase(), "sFact.beacon invalid");
+ }
+ }
+}
diff --git a/script/releases/v1.0.0-slashing/cleanup/EigenPod.abi.json b/script/releases/v1.0.0-slashing/cleanup/EigenPod.abi.json
new file mode 100644
index 0000000000..eea17671d4
--- /dev/null
+++ b/script/releases/v1.0.0-slashing/cleanup/EigenPod.abi.json
@@ -0,0 +1 @@
+[{"type":"constructor","inputs":[{"name":"_ethPOS","type":"address","internalType":"contract IETHPOSDeposit"},{"name":"_eigenPodManager","type":"address","internalType":"contract IEigenPodManager"},{"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":"struct IEigenPodTypes.Checkpoint","components":[{"name":"beaconBlockRoot","type":"bytes32","internalType":"bytes32"},{"name":"proofsRemaining","type":"uint24","internalType":"uint24"},{"name":"podBalanceGwei","type":"uint64","internalType":"uint64"},{"name":"balanceDeltasGwei","type":"int64","internalType":"int64"},{"name":"prevBeaconBalanceGwei","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"currentCheckpointTimestamp","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"eigenPodManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPodManager"}],"stateMutability":"view"},{"type":"function","name":"ethPOS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IETHPOSDeposit"}],"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":"contract IERC20[]"},{"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":"struct IEigenPodTypes.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":"enum IEigenPodTypes.VALIDATOR_STATUS"}]}],"stateMutability":"view"},{"type":"function","name":"validatorPubkeyToInfo","inputs":[{"name":"validatorPubkey","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IEigenPodTypes.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":"enum IEigenPodTypes.VALIDATOR_STATUS"}]}],"stateMutability":"view"},{"type":"function","name":"validatorStatus","inputs":[{"name":"validatorPubkey","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IEigenPodTypes.VALIDATOR_STATUS"}],"stateMutability":"view"},{"type":"function","name":"validatorStatus","inputs":[{"name":"pubkeyHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IEigenPodTypes.VALIDATOR_STATUS"}],"stateMutability":"view"},{"type":"function","name":"verifyCheckpointProofs","inputs":[{"name":"balanceContainerProof","type":"tuple","internalType":"struct BeaconChainProofs.BalanceContainerProof","components":[{"name":"balanceContainerRoot","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes","internalType":"bytes"}]},{"name":"proofs","type":"tuple[]","internalType":"struct BeaconChainProofs.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":"struct BeaconChainProofs.StateRootProof","components":[{"name":"beaconStateRoot","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes","internalType":"bytes"}]},{"name":"proof","type":"tuple","internalType":"struct BeaconChainProofs.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":"struct BeaconChainProofs.StateRootProof","components":[{"name":"beaconStateRoot","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes","internalType":"bytes"}]},{"name":"validatorIndices","type":"uint40[]","internalType":"uint40[]"},{"name":"validatorFieldsProofs","type":"bytes[]","internalType":"bytes[]"},{"name":"validatorFields","type":"bytes32[][]","internalType":"bytes32[][]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRestakedBeaconChainETH","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amountWei","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawableRestakedExecutionLayerGwei","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"event","name":"CheckpointCreated","inputs":[{"name":"checkpointTimestamp","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"beaconBlockRoot","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"validatorCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckpointFinalized","inputs":[{"name":"checkpointTimestamp","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"totalShareDeltaWei","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"EigenPodStaked","inputs":[{"name":"pubkey","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"NonBeaconChainETHReceived","inputs":[{"name":"amountReceived","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ProofSubmitterUpdated","inputs":[{"name":"prevProofSubmitter","type":"address","indexed":false,"internalType":"address"},{"name":"newProofSubmitter","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RestakedBeaconChainETHWithdrawn","inputs":[{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ValidatorBalanceUpdated","inputs":[{"name":"validatorIndex","type":"uint40","indexed":false,"internalType":"uint40"},{"name":"balanceTimestamp","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"newValidatorBalanceGwei","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ValidatorCheckpointed","inputs":[{"name":"checkpointTimestamp","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"validatorIndex","type":"uint40","indexed":true,"internalType":"uint40"}],"anonymous":false},{"type":"event","name":"ValidatorRestaked","inputs":[{"name":"validatorIndex","type":"uint40","indexed":false,"internalType":"uint40"}],"anonymous":false},{"type":"event","name":"ValidatorWithdrawn","inputs":[{"name":"checkpointTimestamp","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"validatorIndex","type":"uint40","indexed":true,"internalType":"uint40"}],"anonymous":false},{"type":"error","name":"AmountMustBeMultipleOfGwei","inputs":[]},{"type":"error","name":"BeaconTimestampTooFarInPast","inputs":[]},{"type":"error","name":"CannotCheckpointTwiceInSingleBlock","inputs":[]},{"type":"error","name":"CheckpointAlreadyActive","inputs":[]},{"type":"error","name":"CredentialsAlreadyVerified","inputs":[]},{"type":"error","name":"CurrentlyPaused","inputs":[]},{"type":"error","name":"InputAddressZero","inputs":[]},{"type":"error","name":"InputArrayLengthMismatch","inputs":[]},{"type":"error","name":"InsufficientWithdrawableBalance","inputs":[]},{"type":"error","name":"InvalidEIP4788Response","inputs":[]},{"type":"error","name":"InvalidProof","inputs":[]},{"type":"error","name":"InvalidProofLength","inputs":[]},{"type":"error","name":"InvalidProofLength","inputs":[]},{"type":"error","name":"InvalidPubKeyLength","inputs":[]},{"type":"error","name":"InvalidValidatorFieldsLength","inputs":[]},{"type":"error","name":"MsgValueNot32ETH","inputs":[]},{"type":"error","name":"NoActiveCheckpoint","inputs":[]},{"type":"error","name":"NoBalanceToCheckpoint","inputs":[]},{"type":"error","name":"OnlyEigenPodManager","inputs":[]},{"type":"error","name":"OnlyEigenPodOwner","inputs":[]},{"type":"error","name":"OnlyEigenPodOwnerOrProofSubmitter","inputs":[]},{"type":"error","name":"TimestampOutOfRange","inputs":[]},{"type":"error","name":"ValidatorInactiveOnBeaconChain","inputs":[]},{"type":"error","name":"ValidatorIsExitingBeaconChain","inputs":[]},{"type":"error","name":"ValidatorNotActiveInPod","inputs":[]},{"type":"error","name":"ValidatorNotSlashedOnBeaconChain","inputs":[]},{"type":"error","name":"WithdrawalCredentialsNotForEigenPod","inputs":[]}]
\ No newline at end of file
diff --git a/script/releases/v1.0.0-slashing/cleanup/EigenPodManager.abi.json b/script/releases/v1.0.0-slashing/cleanup/EigenPodManager.abi.json
new file mode 100644
index 0000000000..eca82221bb
--- /dev/null
+++ b/script/releases/v1.0.0-slashing/cleanup/EigenPodManager.abi.json
@@ -0,0 +1 @@
+[{"type":"constructor","inputs":[{"name":"_ethPOS","type":"address","internalType":"contract IETHPOSDeposit"},{"name":"_eigenPodBeacon","type":"address","internalType":"contract IBeacon"},{"name":"_strategyManager","type":"address","internalType":"contract IStrategyManager"},{"name":"_delegationManager","type":"address","internalType":"contract IDelegationManager"},{"name":"_pauserRegistry","type":"address","internalType":"contract IPauserRegistry"}],"stateMutability":"nonpayable"},{"type":"function","name":"addShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"","type":"address","internalType":"contract IERC20"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"beaconChainETHStrategy","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategy"}],"stateMutability":"view"},{"type":"function","name":"beaconChainSlashingFactor","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"createPod","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"delegationManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"view"},{"type":"function","name":"eigenPodBeacon","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IBeacon"}],"stateMutability":"view"},{"type":"function","name":"ethPOS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IETHPOSDeposit"}],"stateMutability":"view"},{"type":"function","name":"getPod","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPod"}],"stateMutability":"view"},{"type":"function","name":"hasPod","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_initPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"numPods","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"ownerToPod","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPod"}],"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":"contract IPauserRegistry"}],"stateMutability":"view"},{"type":"function","name":"podOwnerDepositShares","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"shares","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"recordBeaconChainETHBalanceUpdate","inputs":[{"name":"podOwner","type":"address","internalType":"address"},{"name":"prevRestakedBalanceWei","type":"uint256","internalType":"uint256"},{"name":"balanceDeltaWei","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeDepositShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"depositSharesToRemove","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"pubkey","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"depositDataRoot","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"stakerDepositShares","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"}],"outputs":[{"name":"depositShares","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"strategyManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategyManager"}],"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":"contract IStrategy"},{"name":"","type":"address","internalType":"contract IERC20"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BeaconChainETHDeposited","inputs":[{"name":"podOwner","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BeaconChainETHWithdrawalCompleted","inputs":[{"name":"podOwner","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"nonce","type":"uint96","indexed":false,"internalType":"uint96"},{"name":"delegatedAddress","type":"address","indexed":false,"internalType":"address"},{"name":"withdrawer","type":"address","indexed":false,"internalType":"address"},{"name":"withdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BeaconChainSlashingFactorDecreased","inputs":[{"name":"staker","type":"address","indexed":false,"internalType":"address"},{"name":"wadSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newBeaconChainSlashingFactor","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"NewTotalShares","inputs":[{"name":"podOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newTotalShares","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PodDeployed","inputs":[{"name":"eigenPod","type":"address","indexed":true,"internalType":"address"},{"name":"podOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PodSharesUpdated","inputs":[{"name":"podOwner","type":"address","indexed":true,"internalType":"address"},{"name":"sharesDelta","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"CurrentlyPaused","inputs":[]},{"type":"error","name":"EigenPodAlreadyExists","inputs":[]},{"type":"error","name":"InputAddressZero","inputs":[]},{"type":"error","name":"InvalidNewPausedStatus","inputs":[]},{"type":"error","name":"InvalidStrategy","inputs":[]},{"type":"error","name":"LegacyWithdrawalsNotCompleted","inputs":[]},{"type":"error","name":"OnlyDelegationManager","inputs":[]},{"type":"error","name":"OnlyEigenPod","inputs":[]},{"type":"error","name":"OnlyPauser","inputs":[]},{"type":"error","name":"OnlyUnpauser","inputs":[]},{"type":"error","name":"SharesNegative","inputs":[]},{"type":"error","name":"SharesNotMultipleOfGwei","inputs":[]}]
\ No newline at end of file
diff --git a/script/releases/v1.0.0-slashing/cleanup/go.mod b/script/releases/v1.0.0-slashing/cleanup/go.mod
new file mode 100644
index 0000000000..54879f94b6
--- /dev/null
+++ b/script/releases/v1.0.0-slashing/cleanup/go.mod
@@ -0,0 +1,74 @@
+module main
+
+go 1.22.4
+
+require (
+ github.com/Layr-Labs/eigenpod-proofs-generation v0.1.0-pepe-testnet.0.20240925202841-f6492b1cc9fc
+ github.com/attestantio/go-eth2-client v0.21.11
+ github.com/ethereum/go-ethereum v1.14.9
+ github.com/jbrower95/multicall-go v0.0.0-20241012224745-7e9c19976cb5
+ github.com/samber/lo v1.47.0
+)
+
+require (
+ github.com/Microsoft/go-winio v0.6.2 // indirect
+ github.com/StackExchange/wmi v1.2.1 // indirect
+ github.com/beorn7/perks v1.0.1 // indirect
+ github.com/bits-and-blooms/bitset v1.13.0 // indirect
+ github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect
+ github.com/cespare/xxhash/v2 v2.3.0 // indirect
+ github.com/consensys/bavard v0.1.13 // indirect
+ github.com/consensys/gnark-crypto v0.12.1 // indirect
+ github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect
+ github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect
+ github.com/deckarep/golang-set/v2 v2.6.0 // indirect
+ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
+ github.com/ethereum/c-kzg-4844 v1.0.0 // indirect
+ github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 // indirect
+ github.com/fatih/color v1.16.0 // indirect
+ github.com/ferranbt/fastssz v0.1.3 // indirect
+ github.com/fsnotify/fsnotify v1.6.0 // indirect
+ github.com/go-logr/logr v1.2.4 // indirect
+ github.com/go-logr/stdr v1.2.2 // indirect
+ github.com/go-ole/go-ole v1.3.0 // indirect
+ github.com/goccy/go-yaml v1.9.2 // indirect
+ github.com/google/uuid v1.6.0 // indirect
+ github.com/gorilla/websocket v1.4.2 // indirect
+ github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
+ github.com/holiman/uint256 v1.3.1 // indirect
+ github.com/huandu/go-clone v1.6.0 // indirect
+ github.com/klauspost/cpuid/v2 v2.2.7 // indirect
+ github.com/mattn/go-colorable v0.1.13 // indirect
+ github.com/mattn/go-isatty v0.0.20 // indirect
+ github.com/minio/sha256-simd v1.0.1 // indirect
+ github.com/mitchellh/mapstructure v1.5.0 // indirect
+ github.com/mmcloughlin/addchain v0.4.0 // indirect
+ github.com/pk910/dynamic-ssz v0.0.3 // indirect
+ github.com/pkg/errors v0.9.1 // indirect
+ github.com/prometheus/client_golang v1.19.0 // indirect
+ github.com/prometheus/client_model v0.5.0 // indirect
+ github.com/prometheus/common v0.48.0 // indirect
+ github.com/prometheus/procfs v0.12.0 // indirect
+ github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e // indirect
+ github.com/r3labs/sse/v2 v2.10.0 // indirect
+ github.com/rs/zerolog v1.32.0 // indirect
+ github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect
+ github.com/supranational/blst v0.3.11 // indirect
+ github.com/tklauser/go-sysconf v0.3.12 // indirect
+ github.com/tklauser/numcpus v0.6.1 // indirect
+ go.opentelemetry.io/otel v1.16.0 // indirect
+ go.opentelemetry.io/otel/metric v1.16.0 // indirect
+ go.opentelemetry.io/otel/trace v1.16.0 // indirect
+ golang.org/x/crypto v0.23.0 // indirect
+ golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect
+ golang.org/x/net v0.24.0 // indirect
+ golang.org/x/sync v0.7.0 // indirect
+ golang.org/x/sys v0.22.0 // indirect
+ golang.org/x/text v0.16.0 // indirect
+ golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
+ google.golang.org/protobuf v1.34.2 // indirect
+ gopkg.in/Knetic/govaluate.v3 v3.0.0 // indirect
+ gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect
+ gopkg.in/yaml.v2 v2.4.0 // indirect
+ rsc.io/tmplfunc v0.0.3 // indirect
+)
diff --git a/script/releases/v1.0.0-slashing/cleanup/go.sum b/script/releases/v1.0.0-slashing/cleanup/go.sum
new file mode 100644
index 0000000000..f100d52de7
--- /dev/null
+++ b/script/releases/v1.0.0-slashing/cleanup/go.sum
@@ -0,0 +1,283 @@
+github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ=
+github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
+github.com/Layr-Labs/eigenpod-proofs-generation v0.1.0-pepe-testnet.0.20240925202841-f6492b1cc9fc h1:xOvrJ2NHD7ykcikuqqvUVXZR6PNUomd05eO/vYQ2+g8=
+github.com/Layr-Labs/eigenpod-proofs-generation v0.1.0-pepe-testnet.0.20240925202841-f6492b1cc9fc/go.mod h1:T7tYN8bTdca2pkMnz9G2+ZwXYWw5gWqQUIu4KLgC/vM=
+github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
+github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
+github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
+github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
+github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI=
+github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI=
+github.com/attestantio/go-eth2-client v0.21.11 h1:0ZYP69O8rJz41055WOf3n1C1NA4jNh2iME/NuTVfgmQ=
+github.com/attestantio/go-eth2-client v0.21.11/go.mod h1:d7ZPNrMX8jLfIgML5u7QZxFo2AukLM+5m08iMaLdqb8=
+github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
+github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
+github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE=
+github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
+github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ=
+github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04=
+github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U=
+github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=
+github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk=
+github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s=
+github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
+github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I=
+github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8=
+github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4=
+github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M=
+github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE=
+github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs=
+github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA=
+github.com/cockroachdb/pebble v1.1.2/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU=
+github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30=
+github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg=
+github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo=
+github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ=
+github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ=
+github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI=
+github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M=
+github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY=
+github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
+github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
+github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I=
+github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs=
+github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI=
+github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM=
+github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4=
+github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0=
+github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
+github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA=
+github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0=
+github.com/ethereum/go-ethereum v1.14.9 h1:J7iwXDrtUyE9FUjUYbd4c9tyzwMh6dTJsKzo9i6SrwA=
+github.com/ethereum/go-ethereum v1.14.9/go.mod h1:QeW+MtTpRdBEm2pUFoonByee8zfHv7kGp0wK0odvU1I=
+github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 h1:8NfxH2iXvJ60YRB8ChToFTUzl8awsc3cJ8CbLjGIl/A=
+github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk=
+github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
+github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
+github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
+github.com/ferranbt/fastssz v0.1.3 h1:ZI+z3JH05h4kgmFXdHuR1aWYsgrg7o+Fw7/NCzM16Mo=
+github.com/ferranbt/fastssz v0.1.3/go.mod h1:0Y9TEd/9XuFlh7mskMPfXiI2Dkw4Ddg9EyXt1W7MRvE=
+github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
+github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
+github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI=
+github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww=
+github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps=
+github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY=
+github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=
+github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
+github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
+github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
+github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
+github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
+github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q=
+github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
+github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no=
+github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
+github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE=
+github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
+github.com/goccy/go-yaml v1.9.2 h1:2Njwzw+0+pjU2gb805ZC1B/uBuAs2VcZ3K+ZgHwDs7w=
+github.com/goccy/go-yaml v1.9.2/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA=
+github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
+github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
+github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
+github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
+github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
+github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
+github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
+github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk=
+github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
+github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
+github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
+github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
+github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE=
+github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0=
+github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
+github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
+github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4=
+github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc=
+github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao=
+github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA=
+github.com/holiman/uint256 v1.3.1 h1:JfTzmih28bittyHM8z360dCjIA9dbPIBlcTI6lmctQs=
+github.com/holiman/uint256 v1.3.1/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E=
+github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c=
+github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U=
+github.com/huandu/go-clone v1.6.0 h1:HMo5uvg4wgfiy5FoGOqlFLQED/VGRm2D9Pi8g1FXPGc=
+github.com/huandu/go-clone v1.6.0/go.mod h1:ReGivhG6op3GYr+UY3lS6mxjKp7MIGTknuU5TbTVaXE=
+github.com/huandu/go-clone/generic v1.6.0 h1:Wgmt/fUZ28r16F2Y3APotFD59sHk1p78K0XLdbUYN5U=
+github.com/huandu/go-clone/generic v1.6.0/go.mod h1:xgd9ZebcMsBWWcBx5mVMCoqMX24gLWr5lQicr+nVXNs=
+github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
+github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
+github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
+github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
+github.com/jbrower95/multicall-go v0.0.0-20241012224745-7e9c19976cb5 h1:MbF9mcEhOK8A1lphvcfh5Tg7Y2p4iUAtw2+yz3jUa94=
+github.com/jbrower95/multicall-go v0.0.0-20241012224745-7e9c19976cb5/go.mod h1:cl6hJrk69g0EyKPgNySQbJE1nj29t2q7Pu0as27uC04=
+github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4=
+github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
+github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM=
+github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
+github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
+github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
+github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
+github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c=
+github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
+github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y=
+github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
+github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
+github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
+github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU=
+github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
+github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
+github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
+github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
+github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
+github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A=
+github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4=
+github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY=
+github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU=
+github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU=
+github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
+github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
+github.com/pk910/dynamic-ssz v0.0.3 h1:fCWzFowq9P6SYCc7NtJMkZcIHk+r5hSVD+32zVi6Aio=
+github.com/pk910/dynamic-ssz v0.0.3/go.mod h1:b6CrLaB2X7pYA+OSEEbkgXDEcRnjLOZIxZTsMuO/Y9c=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
+github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
+github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=
+github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
+github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
+github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
+github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
+github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
+github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e h1:ATgOe+abbzfx9kCPeXIW4fiWyDdxlwHw07j8UGhdTd4=
+github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e/go.mod h1:wmuf/mdK4VMD+jA9ThwcUKjg3a2XWM9cVfFYjDyY4j4=
+github.com/r3labs/sse/v2 v2.10.0 h1:hFEkLLFY4LDifoHdiCN/LlGBAdVJYsANaLqNYa1l/v0=
+github.com/r3labs/sse/v2 v2.10.0/go.mod h1:Igau6Whc+F17QUgML1fYe1VPZzTV6EMCnYktEmkNJ7I=
+github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
+github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
+github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
+github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA=
+github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik=
+github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
+github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
+github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0=
+github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
+github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
+github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc=
+github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU=
+github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU=
+github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
+github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA=
+github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
+github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4=
+github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw=
+github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY=
+github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc=
+github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
+github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
+github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
+github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
+github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8=
+github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U=
+github.com/umbracle/gohashtree v0.0.2-alpha.0.20230207094856-5b775a815c10 h1:CQh33pStIp/E30b7TxDlXfM0145bn2e8boI30IxAhTg=
+github.com/umbracle/gohashtree v0.0.2-alpha.0.20230207094856-5b775a815c10/go.mod h1:x/Pa0FF5Te9kdrlZKJK82YmAkvL8+f989USgz6Jiw7M=
+github.com/urfave/cli/v2 v2.27.1 h1:8xSQ6szndafKVRmfyeUMxkNUJQMjL1F2zmsZ+qHpfho=
+github.com/urfave/cli/v2 v2.27.1/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
+github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
+github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
+go.opentelemetry.io/otel v1.16.0 h1:Z7GVAX/UkAXPKsy94IU+i6thsQS4nb7LviLpnaNeW8s=
+go.opentelemetry.io/otel v1.16.0/go.mod h1:vl0h9NUa1D5s1nv3A5vZOYWn8av4K8Ml6JDeHrT/bx4=
+go.opentelemetry.io/otel/metric v1.16.0 h1:RbrpwVG1Hfv85LgnZ7+txXioPDoh6EdbZHo26Q3hqOo=
+go.opentelemetry.io/otel/metric v1.16.0/go.mod h1:QE47cpOmkwipPiefDwo2wDzwJrlfxxNYodqc4xnGCo4=
+go.opentelemetry.io/otel/trace v1.16.0 h1:8JRpaObFoW0pxuVPapkgH8UhHQj+bJW8jJsCZEu5MQs=
+go.opentelemetry.io/otel/trace v1.16.0/go.mod h1:Yt9vYq1SdNz3xdjZZK7wcXv1qv2pwLkqr2QVwea0ef0=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
+golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
+golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ=
+golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20191116160921-f9c825593386/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
+golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
+golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
+golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
+golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
+golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
+golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
+golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=
+golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
+google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
+google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
+gopkg.in/Knetic/govaluate.v3 v3.0.0 h1:18mUyIt4ZlRlFZAAfVetz4/rzlJs9yhN+U02F4u1AOc=
+gopkg.in/Knetic/govaluate.v3 v3.0.0/go.mod h1:csKLBORsPbafmSCGTEh3U7Ozmsuq8ZSIlKk1bcqph0E=
+gopkg.in/cenkalti/backoff.v1 v1.1.0 h1:Arh75ttbsvlpVA7WtVpH4u9h6Zl46xuptxqLxPiSo4Y=
+gopkg.in/cenkalti/backoff.v1 v1.1.0/go.mod h1:J6Vskwqd+OMVJl8C33mmtxTBs2gyzfv7UDAkHu8BrjI=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
+gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU=
+rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA=
diff --git a/script/releases/v1.0.0-slashing/cleanup/script.go b/script/releases/v1.0.0-slashing/cleanup/script.go
new file mode 100644
index 0000000000..bbc3da4da1
--- /dev/null
+++ b/script/releases/v1.0.0-slashing/cleanup/script.go
@@ -0,0 +1,328 @@
+package main
+
+import (
+ "context"
+ _ "embed"
+ "encoding/json"
+ "fmt"
+ "math/big"
+ "os"
+ "sort"
+ "strings"
+ "time"
+
+ proofgen "github.com/Layr-Labs/eigenpod-proofs-generation/cli/core"
+ eth2client "github.com/attestantio/go-eth2-client"
+ "github.com/attestantio/go-eth2-client/api"
+ v1 "github.com/attestantio/go-eth2-client/api/v1"
+ attestantio "github.com/attestantio/go-eth2-client/http"
+ "github.com/attestantio/go-eth2-client/spec/phase0"
+ "github.com/ethereum/go-ethereum/accounts/abi"
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/ethclient"
+ multicall "github.com/jbrower95/multicall-go"
+ "github.com/samber/lo"
+)
+
+type EigenpodInfo struct {
+ Address string `json:"address"`
+ CurrentCheckpointTimestamp uint64 `json:"currentCheckpointTimestamp"`
+}
+
+type TQueryAllEigenpodsOnNetworkArgs struct {
+ Ctx context.Context
+ AllValidators []ValidatorWithIndex
+ Eth *ethclient.Client
+ EigenpodAbi abi.ABI
+ PodManagerAbi abi.ABI
+ PodManagerAddress string
+ Mc *multicall.MulticallClient
+}
+
+//go:embed EigenPod.abi.json
+var EigenPodAbi string
+
+//go:embed EigenPodManager.abi.json
+var EigenPodManagerAbi string
+
+type ValidatorWithIndex struct {
+ Validator *v1.Validator
+ Index phase0.ValidatorIndex
+}
+
+type TArgs struct {
+ Node string
+ BeaconNode string
+ Sender string
+}
+
+func main() {
+ err := runScript(TArgs{
+ Node: os.Getenv("RPC_URL"),
+ BeaconNode: os.Getenv("BEACON_URL"),
+ Sender: os.Getenv("SENDER_PK"),
+ })
+ if err != nil {
+ fmt.Printf("Error: %v\n", err)
+ os.Exit(1)
+ }
+}
+
+func panicOnError(msg string, err error) {
+ if err != nil {
+ fmt.Printf("Error: %s", msg)
+ panic(err)
+ }
+}
+
+func runScript(args TArgs) error {
+ ctx := context.Background()
+
+ if args.Sender[:2] == "0x" {
+ args.Sender = args.Sender[2:]
+ }
+ fmt.Printf("Sender: %s\n", args.Sender)
+
+ eigenpodAbi, err := abi.JSON(strings.NewReader(EigenPodAbi))
+ panicOnError("failed to load eigenpod abi", err)
+
+ podManagerAbi, err := abi.JSON(strings.NewReader(EigenPodManagerAbi))
+ panicOnError("failed to load eigenpod manager abi", err)
+
+ eth, err := ethclient.Dial(args.Node)
+ panicOnError("failed to reach eth node", err)
+
+ chainId, err := eth.ChainID(ctx)
+ panicOnError("failed to read chainId", err)
+
+ beaconClient, err := attestantio.New(ctx,
+ attestantio.WithAddress(args.BeaconNode),
+ )
+ panicOnError("failed to reach beacon node", err)
+
+ panicOnError("failed to reach ethereum clients", err)
+
+ mc, err := multicall.NewMulticallClient(ctx, eth, &multicall.TMulticallClientOptions{
+ MaxBatchSizeBytes: 8192,
+ })
+ panicOnError("error initializing mc", err)
+
+ podManagerAddress := os.Getenv("ZEUS_DEPLOYED_EigenPodManager_Proxy")
+
+ // fetch latest beacon state.
+ _validators := (func() *map[phase0.ValidatorIndex]*v1.Validator {
+ if provider, isProvider := beaconClient.(eth2client.ValidatorsProvider); isProvider {
+ validators, err := provider.Validators(ctx, &api.ValidatorsOpts{
+ State: "head",
+ Common: api.CommonOpts{
+ Timeout: 60 * time.Second,
+ },
+ })
+ panicOnError("failed to load validator set", err)
+ return &validators.Data
+ }
+ return nil
+ })()
+ if _validators == nil {
+ panic("failed to load validators")
+ }
+ validators := *_validators
+
+ fmt.Printf("Found %d validators\n", len(validators))
+
+ panicOnError("failed to load beacon state", err)
+
+ panicOnError("failed to fetch validators", err)
+ allValidators := lo.Map(lo.Keys(validators), func(idx phase0.ValidatorIndex, i int) ValidatorWithIndex {
+ return ValidatorWithIndex{
+ Validator: validators[idx],
+ Index: idx,
+ }
+ })
+
+ allEigenpods, err := queryAllEigenpodsOnNetwork(ctx, allValidators, eth, &eigenpodAbi, &podManagerAbi, podManagerAddress, mc)
+ panicOnError("queryAllEigenpodsOnNetwork", err)
+
+ enc := json.NewEncoder(os.Stdout)
+ enc.SetIndent("", " ")
+
+ fmt.Printf("Discovered %d eigenpods on the network.\n", len(allEigenpods))
+
+ pods := lo.Map(allEigenpods, func(pod string, i int) string {
+ return fmt.Sprintf("0x%s", pod)
+ })
+ sort.Strings(pods)
+ fmt.Printf("%s\n", enc.Encode(pods))
+
+ // Now for each eigenpod, we want to fetch currentCheckpointTimestamp.
+ // We'll do a multicall to get currentCheckpointTimestamp from each eigenpod.
+ checkpointTimestamps, err := fetchCurrentCheckpointTimestamps(allEigenpods, &eigenpodAbi, mc)
+ panicOnError("failed to fetch currentCheckpointTimestamps", err)
+
+ results := []EigenpodInfo{}
+
+ for i, ep := range allEigenpods {
+ if checkpointTimestamps[i] > 0 {
+ results = append(results, EigenpodInfo{
+ Address: fmt.Sprintf("0x%s", ep),
+ CurrentCheckpointTimestamp: checkpointTimestamps[i],
+ })
+ }
+ }
+
+ if len(results) == 0 {
+ fmt.Printf("No eigenpods had active checkpoints. OK.")
+ return nil
+ }
+
+ fmt.Printf("%d EigenPods had active checkpoints\n\n", len(results))
+ fmt.Printf("%s\n", enc.Encode(results))
+
+ fmt.Printf("Completing %d checkpoints....", len(results))
+ coreBeaconClient, _, err := proofgen.NewBeaconClient(args.BeaconNode, true /* verbose */)
+ panicOnError("failed to instantiate beaconClient", err)
+
+ for i := 0; i < len(results); i++ {
+ fmt.Printf("Completing [%d/%d]...", i+1, len(results))
+ fmt.Printf("NOTE: this is expensive, and may take several minutes.")
+ completeCheckpointForEigenpod(ctx, results[i].Address, eth, chainId, coreBeaconClient, args.Sender)
+ }
+
+ checkpointTimestamps, err = fetchCurrentCheckpointTimestamps(allEigenpods, &eigenpodAbi, mc)
+ panicOnError("failed to fetch currentCheckpointTimestamps", err)
+
+ // require that all eigenpods have a checkpoint timestamp of 0
+ for i, timestamp := range checkpointTimestamps {
+ if timestamp != 0 {
+ panic(fmt.Sprintf("expected all eigenpods to have a checkpoint timestamp of 0, but found %d on %s", timestamp, allEigenpods[i]))
+ }
+ }
+
+ return nil
+}
+
+func completeCheckpointForEigenpod(ctx context.Context, eigenpodAddress string, eth *ethclient.Client, chainId *big.Int, coreBeaconClient proofgen.BeaconClient, sender string) {
+ res, err := proofgen.GenerateCheckpointProof(ctx, eigenpodAddress, eth, chainId, coreBeaconClient, true)
+ panicOnError(fmt.Sprintf("failed to generate checkpoint proof for eigenpod:%s", eigenpodAddress), err)
+
+ txns, err := proofgen.SubmitCheckpointProof(ctx, sender, eigenpodAddress, chainId, res, eth, 80 /* ideal checkpoint proof batch size */, true /* noPrompt */, false /* noSend */, true /* verbose */)
+ panicOnError(fmt.Sprintf("failed to submit checkpoint proof for eigenpod:%s", eigenpodAddress), err)
+ if txns == nil {
+ panic("submitting checkpoint proof generated no transactions. this is a bug.")
+ }
+
+ for i, txn := range txns {
+ fmt.Printf("[%d/%d] %s\n", i+1, len(txns), txn.Hash())
+ }
+}
+
+// This is a simplified version of the queryAllEigenpodsOnNetwork function inline.
+// It uses the logic from the provided code snippet in the commands package.
+func queryAllEigenpodsOnNetwork(
+ ctx context.Context,
+ allValidators []ValidatorWithIndex,
+ eth *ethclient.Client,
+ eigenpodAbi, podManagerAbi *abi.ABI,
+ podManagerAddress string,
+ mc *multicall.MulticallClient,
+) ([]string, error) {
+ args := TQueryAllEigenpodsOnNetworkArgs{
+ Ctx: ctx,
+ AllValidators: allValidators,
+ Eth: eth,
+ EigenpodAbi: *eigenpodAbi,
+ PodManagerAbi: *podManagerAbi,
+ PodManagerAddress: podManagerAddress,
+ Mc: mc,
+ }
+ return internalQueryAllEigenpodsOnNetwork(args)
+}
+
+// internalQueryAllEigenpodsOnNetwork is lifted from the provided snippet.
+func internalQueryAllEigenpodsOnNetwork(args TQueryAllEigenpodsOnNetworkArgs) ([]string, error) {
+ // Filter out validators that are withdrawing to execution layer addresses
+ executionLayerWithdrawalCredentialValidators := lo.Filter(args.AllValidators, func(validator ValidatorWithIndex, i int) bool {
+ return validator.Validator.Validator.WithdrawalCredentials[0] == 1
+ })
+
+ interestingWithdrawalAddresses := lo.Keys(lo.Reduce(executionLayerWithdrawalCredentialValidators, func(accum map[string]int, next ValidatorWithIndex, index int) map[string]int {
+ accum[common.Bytes2Hex(next.Validator.Validator.WithdrawalCredentials[12:])] = 1
+ return accum
+ }, map[string]int{}))
+
+ fmt.Printf("Querying %d beacon-chain withdrawal addresses to see if they may be eigenpods\n", len(interestingWithdrawalAddresses))
+
+ podOwners, err := multicall.DoManyAllowFailures[common.Address](args.Mc, lo.Map(interestingWithdrawalAddresses, func(address string, index int) *multicall.MultiCallMetaData[common.Address] {
+ callMeta, err := multicall.Describe[common.Address](
+ common.HexToAddress(address),
+ args.EigenpodAbi,
+ "podOwner",
+ )
+ panicOnError("failed to form mc", err)
+ return callMeta
+ })...)
+
+ if podOwners == nil || err != nil || len(*podOwners) == 0 {
+ panicOnError("failed to fetch podOwners", err)
+ panic("loaded no pod owners")
+ }
+
+ podToPodOwner := map[string]*common.Address{}
+ addressesWithPodOwners := lo.Filter(interestingWithdrawalAddresses, func(address string, i int) bool {
+ success := (*podOwners)[i].Success
+ if success {
+ podToPodOwner[address] = (*podOwners)[i].Value
+ }
+ return success
+ })
+
+ fmt.Printf("Querying %d addresses on (EigenPodManager=%s) to see if it knows about these eigenpods\n", len(addressesWithPodOwners), args.PodManagerAddress)
+
+ eigenpodForOwner, err := multicall.DoMany(
+ args.Mc,
+ lo.Map(addressesWithPodOwners, func(address string, i int) *multicall.MultiCallMetaData[common.Address] {
+ claimedOwner := *podToPodOwner[address]
+ call, err := multicall.Describe[common.Address](
+ common.HexToAddress(args.PodManagerAddress),
+ args.PodManagerAbi,
+ "ownerToPod",
+ claimedOwner,
+ )
+ panicOnError("failed to form multicall", err)
+ return call
+ })...,
+ )
+ panicOnError("failed to query", err)
+
+ // now, see which are properly eigenpods
+ return lo.Filter(addressesWithPodOwners, func(address string, i int) bool {
+ return (*eigenpodForOwner)[i].Cmp(common.HexToAddress(addressesWithPodOwners[i])) == 0
+ }), nil
+}
+
+func fetchCurrentCheckpointTimestamps(
+ allEigenpods []string,
+ eigenpodAbi *abi.ABI,
+ mc *multicall.MulticallClient,
+) ([]uint64, error) {
+ calls := lo.Map(allEigenpods, func(eigenpod string, i int) *multicall.MultiCallMetaData[uint64] {
+ call, err := multicall.Describe[uint64](
+ common.HexToAddress(eigenpod),
+ *eigenpodAbi,
+ "currentCheckpointTimestamp",
+ )
+ panicOnError("failed to form multicall", err)
+ return call
+ })
+
+ results, err := multicall.DoMany(mc, calls...)
+ if err != nil {
+ return nil, err
+ }
+
+ out := make([]uint64, len(*results))
+ for i, r := range *results {
+ out[i] = *r
+ }
+ return out, nil
+}
diff --git a/script/releases/v1.0.0-slashing/cleanup/start.sh b/script/releases/v1.0.0-slashing/cleanup/start.sh
new file mode 100755
index 0000000000..e75139d25b
--- /dev/null
+++ b/script/releases/v1.0.0-slashing/cleanup/start.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+cd script/releases/v1.0.0-slashing/cleanup
+go run script.go
\ No newline at end of file
diff --git a/script/releases/v1.0.0-slashing/upgrade.json b/script/releases/v1.0.0-slashing/upgrade.json
new file mode 100644
index 0000000000..3ee10a2ca6
--- /dev/null
+++ b/script/releases/v1.0.0-slashing/upgrade.json
@@ -0,0 +1,32 @@
+{
+ "name": "slashing",
+ "from": "~0.5.3",
+ "to": "1.0.0",
+ "phases": [
+ {
+ "type": "eoa",
+ "filename": "1-deployContracts.s.sol"
+ },
+ {
+ "type": "multisig",
+ "filename": "2-queueUpgradeAndUnpause.s.sol"
+ },
+ {
+ "type": "multisig",
+ "filename": "3-pause.s.sol"
+ },
+ {
+ "type": "script",
+ "filename": "cleanup/start.sh",
+ "arguments": [
+ {"type": "url", "passBy": "env", "inputType": "text", "name": "RPC_URL", "prompt": "Enter an ETH RPC URL"},
+ {"type": "url", "passBy": "env", "inputType": "text", "name": "BEACON_URL", "prompt": "Enter an ETH2 Beacon RPC URL"},
+ {"type": "privateKey", "passBy": "env", "inputType": "password", "name": "SENDER_PK", "prompt": "Enter an ETH wallet private key to complete checkpoints from:"}
+ ]
+ },
+ {
+ "type": "multisig",
+ "filename": "5-executeUpgradeAndUnpause.s.sol"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/script/releases/v1.0.1-slashing/1-eoa.s.sol b/script/releases/v1.0.1-slashing/1-eoa.s.sol
new file mode 100644
index 0000000000..82481da8c2
--- /dev/null
+++ b/script/releases/v1.0.1-slashing/1-eoa.s.sol
@@ -0,0 +1,123 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.12;
+
+import {EOADeployer} from "zeus-templates/templates/EOADeployer.sol";
+import "../Env.sol";
+
+import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
+import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
+import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
+import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
+
+contract Deploy is EOADeployer {
+ using Env for *;
+
+ function _runAsEOA() internal override {
+ vm.startBroadcast();
+ deployImpl({
+ name: type(AllocationManager).name,
+ deployedTo: address(new AllocationManager({
+ _delegation: Env.proxy.delegationManager(),
+ _pauserRegistry: Env.impl.pauserRegistry(),
+ _permissionController: Env.proxy.permissionController(),
+ _DEALLOCATION_DELAY: Env.MIN_WITHDRAWAL_DELAY(),
+ _ALLOCATION_CONFIGURATION_DELAY: Env.ALLOCATION_CONFIGURATION_DELAY()
+ }))
+ });
+
+ deployImpl({
+ name: type(DelegationManager).name,
+ deployedTo: address(new DelegationManager({
+ _strategyManager: Env.proxy.strategyManager(),
+ _eigenPodManager: Env.proxy.eigenPodManager(),
+ _allocationManager: Env.proxy.allocationManager(),
+ _pauserRegistry: Env.impl.pauserRegistry(),
+ _permissionController: Env.proxy.permissionController(),
+ _MIN_WITHDRAWAL_DELAY: Env.MIN_WITHDRAWAL_DELAY()
+ }))
+ });
+
+ vm.stopBroadcast();
+ }
+
+ function testDeploy() public virtual {
+ _runAsEOA();
+ _validateNewImplAddresses(false);
+ _validateImplConstructors();
+ _validateImplsInitialized();
+ }
+
+
+ /// @dev Validate that the `Env.impl` addresses are updated to be distinct from what the proxy
+ /// admin reports as the current implementation address.
+ ///
+ /// Note: The upgrade script can call this with `areMatching == true` to check that these impl
+ /// addresses _are_ matches.
+ function _validateNewImplAddresses(bool areMatching) internal view {
+ function (address, address, string memory) internal pure assertion =
+ areMatching ? _assertMatch : _assertNotMatch;
+
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.delegationManager())),
+ address(Env.impl.delegationManager()),
+ "delegationManager impl failed"
+ );
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.allocationManager())),
+ address(Env.impl.allocationManager()),
+ "allocationManager impl failed"
+ );
+ }
+
+ /// @dev Validate the immutables set in the new implementation constructors
+ function _validateImplConstructors() internal view {
+ AllocationManager allocationManager = Env.impl.allocationManager();
+ assertTrue(allocationManager.delegation() == Env.proxy.delegationManager(), "alm.dm invalid");
+ assertTrue(allocationManager.pauserRegistry() == Env.impl.pauserRegistry(), "alm.pR invalid");
+ assertTrue(allocationManager.permissionController() == Env.proxy.permissionController(), "alm.pc invalid");
+ assertTrue(allocationManager.DEALLOCATION_DELAY() == Env.MIN_WITHDRAWAL_DELAY(), "alm.deallocDelay invalid");
+ assertTrue(allocationManager.ALLOCATION_CONFIGURATION_DELAY() == Env.ALLOCATION_CONFIGURATION_DELAY(), "alm.configDelay invalid");
+
+
+ DelegationManager delegation = Env.impl.delegationManager();
+ assertTrue(delegation.strategyManager() == Env.proxy.strategyManager(), "dm.sm invalid");
+ assertTrue(delegation.eigenPodManager() == Env.proxy.eigenPodManager(), "dm.epm invalid");
+ assertTrue(delegation.allocationManager() == Env.proxy.allocationManager(), "dm.alm invalid");
+ assertTrue(delegation.pauserRegistry() == Env.impl.pauserRegistry(), "dm.pR invalid");
+ assertTrue(delegation.permissionController() == Env.proxy.permissionController(), "dm.pc invalid");
+ assertTrue(delegation.minWithdrawalDelayBlocks() == Env.MIN_WITHDRAWAL_DELAY(), "dm.withdrawalDelay invalid");
+ }
+
+ /// @dev Call initialize on all deployed implementations to ensure initializers are disabled
+ function _validateImplsInitialized() internal {
+ bytes memory errInit = "Initializable: contract is already initialized";
+
+ AllocationManager allocationManager = Env.impl.allocationManager();
+ vm.expectRevert(errInit);
+ allocationManager.initialize(address(0), 0);
+
+ DelegationManager delegation = Env.impl.delegationManager();
+ vm.expectRevert(errInit);
+ delegation.initialize(address(0), 0);
+ }
+
+ /// @dev Query and return `proxyAdmin.getProxyImplementation(proxy)`
+ function _getProxyImpl(address proxy) internal view returns (address) {
+ return ProxyAdmin(Env.proxyAdmin()).getProxyImplementation(ITransparentUpgradeableProxy(proxy));
+ }
+
+ /// @dev Query and return `proxyAdmin.getProxyAdmin(proxy)`
+ function _getProxyAdmin(address proxy) internal view returns (address) {
+ return ProxyAdmin(Env.proxyAdmin()).getProxyAdmin(ITransparentUpgradeableProxy(proxy));
+ }
+
+ function _assertMatch(address a, address b, string memory err) private pure {
+ assertEq(a, b, err);
+ }
+
+ function _assertNotMatch(address a, address b, string memory err) private pure {
+ assertNotEq(a, b, err);
+ }
+}
\ No newline at end of file
diff --git a/script/releases/v1.0.1-slashing/2-multisig.s.sol b/script/releases/v1.0.1-slashing/2-multisig.s.sol
new file mode 100644
index 0000000000..143679ab86
--- /dev/null
+++ b/script/releases/v1.0.1-slashing/2-multisig.s.sol
@@ -0,0 +1,78 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.12;
+
+import {Deploy} from "./1-eoa.s.sol";
+import "../Env.sol";
+
+import {MultisigBuilder} from "zeus-templates/templates/MultisigBuilder.sol";
+import "zeus-templates/utils/Encode.sol";
+
+import {TimelockController} from "@openzeppelin/contracts/governance/TimelockController.sol";
+
+contract Queue is MultisigBuilder, Deploy {
+ using Env for *;
+ using Encode for *;
+
+ function _runAsMultisig() prank(Env.opsMultisig()) internal virtual override {
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+
+ TimelockController timelock = Env.timelockController();
+ timelock.schedule({
+ target: Env.executorMultisig(),
+ value: 0,
+ data: calldata_to_executor,
+ predecessor: 0,
+ salt: 0,
+ delay: timelock.getMinDelay()
+ });
+ }
+
+ /// @dev Get the calldata to be sent from the timelock to the executor
+ function _getCalldataToExecutor() internal returns (bytes memory) {
+ MultisigCall[] storage executorCalls = Encode.newMultisigCalls()
+ /// core/
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.allocationManager()),
+ impl: address(Env.impl.allocationManager())
+ })
+ })
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.delegationManager()),
+ impl: address(Env.impl.delegationManager())
+ })
+ });
+
+ return Encode.gnosisSafe.execTransaction({
+ from: address(Env.timelockController()),
+ to: address(Env.multiSendCallOnly()),
+ op: Encode.Operation.DelegateCall,
+ data: Encode.multiSend(executorCalls)
+ });
+ }
+
+ function testScript() public virtual {
+ runAsEOA();
+
+ TimelockController timelock = Env.timelockController();
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+ bytes32 txHash = timelock.hashOperation({
+ target: Env.executorMultisig(),
+ value: 0,
+ data: calldata_to_executor,
+ predecessor: 0,
+ salt: 0
+ });
+
+ // Check that the upgrade does not exist in the timelock
+ assertFalse(timelock.isOperationPending(txHash), "Transaction should NOT be queued.");
+
+ execute();
+
+ // Check that the upgrade has been added to the timelock
+ assertTrue(timelock.isOperationPending(txHash), "Transaction should be queued.");
+ }
+}
\ No newline at end of file
diff --git a/script/releases/v1.0.1-slashing/3-execute.s.sol b/script/releases/v1.0.1-slashing/3-execute.s.sol
new file mode 100644
index 0000000000..d495094872
--- /dev/null
+++ b/script/releases/v1.0.1-slashing/3-execute.s.sol
@@ -0,0 +1,75 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.12;
+
+import "../Env.sol";
+import {Queue} from "./2-multisig.s.sol";
+
+import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
+import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
+
+contract Execute is Queue {
+ using Env for *;
+
+ function _runAsMultisig() prank(Env.protocolCouncilMultisig()) internal override(Queue) {
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+
+ TimelockController timelock = Env.timelockController();
+ timelock.execute({
+ target: Env.executorMultisig(),
+ value: 0,
+ payload: calldata_to_executor,
+ predecessor: 0,
+ salt: 0
+ });
+ }
+
+ function testScript() public virtual override(Queue){
+ // 0. Deploy Impls
+ runAsEOA();
+
+ TimelockController timelock = Env.timelockController();
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+ bytes32 txHash = timelock.hashOperation({
+ target: Env.executorMultisig(),
+ value: 0,
+ data: calldata_to_executor,
+ predecessor: 0,
+ salt: 0
+ });
+ assertFalse(timelock.isOperationPending(txHash), "Transaction should NOT be queued.");
+
+ // 1. Queue Upgrade
+ Queue._runAsMultisig();
+ _unsafeResetHasPranked(); // reset hasPranked so we can use it again
+
+ // 2. Warp past delay
+ vm.warp(block.timestamp + timelock.getMinDelay()); // 1 tick after ETA
+ assertEq(timelock.isOperationReady(txHash), true, "Transaction should be executable.");
+
+ // 3- execute
+ execute();
+
+ assertTrue(timelock.isOperationDone(txHash), "Transaction should be complete.");
+
+ // 4. Validate
+ _validateNewImplAddresses(true);
+ _validateProxyConstructors();
+ }
+
+ function _validateProxyConstructors() internal view {
+ AllocationManager allocationManager = Env.proxy.allocationManager();
+ assertTrue(allocationManager.delegation() == Env.proxy.delegationManager(), "alm.dm invalid");
+ assertTrue(allocationManager.pauserRegistry() == Env.impl.pauserRegistry(), "alm.pR invalid");
+ assertTrue(allocationManager.permissionController() == Env.proxy.permissionController(), "alm.pc invalid");
+ assertTrue(allocationManager.DEALLOCATION_DELAY() == Env.MIN_WITHDRAWAL_DELAY(), "alm.deallocDelay invalid");
+ assertTrue(allocationManager.ALLOCATION_CONFIGURATION_DELAY() == Env.ALLOCATION_CONFIGURATION_DELAY(), "alm.configDelay invalid");
+
+ DelegationManager delegation = Env.proxy.delegationManager();
+ assertTrue(delegation.strategyManager() == Env.proxy.strategyManager(), "dm.sm invalid");
+ assertTrue(delegation.eigenPodManager() == Env.proxy.eigenPodManager(), "dm.epm invalid");
+ assertTrue(delegation.allocationManager() == Env.proxy.allocationManager(), "dm.alm invalid");
+ assertTrue(delegation.pauserRegistry() == Env.impl.pauserRegistry(), "dm.pR invalid");
+ assertTrue(delegation.permissionController() == Env.proxy.permissionController(), "dm.pc invalid");
+ assertTrue(delegation.minWithdrawalDelayBlocks() == Env.MIN_WITHDRAWAL_DELAY(), "dm.withdrawalDelay invalid");
+ }
+}
\ No newline at end of file
diff --git a/script/releases/v0.5.1-rewardsv2/upgrade.json b/script/releases/v1.0.1-slashing/upgrade.json
similarity index 69%
rename from script/releases/v0.5.1-rewardsv2/upgrade.json
rename to script/releases/v1.0.1-slashing/upgrade.json
index 988515c700..884e8dade3 100644
--- a/script/releases/v0.5.1-rewardsv2/upgrade.json
+++ b/script/releases/v1.0.1-slashing/upgrade.json
@@ -1,7 +1,7 @@
{
- "name": "rewards-v2",
- "from": "~0.0.0",
- "to": "0.5.1",
+ "name": "slashing-patch",
+ "from": "1.0.0",
+ "to": "1.0.1",
"phases": [
{
"type": "eoa",
@@ -13,7 +13,7 @@
},
{
"type": "multisig",
- "filename": "3-multisig.s.sol"
+ "filename": "3-execute.s.sol"
}
]
-}
+}
\ No newline at end of file
diff --git a/script/releases/v1.0.2-slashing-consolidated/1-deployContracts.s.sol b/script/releases/v1.0.2-slashing-consolidated/1-deployContracts.s.sol
new file mode 100644
index 0000000000..6c5828600a
--- /dev/null
+++ b/script/releases/v1.0.2-slashing-consolidated/1-deployContracts.s.sol
@@ -0,0 +1,528 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.12;
+
+import {EOADeployer} from "zeus-templates/templates/EOADeployer.sol";
+import "../Env.sol";
+
+import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
+import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
+import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
+import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
+
+/**
+ * Purpose: use an EOA to deploy all of the new contracts for this upgrade.
+ */
+contract Deploy is EOADeployer {
+ using Env for *;
+
+ function _runAsEOA() internal override {
+ vm.startBroadcast();
+
+ /// permissions/
+
+ address[] memory pausers = new address[](3);
+ pausers[0] = Env.pauserMultisig();
+ pausers[1] = Env.opsMultisig();
+ pausers[2] = Env.executorMultisig();
+
+ deployImpl({
+ name: type(PauserRegistry).name,
+ deployedTo: address(new PauserRegistry({
+ _pausers: pausers,
+ _unpauser: Env.executorMultisig()
+ }))
+ });
+
+ deployImpl({
+ name: type(PermissionController).name,
+ deployedTo: address(new PermissionController())
+ });
+
+ deployProxy({
+ name: type(PermissionController).name,
+ deployedTo: address(new TransparentUpgradeableProxy({
+ _logic: address(Env.impl.permissionController()),
+ admin_: Env.proxyAdmin(),
+ _data: ""
+ }))
+ });
+
+ /// core/
+
+ deployImpl({
+ name: type(AllocationManager).name,
+ deployedTo: address(new AllocationManager({
+ _delegation: Env.proxy.delegationManager(),
+ _pauserRegistry: Env.impl.pauserRegistry(),
+ _permissionController: Env.proxy.permissionController(),
+ _DEALLOCATION_DELAY: Env.MIN_WITHDRAWAL_DELAY(),
+ _ALLOCATION_CONFIGURATION_DELAY: Env.ALLOCATION_CONFIGURATION_DELAY()
+ }))
+ });
+
+ deployProxy({
+ name: type(AllocationManager).name,
+ deployedTo: address(new TransparentUpgradeableProxy({
+ _logic: address(Env.impl.allocationManager()),
+ admin_: Env.proxyAdmin(),
+ _data: abi.encodeCall(
+ AllocationManager.initialize,
+ (
+ Env.executorMultisig(), // initialOwner
+ 0 // initialPausedStatus
+ )
+ )
+ }))
+ });
+
+ deployImpl({
+ name: type(AVSDirectory).name,
+ deployedTo: address(new AVSDirectory({
+ _delegation: Env.proxy.delegationManager(),
+ _pauserRegistry: Env.impl.pauserRegistry()
+ }))
+ });
+
+ deployImpl({
+ name: type(DelegationManager).name,
+ deployedTo: address(new DelegationManager({
+ _strategyManager: Env.proxy.strategyManager(),
+ _eigenPodManager: Env.proxy.eigenPodManager(),
+ _allocationManager: Env.proxy.allocationManager(),
+ _pauserRegistry: Env.impl.pauserRegistry(),
+ _permissionController: Env.proxy.permissionController(),
+ _MIN_WITHDRAWAL_DELAY: Env.MIN_WITHDRAWAL_DELAY()
+ }))
+ });
+
+ deployImpl({
+ name: type(RewardsCoordinator).name,
+ deployedTo: address(new RewardsCoordinator({
+ _delegationManager: Env.proxy.delegationManager(),
+ _strategyManager: Env.proxy.strategyManager(),
+ _allocationManager: Env.proxy.allocationManager(),
+ _pauserRegistry: Env.impl.pauserRegistry(),
+ _permissionController: Env.proxy.permissionController(),
+ _CALCULATION_INTERVAL_SECONDS: Env.CALCULATION_INTERVAL_SECONDS(),
+ _MAX_REWARDS_DURATION: Env.MAX_REWARDS_DURATION(),
+ _MAX_RETROACTIVE_LENGTH: Env.MAX_RETROACTIVE_LENGTH(),
+ _MAX_FUTURE_LENGTH: Env.MAX_FUTURE_LENGTH(),
+ _GENESIS_REWARDS_TIMESTAMP: Env.GENESIS_REWARDS_TIMESTAMP()
+ }))
+ });
+
+ deployImpl({
+ name: type(StrategyManager).name,
+ deployedTo: address(new StrategyManager({
+ _delegation: Env.proxy.delegationManager(),
+ _pauserRegistry: Env.impl.pauserRegistry()
+ }))
+ });
+
+ /// pods/
+
+ deployImpl({
+ name: type(EigenPodManager).name,
+ deployedTo: address(new EigenPodManager({
+ _ethPOS: Env.ethPOS(),
+ _eigenPodBeacon: Env.beacon.eigenPod(),
+ _delegationManager: Env.proxy.delegationManager(),
+ _pauserRegistry: Env.impl.pauserRegistry()
+ }))
+ });
+
+ deployImpl({
+ name: type(EigenPod).name,
+ deployedTo: address(new EigenPod({
+ _ethPOS: Env.ethPOS(),
+ _eigenPodManager: Env.proxy.eigenPodManager(),
+ _GENESIS_TIME: Env.EIGENPOD_GENESIS_TIME()
+ }))
+ });
+
+ /// strategies/
+
+ deployImpl({
+ name: type(StrategyBaseTVLLimits).name,
+ deployedTo: address(new StrategyBaseTVLLimits({
+ _strategyManager: Env.proxy.strategyManager(),
+ _pauserRegistry: Env.impl.pauserRegistry()
+ }))
+ });
+
+ deployImpl({
+ name: type(EigenStrategy).name,
+ deployedTo: address(new EigenStrategy({
+ _strategyManager: Env.proxy.strategyManager(),
+ _pauserRegistry: Env.impl.pauserRegistry()
+ }))
+ });
+
+ deployImpl({
+ name: type(StrategyFactory).name,
+ deployedTo: address(new StrategyFactory({
+ _strategyManager: Env.proxy.strategyManager(),
+ _pauserRegistry: Env.impl.pauserRegistry()
+ }))
+ });
+
+ // for strategies deployed via factory
+ deployImpl({
+ name: type(StrategyBase).name,
+ deployedTo: address(new StrategyBase({
+ _strategyManager: Env.proxy.strategyManager(),
+ _pauserRegistry: Env.impl.pauserRegistry()
+ }))
+ });
+
+ vm.stopBroadcast();
+ }
+
+ function testScript() public virtual {
+ _runAsEOA();
+
+ _validateNewImplAddresses({ areMatching: false });
+ _validateProxyAdmins();
+ _validateImplConstructors();
+ _validateImplsInitialized();
+ _validateStrategiesAreWhitelisted();
+ }
+
+ /// @dev Validate that the `Env.impl` addresses are updated to be distinct from what the proxy
+ /// admin reports as the current implementation address.
+ ///
+ /// Note: The upgrade script can call this with `areMatching == true` to check that these impl
+ /// addresses _are_ matches.
+ function _validateNewImplAddresses(bool areMatching) internal view {
+ /// core/ -- can't check AllocationManager as it didn't exist before this deploy
+
+ function (address, address, string memory) internal pure assertion =
+ areMatching ? _assertMatch : _assertNotMatch;
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.avsDirectory())),
+ address(Env.impl.avsDirectory()),
+ "avsDirectory impl failed"
+ );
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.delegationManager())),
+ address(Env.impl.delegationManager()),
+ "delegationManager impl failed"
+ );
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.rewardsCoordinator())),
+ address(Env.impl.rewardsCoordinator()),
+ "rewardsCoordinator impl failed"
+ );
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.strategyManager())),
+ address(Env.impl.strategyManager()),
+ "strategyManager impl failed"
+ );
+
+ /// permissions/ -- can't check these because PauserRegistry has no proxy, and
+ /// PermissionController proxy didn't exist before this deploy
+
+ /// pods/
+
+ assertion(
+ Env.beacon.eigenPod().implementation(),
+ address(Env.impl.eigenPod()),
+ "eigenPod impl failed"
+ );
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.eigenPodManager())),
+ address(Env.impl.eigenPodManager()),
+ "eigenPodManager impl failed"
+ );
+
+ /// strategies/
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.eigenStrategy())),
+ address(Env.impl.eigenStrategy()),
+ "eigenStrategy impl failed"
+ );
+
+ assertion(
+ Env.beacon.strategyBase().implementation(),
+ address(Env.impl.strategyBase()),
+ "strategyBase impl failed"
+ );
+
+ uint count = Env.instance.strategyBaseTVLLimits_Count();
+ for (uint i = 0; i < count; i++) {
+ assertion(
+ _getProxyImpl(address(Env.instance.strategyBaseTVLLimits(i))),
+ address(Env.impl.strategyBaseTVLLimits()),
+ "strategyBaseTVLLimits impl failed"
+ );
+ }
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.strategyFactory())),
+ address(Env.impl.strategyFactory()),
+ "strategyFactory impl failed"
+ );
+ }
+
+ /// @dev Ensure each deployed TUP/beacon is owned by the proxyAdmin/executorMultisig
+ function _validateProxyAdmins() internal view {
+ address pa = Env.proxyAdmin();
+
+ assertTrue(
+ _getProxyAdmin(address(Env.proxy.allocationManager())) == pa,
+ "allocationManager proxyAdmin incorrect"
+ );
+
+ assertTrue(
+ _getProxyAdmin(address(Env.proxy.avsDirectory())) == pa,
+ "avsDirectory proxyAdmin incorrect"
+ );
+
+ assertTrue(
+ _getProxyAdmin(address(Env.proxy.delegationManager())) == pa,
+ "delegationManager proxyAdmin incorrect"
+ );
+
+ assertTrue(
+ _getProxyAdmin(address(Env.proxy.rewardsCoordinator())) == pa,
+ "rewardsCoordinator proxyAdmin incorrect"
+ );
+
+ assertTrue(
+ _getProxyAdmin(address(Env.proxy.strategyManager())) == pa,
+ "strategyManager proxyAdmin incorrect"
+ );
+
+ /// permissions/ -- can't check these because PauserRegistry has no proxy, and
+ /// PermissionController proxy didn't exist before this deploy
+
+ /// pods/
+
+ assertTrue(
+ Env.beacon.eigenPod().owner() == Env.executorMultisig(),
+ "eigenPod beacon owner incorrect"
+ );
+
+ assertTrue(
+ _getProxyAdmin(address(Env.proxy.eigenPodManager())) == pa,
+ "eigenPodManager proxyAdmin incorrect"
+ );
+
+ /// strategies/
+
+ assertTrue(
+ _getProxyAdmin(address(Env.proxy.eigenStrategy())) == pa,
+ "eigenStrategy proxyAdmin incorrect"
+ );
+
+ assertTrue(
+ Env.beacon.strategyBase().owner() == Env.executorMultisig(),
+ "strategyBase beacon owner incorrect"
+ );
+
+ uint count = Env.instance.strategyBaseTVLLimits_Count();
+ for (uint i = 0; i < count; i++) {
+ assertTrue(
+ _getProxyAdmin(address(Env.instance.strategyBaseTVLLimits(i))) == pa,
+ "strategyBaseTVLLimits proxyAdmin incorrect"
+ );
+ }
+
+ assertTrue(
+ _getProxyAdmin(address(Env.proxy.strategyFactory())) == pa,
+ "strategyFactory proxyAdmin incorrect"
+ );
+ }
+
+ /// @dev Validate the immutables set in the new implementation constructors
+ function _validateImplConstructors() internal view {
+ {
+ /// permissions/
+
+ PauserRegistry registry = Env.impl.pauserRegistry();
+ assertTrue(registry.isPauser(Env.pauserMultisig()), "pauser multisig should be pauser");
+ assertTrue(registry.isPauser(Env.opsMultisig()), "ops multisig should be pauser");
+ assertTrue(registry.isPauser(Env.executorMultisig()), "executor multisig should be pauser");
+ assertTrue(registry.unpauser() == Env.executorMultisig(), "executor multisig should be unpauser");
+
+ /// PermissionController has no initial storage
+ }
+
+ {
+ /// core/
+
+ AllocationManager allocationManager = Env.impl.allocationManager();
+ assertTrue(allocationManager.delegation() == Env.proxy.delegationManager(), "alm.dm invalid");
+ assertTrue(allocationManager.pauserRegistry() == Env.impl.pauserRegistry(), "alm.pR invalid");
+ assertTrue(allocationManager.permissionController() == Env.proxy.permissionController(), "alm.pc invalid");
+ assertTrue(allocationManager.DEALLOCATION_DELAY() == Env.MIN_WITHDRAWAL_DELAY(), "alm.deallocDelay invalid");
+ assertTrue(allocationManager.ALLOCATION_CONFIGURATION_DELAY() == Env.ALLOCATION_CONFIGURATION_DELAY(), "alm.configDelay invalid");
+
+ AVSDirectory avsDirectory = Env.impl.avsDirectory();
+ assertTrue(avsDirectory.delegation() == Env.proxy.delegationManager(), "avsD.dm invalid");
+ assertTrue(avsDirectory.pauserRegistry() == Env.impl.pauserRegistry(), "avsD.pR invalid");
+
+ DelegationManager delegation = Env.impl.delegationManager();
+ assertTrue(delegation.strategyManager() == Env.proxy.strategyManager(), "dm.sm invalid");
+ assertTrue(delegation.eigenPodManager() == Env.proxy.eigenPodManager(), "dm.epm invalid");
+ assertTrue(delegation.allocationManager() == Env.proxy.allocationManager(), "dm.alm invalid");
+ assertTrue(delegation.pauserRegistry() == Env.impl.pauserRegistry(), "dm.pR invalid");
+ assertTrue(delegation.permissionController() == Env.proxy.permissionController(), "dm.pc invalid");
+ assertTrue(delegation.minWithdrawalDelayBlocks() == Env.MIN_WITHDRAWAL_DELAY(), "dm.withdrawalDelay invalid");
+
+ RewardsCoordinator rewards = Env.impl.rewardsCoordinator();
+ assertTrue(rewards.delegationManager() == Env.proxy.delegationManager(), "rc.dm invalid");
+ assertTrue(rewards.strategyManager() == Env.proxy.strategyManager(), "rc.sm invalid");
+ assertTrue(rewards.allocationManager() == Env.proxy.allocationManager(), "rc.alm invalid");
+ assertTrue(rewards.pauserRegistry() == Env.impl.pauserRegistry(), "rc.pR invalid");
+ assertTrue(rewards.permissionController() == Env.proxy.permissionController(), "rc.pc invalid");
+ assertTrue(rewards.CALCULATION_INTERVAL_SECONDS() == Env.CALCULATION_INTERVAL_SECONDS(), "rc.calcInterval invalid");
+ assertTrue(rewards.MAX_REWARDS_DURATION() == Env.MAX_REWARDS_DURATION(), "rc.rewardsDuration invalid");
+ assertTrue(rewards.MAX_RETROACTIVE_LENGTH() == Env.MAX_RETROACTIVE_LENGTH(), "rc.retroLength invalid");
+ assertTrue(rewards.MAX_FUTURE_LENGTH() == Env.MAX_FUTURE_LENGTH(), "rc.futureLength invalid");
+ assertTrue(rewards.GENESIS_REWARDS_TIMESTAMP() == Env.GENESIS_REWARDS_TIMESTAMP(), "rc.genesis invalid");
+
+ StrategyManager strategyManager = Env.impl.strategyManager();
+ assertTrue(strategyManager.delegation() == Env.proxy.delegationManager(), "sm.dm invalid");
+ assertTrue(strategyManager.pauserRegistry() == Env.impl.pauserRegistry(), "sm.pR invalid");
+ }
+
+ {
+ /// pods/
+ EigenPod eigenPod = Env.impl.eigenPod();
+ assertTrue(eigenPod.ethPOS() == Env.ethPOS(), "ep.ethPOS invalid");
+ assertTrue(eigenPod.eigenPodManager() == Env.proxy.eigenPodManager(), "ep.epm invalid");
+ assertTrue(eigenPod.GENESIS_TIME() == Env.EIGENPOD_GENESIS_TIME(), "ep.genesis invalid");
+
+ EigenPodManager eigenPodManager = Env.impl.eigenPodManager();
+ assertTrue(eigenPodManager.ethPOS() == Env.ethPOS(), "epm.ethPOS invalid");
+ assertTrue(eigenPodManager.eigenPodBeacon() == Env.beacon.eigenPod(), "epm.epBeacon invalid");
+ assertTrue(eigenPodManager.delegationManager() == Env.proxy.delegationManager(), "epm.dm invalid");
+ assertTrue(eigenPodManager.pauserRegistry() == Env.impl.pauserRegistry(), "epm.pR invalid");
+ }
+
+ {
+ /// strategies/
+ EigenStrategy eigenStrategy = Env.impl.eigenStrategy();
+ assertTrue(eigenStrategy.strategyManager() == Env.proxy.strategyManager(), "eigStrat.sm invalid");
+ assertTrue(eigenStrategy.pauserRegistry() == Env.impl.pauserRegistry(), "eigStrat.pR invalid");
+
+ StrategyBase strategyBase = Env.impl.strategyBase();
+ assertTrue(strategyBase.strategyManager() == Env.proxy.strategyManager(), "stratBase.sm invalid");
+ assertTrue(strategyBase.pauserRegistry() == Env.impl.pauserRegistry(), "stratBase.pR invalid");
+
+ StrategyBaseTVLLimits strategyBaseTVLLimits = Env.impl.strategyBaseTVLLimits();
+ assertTrue(strategyBaseTVLLimits.strategyManager() == Env.proxy.strategyManager(), "stratBaseTVL.sm invalid");
+ assertTrue(strategyBaseTVLLimits.pauserRegistry() == Env.impl.pauserRegistry(), "stratBaseTVL.pR invalid");
+
+ StrategyFactory strategyFactory = Env.impl.strategyFactory();
+ assertTrue(strategyFactory.strategyManager() == Env.proxy.strategyManager(), "sFact.sm invalid");
+ assertTrue(strategyFactory.pauserRegistry() == Env.impl.pauserRegistry(), "sFact.pR invalid");
+ }
+ }
+
+ /// @dev Call initialize on all deployed implementations to ensure initializers are disabled
+ function _validateImplsInitialized() internal {
+ bytes memory errInit = "Initializable: contract is already initialized";
+
+ /// permissions/
+ // PermissionController is initializable, but does not expose the `initialize` method
+
+ {
+ /// core/
+
+ AllocationManager allocationManager = Env.impl.allocationManager();
+ vm.expectRevert(errInit);
+ allocationManager.initialize(address(0), 0);
+
+ AVSDirectory avsDirectory = Env.impl.avsDirectory();
+ vm.expectRevert(errInit);
+ avsDirectory.initialize(address(0), 0);
+
+ DelegationManager delegation = Env.impl.delegationManager();
+ vm.expectRevert(errInit);
+ delegation.initialize(address(0), 0);
+
+ RewardsCoordinator rewards = Env.impl.rewardsCoordinator();
+ vm.expectRevert(errInit);
+ rewards.initialize(address(0), 0, address(0), 0, 0);
+
+ StrategyManager strategyManager = Env.impl.strategyManager();
+ vm.expectRevert(errInit);
+ strategyManager.initialize(address(0), address(0), 0);
+ }
+
+ {
+ /// pods/
+ EigenPod eigenPod = Env.impl.eigenPod();
+ vm.expectRevert(errInit);
+ eigenPod.initialize(address(0));
+
+ EigenPodManager eigenPodManager = Env.impl.eigenPodManager();
+ vm.expectRevert(errInit);
+ eigenPodManager.initialize(address(0), 0);
+ }
+
+ {
+ /// strategies/
+ EigenStrategy eigenStrategy = Env.impl.eigenStrategy();
+ vm.expectRevert(errInit);
+ eigenStrategy.initialize(IEigen(address(0)), IBackingEigen(address(0)));
+
+ StrategyBase strategyBase = Env.impl.strategyBase();
+ vm.expectRevert(errInit);
+ strategyBase.initialize(IERC20(address(0)));
+
+ StrategyBaseTVLLimits strategyBaseTVLLimits = Env.impl.strategyBaseTVLLimits();
+ vm.expectRevert(errInit);
+ strategyBaseTVLLimits.initialize(0, 0, IERC20(address(0)));
+
+ StrategyFactory strategyFactory = Env.impl.strategyFactory();
+ vm.expectRevert(errInit);
+ strategyFactory.initialize(address(0), 0, UpgradeableBeacon(address(0)));
+ }
+ }
+
+ /// @dev Iterate over StrategyBaseTVLLimits instances and validate that each is
+ /// whitelisted for deposit
+ function _validateStrategiesAreWhitelisted() internal view {
+ uint count = Env.instance.strategyBaseTVLLimits_Count();
+ for (uint i = 0; i < count; i++) {
+ StrategyBaseTVLLimits strategy = Env.instance.strategyBaseTVLLimits(i);
+
+ // emit log_named_uint("strategy", i);
+ // IERC20Metadata underlying = IERC20Metadata(address(strategy.underlyingToken()));
+ // emit log_named_string("- name", underlying.name());
+ // emit log_named_string("- symbol", underlying.symbol());
+ // emit log_named_uint("- totalShares", strategy.totalShares());
+
+ bool isWhitelisted = Env.proxy.strategyManager().strategyIsWhitelistedForDeposit(strategy);
+ // emit log_named_string("- is whitelisted", isWhitelisted ? "true" : "false");
+ assertTrue(isWhitelisted, "not whitelisted!!");
+ }
+ }
+
+ /// @dev Query and return `proxyAdmin.getProxyImplementation(proxy)`
+ function _getProxyImpl(address proxy) internal view returns (address) {
+ return ProxyAdmin(Env.proxyAdmin()).getProxyImplementation(ITransparentUpgradeableProxy(proxy));
+ }
+
+ /// @dev Query and return `proxyAdmin.getProxyAdmin(proxy)`
+ function _getProxyAdmin(address proxy) internal view returns (address) {
+ return ProxyAdmin(Env.proxyAdmin()).getProxyAdmin(ITransparentUpgradeableProxy(proxy));
+ }
+
+ function _assertMatch(address a, address b, string memory err) private pure {
+ assertEq(a, b, err);
+ }
+
+ function _assertNotMatch(address a, address b, string memory err) private pure {
+ assertNotEq(a, b, err);
+ }
+}
diff --git a/script/releases/v1.0.2-slashing-consolidated/2-queueUpgradeAndUnpause.s.sol b/script/releases/v1.0.2-slashing-consolidated/2-queueUpgradeAndUnpause.s.sol
new file mode 100644
index 0000000000..6d8915d97d
--- /dev/null
+++ b/script/releases/v1.0.2-slashing-consolidated/2-queueUpgradeAndUnpause.s.sol
@@ -0,0 +1,156 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.12;
+
+import {Deploy} from "./1-deployContracts.s.sol";
+import "../Env.sol";
+
+import {MultisigBuilder} from "zeus-templates/templates/MultisigBuilder.sol";
+import "zeus-templates/utils/Encode.sol";
+
+import {TimelockController} from "@openzeppelin/contracts/governance/TimelockController.sol";
+
+/**
+ * Purpose:
+ * * enqueue a multisig transaction which;
+ * - upgrades all the relevant contracts, and
+ * - unpauses the system.
+ * This should be run via the protocol council multisig.
+ */
+contract QueueAndUnpause is MultisigBuilder, Deploy {
+ using Env for *;
+ using Encode for *;
+
+ function _runAsMultisig() prank(Env.opsMultisig()) internal virtual override {
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+
+ TimelockController timelock = Env.timelockController();
+ timelock.schedule({
+ target: Env.executorMultisig(),
+ value: 0,
+ data: calldata_to_executor,
+ predecessor: 0,
+ salt: 0,
+ delay: timelock.getMinDelay()
+ });
+ }
+
+ /// @dev Get the calldata to be sent from the timelock to the executor
+ function _getCalldataToExecutor() internal returns (bytes memory) {
+ MultisigCall[] storage executorCalls = Encode.newMultisigCalls()
+ /// core/
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.avsDirectory()),
+ impl: address(Env.impl.avsDirectory())
+ })
+ })
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.delegationManager()),
+ impl: address(Env.impl.delegationManager())
+ })
+ })
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.rewardsCoordinator()),
+ impl: address(Env.impl.rewardsCoordinator())
+ })
+ })
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.strategyManager()),
+ impl: address(Env.impl.strategyManager())
+ })
+ })
+ /// pods/
+ .append({
+ to: address(Env.beacon.eigenPod()),
+ data: Encode.upgradeableBeacon.upgradeTo({
+ newImpl: address(Env.impl.eigenPod())
+ })
+ })
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.eigenPodManager()),
+ impl: address(Env.impl.eigenPodManager())
+ })
+ })
+ /// strategies/
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.eigenStrategy()),
+ impl: address(Env.impl.eigenStrategy())
+ })
+ })
+ .append({
+ to: address(Env.beacon.strategyBase()),
+ data: Encode.upgradeableBeacon.upgradeTo({
+ newImpl: address(Env.impl.strategyBase())
+ })
+ })
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.strategyFactory()),
+ impl: address(Env.impl.strategyFactory())
+ })
+ });
+
+ /// Add call to upgrade each pre-longtail strategy instance
+ uint count = Env.instance.strategyBaseTVLLimits_Count();
+ for (uint i = 0; i < count; i++) {
+ address proxyInstance = address(Env.instance.strategyBaseTVLLimits(i));
+
+ executorCalls.append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: proxyInstance,
+ impl: address(Env.impl.strategyBaseTVLLimits())
+ })
+ });
+ }
+
+ // /// Finally, add a call unpausing the EigenPodManager
+ // /// We will end up pausing it in step 3, so the unpause will
+ // /// go through as part of execution (step 5)
+ executorCalls.append({
+ to: address(Env.proxy.eigenPodManager()),
+ data: abi.encodeCall(Pausable.unpause, 0)
+ });
+
+ return Encode.gnosisSafe.execTransaction({
+ from: address(Env.timelockController()),
+ to: Env.multiSendCallOnly(),
+ op: Encode.Operation.DelegateCall,
+ data: Encode.multiSend(executorCalls)
+ });
+ }
+
+ function testScript() public virtual override {
+ runAsEOA();
+
+ TimelockController timelock = Env.timelockController();
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+ bytes32 txHash = timelock.hashOperation({
+ target: Env.executorMultisig(),
+ value: 0,
+ data: calldata_to_executor,
+ predecessor: 0,
+ salt: 0
+ });
+
+ // Check that the upgrade does not exist in the timelock
+ assertFalse(timelock.isOperationPending(txHash), "Transaction should NOT be queued.");
+
+ execute();
+
+ // Check that the upgrade has been added to the timelock
+ assertTrue(timelock.isOperationPending(txHash), "Transaction should be queued.");
+ }
+}
diff --git a/script/releases/v1.0.2-slashing-consolidated/3-pause.s.sol b/script/releases/v1.0.2-slashing-consolidated/3-pause.s.sol
new file mode 100644
index 0000000000..030949d05d
--- /dev/null
+++ b/script/releases/v1.0.2-slashing-consolidated/3-pause.s.sol
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.12;
+
+import "../Env.sol";
+
+import {MultisigBuilder} from "zeus-templates/templates/MultisigBuilder.sol";
+
+/**
+ * Purpose: Enqueue a transaction which immediately sets `EigenPodManager.PAUSED_START_CHECKPOINT=true`
+ */
+contract Pause is MultisigBuilder, EigenPodPausingConstants {
+ using Env for *;
+
+ function _runAsMultisig() prank(Env.pauserMultisig()) internal virtual override {
+ uint mask = 1 << PAUSED_START_CHECKPOINT;
+
+ Env.proxy.eigenPodManager().pause(mask);
+ }
+
+ function testScript() public virtual {
+ execute();
+
+ assertTrue(Env.proxy.eigenPodManager().paused(PAUSED_START_CHECKPOINT), "Not paused!");
+
+ // Create a new pod and try to start a checkpoint
+ EigenPod pod = EigenPod(payable(Env.proxy.eigenPodManager().createPod()));
+
+ // At this point in the upgrade process, we're not using error types yet
+ vm.expectRevert("EigenPod.onlyWhenNotPaused: index is paused in EigenPodManager");
+ pod.startCheckpoint(false);
+ }
+}
diff --git a/script/releases/v1.0.2-slashing-consolidated/4-podCleanup.sh b/script/releases/v1.0.2-slashing-consolidated/4-podCleanup.sh
new file mode 100644
index 0000000000..f467ceb02b
--- /dev/null
+++ b/script/releases/v1.0.2-slashing-consolidated/4-podCleanup.sh
@@ -0,0 +1 @@
+# TODO(justin): run a binary which completes all checkpoints on the network.
\ No newline at end of file
diff --git a/script/releases/v1.0.2-slashing-consolidated/5-executeUpgradeAndUnpause.s.sol b/script/releases/v1.0.2-slashing-consolidated/5-executeUpgradeAndUnpause.s.sol
new file mode 100644
index 0000000000..f237c41a1e
--- /dev/null
+++ b/script/releases/v1.0.2-slashing-consolidated/5-executeUpgradeAndUnpause.s.sol
@@ -0,0 +1,267 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.12;
+
+import "../Env.sol";
+import {QueueAndUnpause} from "./2-queueUpgradeAndUnpause.s.sol";
+import {Pause} from "./3-pause.s.sol";
+
+import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
+import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
+
+contract Execute is QueueAndUnpause, Pause {
+ using Env for *;
+
+ function _runAsMultisig() prank(Env.protocolCouncilMultisig()) internal override(Pause, QueueAndUnpause) {
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+
+ TimelockController timelock = Env.timelockController();
+ timelock.execute({
+ target: Env.executorMultisig(),
+ value: 0,
+ payload: calldata_to_executor,
+ predecessor: 0,
+ salt: 0
+ });
+ }
+
+ function testScript() public virtual override(Pause, QueueAndUnpause) {
+ runAsEOA();
+
+ TimelockController timelock = Env.timelockController();
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+ bytes32 txHash = timelock.hashOperation({
+ target: Env.executorMultisig(),
+ value: 0,
+ data: calldata_to_executor,
+ predecessor: 0,
+ salt: 0
+ });
+
+ assertFalse(timelock.isOperationPending(txHash), "Transaction should NOT be queued.");
+
+ // 1- run queueing logic
+ QueueAndUnpause._runAsMultisig();
+ _unsafeResetHasPranked(); // reset hasPranked so we can use it again
+
+ assertTrue(timelock.isOperationPending(txHash), "Transaction should be queued.");
+ assertFalse(timelock.isOperationReady(txHash), "Transaction should NOT be ready for execution.");
+ assertFalse(timelock.isOperationDone(txHash), "Transaction should NOT be complete.");
+
+ // 2- run pausing logic
+ Pause._runAsMultisig();
+ _unsafeResetHasPranked(); // reset hasPranked so we can use it again
+
+ assertTrue(Env.proxy.eigenPodManager().paused(PAUSED_START_CHECKPOINT), "EPM is not paused!");
+
+ // 2- warp past delay
+ vm.warp(block.timestamp + timelock.getMinDelay()); // 1 tick after ETA
+ assertEq(timelock.isOperationReady(txHash), true, "Transaction should be executable.");
+
+ // 3- execute
+ execute();
+
+ assertTrue(timelock.isOperationDone(txHash), "Transaction should be complete.");
+
+ _validateNewImplAddresses({ areMatching: true });
+ _validateStrategiesAreWhitelisted();
+ _validateProxyAdmins();
+ _validateProxyConstructors();
+ _validateProxiesInitialized();
+ }
+
+ function _validateNewProxyImplsMatch() internal view {
+ ProxyAdmin pa = ProxyAdmin(Env.proxyAdmin());
+
+ assertTrue(
+ pa.getProxyImplementation(ITransparentUpgradeableProxy(address(Env.proxy.allocationManager()))) ==
+ address(Env.impl.allocationManager()),
+ "allocationManager impl failed"
+ );
+
+ assertTrue(
+ pa.getProxyImplementation(ITransparentUpgradeableProxy(address(Env.proxy.permissionController()))) ==
+ address(Env.impl.permissionController()),
+ "permissionController impl failed"
+ );
+ }
+
+ /// @dev Mirrors the checks done in 1-deployContracts, but now we check each contract's
+ /// proxy, as the upgrade should mean that each proxy can see these methods/immutables
+ function _validateProxyConstructors() internal view {
+ {
+ /// permissions/
+
+ // exception: PauserRegistry doesn't have a proxy!
+ PauserRegistry registry = Env.impl.pauserRegistry();
+ assertTrue(registry.isPauser(Env.pauserMultisig()), "pauser multisig should be pauser");
+ assertTrue(registry.isPauser(Env.opsMultisig()), "ops multisig should be pauser");
+ assertTrue(registry.isPauser(Env.executorMultisig()), "executor multisig should be pauser");
+ assertTrue(registry.unpauser() == Env.executorMultisig(), "executor multisig should be unpauser");
+
+ /// PermissionController has no initial storage
+ }
+
+ {
+ /// core/
+
+ AllocationManager allocationManager = Env.proxy.allocationManager();
+ assertTrue(allocationManager.delegation() == Env.proxy.delegationManager(), "alm.dm invalid");
+ assertTrue(allocationManager.pauserRegistry() == Env.impl.pauserRegistry(), "alm.pR invalid");
+ assertTrue(allocationManager.permissionController() == Env.proxy.permissionController(), "alm.pc invalid");
+ assertTrue(allocationManager.DEALLOCATION_DELAY() == Env.MIN_WITHDRAWAL_DELAY(), "alm.deallocDelay invalid");
+ assertTrue(allocationManager.ALLOCATION_CONFIGURATION_DELAY() == Env.ALLOCATION_CONFIGURATION_DELAY(), "alm.configDelay invalid");
+
+ AVSDirectory avsDirectory = Env.proxy.avsDirectory();
+ assertTrue(avsDirectory.delegation() == Env.proxy.delegationManager(), "avsD.dm invalid");
+ assertTrue(avsDirectory.pauserRegistry() == Env.impl.pauserRegistry(), "avsD.pR invalid");
+
+ DelegationManager delegation = Env.proxy.delegationManager();
+ assertTrue(delegation.strategyManager() == Env.proxy.strategyManager(), "dm.sm invalid");
+ assertTrue(delegation.eigenPodManager() == Env.proxy.eigenPodManager(), "dm.epm invalid");
+ assertTrue(delegation.allocationManager() == Env.proxy.allocationManager(), "dm.alm invalid");
+ assertTrue(delegation.pauserRegistry() == Env.impl.pauserRegistry(), "dm.pR invalid");
+ assertTrue(delegation.permissionController() == Env.proxy.permissionController(), "dm.pc invalid");
+ assertTrue(delegation.minWithdrawalDelayBlocks() == Env.MIN_WITHDRAWAL_DELAY(), "dm.withdrawalDelay invalid");
+
+ RewardsCoordinator rewards = Env.proxy.rewardsCoordinator();
+ assertTrue(rewards.delegationManager() == Env.proxy.delegationManager(), "rc.dm invalid");
+ assertTrue(rewards.strategyManager() == Env.proxy.strategyManager(), "rc.sm invalid");
+ assertTrue(rewards.allocationManager() == Env.proxy.allocationManager(), "rc.alm invalid");
+ assertTrue(rewards.pauserRegistry() == Env.impl.pauserRegistry(), "rc.pR invalid");
+ assertTrue(rewards.permissionController() == Env.proxy.permissionController(), "rc.pc invalid");
+ assertTrue(rewards.CALCULATION_INTERVAL_SECONDS() == Env.CALCULATION_INTERVAL_SECONDS(), "rc.calcInterval invalid");
+ assertTrue(rewards.MAX_REWARDS_DURATION() == Env.MAX_REWARDS_DURATION(), "rc.rewardsDuration invalid");
+ assertTrue(rewards.MAX_RETROACTIVE_LENGTH() == Env.MAX_RETROACTIVE_LENGTH(), "rc.retroLength invalid");
+ assertTrue(rewards.MAX_FUTURE_LENGTH() == Env.MAX_FUTURE_LENGTH(), "rc.futureLength invalid");
+ assertTrue(rewards.GENESIS_REWARDS_TIMESTAMP() == Env.GENESIS_REWARDS_TIMESTAMP(), "rc.genesis invalid");
+
+ StrategyManager strategyManager = Env.proxy.strategyManager();
+ assertTrue(strategyManager.delegation() == Env.proxy.delegationManager(), "sm.dm invalid");
+ assertTrue(strategyManager.pauserRegistry() == Env.impl.pauserRegistry(), "sm.pR invalid");
+ }
+
+ {
+ /// pods/
+ UpgradeableBeacon eigenPodBeacon = Env.beacon.eigenPod();
+ assertTrue(eigenPodBeacon.implementation() == address(Env.impl.eigenPod()), "eigenPodBeacon.impl invalid");
+
+ EigenPodManager eigenPodManager = Env.proxy.eigenPodManager();
+ assertTrue(eigenPodManager.ethPOS() == Env.ethPOS(), "epm.ethPOS invalid");
+ assertTrue(eigenPodManager.eigenPodBeacon() == Env.beacon.eigenPod(), "epm.epBeacon invalid");
+ assertTrue(eigenPodManager.delegationManager() == Env.proxy.delegationManager(), "epm.dm invalid");
+ assertTrue(eigenPodManager.pauserRegistry() == Env.impl.pauserRegistry(), "epm.pR invalid");
+ }
+
+ {
+ /// strategies/
+ EigenStrategy eigenStrategy = Env.proxy.eigenStrategy();
+ assertTrue(eigenStrategy.strategyManager() == Env.proxy.strategyManager(), "eigStrat.sm invalid");
+ assertTrue(eigenStrategy.pauserRegistry() == Env.impl.pauserRegistry(), "eigStrat.pR invalid");
+
+ UpgradeableBeacon strategyBeacon = Env.beacon.strategyBase();
+ assertTrue(strategyBeacon.implementation() == address(Env.impl.strategyBase()), "strategyBeacon.impl invalid");
+
+ uint count = Env.instance.strategyBaseTVLLimits_Count();
+ for (uint i = 0; i < count; i++) {
+ StrategyBaseTVLLimits strategy = Env.instance.strategyBaseTVLLimits(i);
+
+ assertTrue(strategy.strategyManager() == Env.proxy.strategyManager(), "sFact.sm invalid");
+ assertTrue(strategy.pauserRegistry() == Env.impl.pauserRegistry(), "sFact.pR invalid");
+ }
+
+ StrategyFactory strategyFactory = Env.proxy.strategyFactory();
+ assertTrue(strategyFactory.strategyManager() == Env.proxy.strategyManager(), "sFact.sm invalid");
+ assertTrue(strategyFactory.pauserRegistry() == Env.impl.pauserRegistry(), "sFact.pR invalid");
+ }
+ }
+
+ /// @dev Call initialize on all proxies to ensure they are initialized
+ /// Additionally, validate initialization variables
+ function _validateProxiesInitialized() internal {
+ bytes memory errInit = "Initializable: contract is already initialized";
+
+ /// permissions/
+ // PermissionController is initializable, but does not expose the `initialize` method
+
+ {
+ /// core/
+
+ AllocationManager allocationManager = Env.proxy.allocationManager();
+ vm.expectRevert(errInit);
+ allocationManager.initialize(address(0), 0);
+ assertTrue(allocationManager.owner() == Env.executorMultisig(), "alm.owner invalid");
+ assertTrue(allocationManager.paused() == 0, "alm.paused invalid");
+
+ AVSDirectory avsDirectory = Env.proxy.avsDirectory();
+ vm.expectRevert(errInit);
+ avsDirectory.initialize(address(0), 0);
+ assertTrue(avsDirectory.owner() == Env.executorMultisig(), "avsD.owner invalid");
+ assertTrue(avsDirectory.paused() == 0, "avsD.paused invalid");
+
+ DelegationManager delegation = Env.proxy.delegationManager();
+ vm.expectRevert(errInit);
+ delegation.initialize(address(0), 0);
+ assertTrue(delegation.owner() == Env.executorMultisig(), "dm.owner invalid");
+ assertTrue(delegation.paused() == 0, "dm.paused invalid");
+
+ RewardsCoordinator rewards = Env.proxy.rewardsCoordinator();
+ vm.expectRevert(errInit);
+ rewards.initialize(address(0), 0, address(0), 0, 0);
+ assertTrue(rewards.owner() == Env.opsMultisig(), "rc.owner invalid");
+ assertTrue(rewards.paused() == Env.REWARDS_PAUSE_STATUS(), "rc.paused invalid");
+ assertTrue(rewards.rewardsUpdater() == Env.REWARDS_UPDATER(), "rc.updater invalid");
+ assertTrue(rewards.activationDelay() == Env.ACTIVATION_DELAY(), "rc.activationDelay invalid");
+ assertTrue(rewards.defaultOperatorSplitBips() == Env.DEFAULT_SPLIT_BIPS(), "rc.splitBips invalid");
+
+ StrategyManager strategyManager = Env.proxy.strategyManager();
+ vm.expectRevert(errInit);
+ strategyManager.initialize(address(0), address(0), 0);
+ assertTrue(strategyManager.owner() == Env.executorMultisig(), "sm.owner invalid");
+ assertTrue(strategyManager.paused() == 0, "sm.paused invalid");
+ assertTrue(strategyManager.strategyWhitelister() == address(Env.proxy.strategyFactory()), "sm.whitelister invalid");
+ }
+
+ {
+ /// pods/
+ // EigenPod proxies are initialized by individual users
+
+ EigenPodManager eigenPodManager = Env.proxy.eigenPodManager();
+ vm.expectRevert(errInit);
+ eigenPodManager.initialize(address(0), 0);
+ assertTrue(eigenPodManager.owner() == Env.executorMultisig(), "epm.owner invalid");
+ assertTrue(eigenPodManager.paused() == 0, "epm.paused invalid");
+ }
+
+ {
+ /// strategies/
+
+ EigenStrategy eigenStrategy = Env.proxy.eigenStrategy();
+ vm.expectRevert(errInit);
+ eigenStrategy.initialize(IEigen(address(0)), IBackingEigen(address(0)));
+ assertTrue(eigenStrategy.paused() == 0, "eigenStrat.paused invalid");
+ assertTrue(eigenStrategy.EIGEN() == Env.proxy.eigen(), "eigenStrat.EIGEN invalid");
+ assertTrue(eigenStrategy.underlyingToken() == Env.proxy.beigen(), "eigenStrat.underlying invalid");
+
+ // StrategyBase proxies are initialized when deployed by factory
+
+ uint count = Env.instance.strategyBaseTVLLimits_Count();
+ for (uint i = 0; i < count; i++) {
+ StrategyBaseTVLLimits strategy = Env.instance.strategyBaseTVLLimits(i);
+
+ emit log_named_address("strat", address(strategy));
+
+ vm.expectRevert(errInit);
+ strategy.initialize(0, 0, IERC20(address(0)));
+ assertTrue(strategy.maxPerDeposit() == type(uint).max, "stratTVLLim.maxPerDeposit invalid");
+ assertTrue(strategy.maxTotalDeposits() == type(uint).max, "stratTVLLim.maxPerDeposit invalid");
+ }
+
+ StrategyFactory strategyFactory = Env.proxy.strategyFactory();
+ vm.expectRevert(errInit);
+ strategyFactory.initialize(address(0), 0, UpgradeableBeacon(address(0)));
+ assertTrue(strategyFactory.owner() == Env.opsMultisig(), "sFact.owner invalid");
+ assertTrue(strategyFactory.paused() == 0, "sFact.paused invalid");
+ assertTrue(strategyFactory.strategyBeacon() == Env.beacon.strategyBase(), "sFact.beacon invalid");
+ }
+ }
+}
diff --git a/script/releases/v1.0.2-slashing-consolidated/cleanup/EigenPod.abi.json b/script/releases/v1.0.2-slashing-consolidated/cleanup/EigenPod.abi.json
new file mode 100644
index 0000000000..eea17671d4
--- /dev/null
+++ b/script/releases/v1.0.2-slashing-consolidated/cleanup/EigenPod.abi.json
@@ -0,0 +1 @@
+[{"type":"constructor","inputs":[{"name":"_ethPOS","type":"address","internalType":"contract IETHPOSDeposit"},{"name":"_eigenPodManager","type":"address","internalType":"contract IEigenPodManager"},{"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":"struct IEigenPodTypes.Checkpoint","components":[{"name":"beaconBlockRoot","type":"bytes32","internalType":"bytes32"},{"name":"proofsRemaining","type":"uint24","internalType":"uint24"},{"name":"podBalanceGwei","type":"uint64","internalType":"uint64"},{"name":"balanceDeltasGwei","type":"int64","internalType":"int64"},{"name":"prevBeaconBalanceGwei","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"currentCheckpointTimestamp","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"eigenPodManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPodManager"}],"stateMutability":"view"},{"type":"function","name":"ethPOS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IETHPOSDeposit"}],"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":"contract IERC20[]"},{"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":"struct IEigenPodTypes.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":"enum IEigenPodTypes.VALIDATOR_STATUS"}]}],"stateMutability":"view"},{"type":"function","name":"validatorPubkeyToInfo","inputs":[{"name":"validatorPubkey","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IEigenPodTypes.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":"enum IEigenPodTypes.VALIDATOR_STATUS"}]}],"stateMutability":"view"},{"type":"function","name":"validatorStatus","inputs":[{"name":"validatorPubkey","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IEigenPodTypes.VALIDATOR_STATUS"}],"stateMutability":"view"},{"type":"function","name":"validatorStatus","inputs":[{"name":"pubkeyHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IEigenPodTypes.VALIDATOR_STATUS"}],"stateMutability":"view"},{"type":"function","name":"verifyCheckpointProofs","inputs":[{"name":"balanceContainerProof","type":"tuple","internalType":"struct BeaconChainProofs.BalanceContainerProof","components":[{"name":"balanceContainerRoot","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes","internalType":"bytes"}]},{"name":"proofs","type":"tuple[]","internalType":"struct BeaconChainProofs.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":"struct BeaconChainProofs.StateRootProof","components":[{"name":"beaconStateRoot","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes","internalType":"bytes"}]},{"name":"proof","type":"tuple","internalType":"struct BeaconChainProofs.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":"struct BeaconChainProofs.StateRootProof","components":[{"name":"beaconStateRoot","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes","internalType":"bytes"}]},{"name":"validatorIndices","type":"uint40[]","internalType":"uint40[]"},{"name":"validatorFieldsProofs","type":"bytes[]","internalType":"bytes[]"},{"name":"validatorFields","type":"bytes32[][]","internalType":"bytes32[][]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRestakedBeaconChainETH","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amountWei","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawableRestakedExecutionLayerGwei","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"event","name":"CheckpointCreated","inputs":[{"name":"checkpointTimestamp","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"beaconBlockRoot","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"validatorCount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckpointFinalized","inputs":[{"name":"checkpointTimestamp","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"totalShareDeltaWei","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"EigenPodStaked","inputs":[{"name":"pubkey","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"NonBeaconChainETHReceived","inputs":[{"name":"amountReceived","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ProofSubmitterUpdated","inputs":[{"name":"prevProofSubmitter","type":"address","indexed":false,"internalType":"address"},{"name":"newProofSubmitter","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RestakedBeaconChainETHWithdrawn","inputs":[{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ValidatorBalanceUpdated","inputs":[{"name":"validatorIndex","type":"uint40","indexed":false,"internalType":"uint40"},{"name":"balanceTimestamp","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"newValidatorBalanceGwei","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ValidatorCheckpointed","inputs":[{"name":"checkpointTimestamp","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"validatorIndex","type":"uint40","indexed":true,"internalType":"uint40"}],"anonymous":false},{"type":"event","name":"ValidatorRestaked","inputs":[{"name":"validatorIndex","type":"uint40","indexed":false,"internalType":"uint40"}],"anonymous":false},{"type":"event","name":"ValidatorWithdrawn","inputs":[{"name":"checkpointTimestamp","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"validatorIndex","type":"uint40","indexed":true,"internalType":"uint40"}],"anonymous":false},{"type":"error","name":"AmountMustBeMultipleOfGwei","inputs":[]},{"type":"error","name":"BeaconTimestampTooFarInPast","inputs":[]},{"type":"error","name":"CannotCheckpointTwiceInSingleBlock","inputs":[]},{"type":"error","name":"CheckpointAlreadyActive","inputs":[]},{"type":"error","name":"CredentialsAlreadyVerified","inputs":[]},{"type":"error","name":"CurrentlyPaused","inputs":[]},{"type":"error","name":"InputAddressZero","inputs":[]},{"type":"error","name":"InputArrayLengthMismatch","inputs":[]},{"type":"error","name":"InsufficientWithdrawableBalance","inputs":[]},{"type":"error","name":"InvalidEIP4788Response","inputs":[]},{"type":"error","name":"InvalidProof","inputs":[]},{"type":"error","name":"InvalidProofLength","inputs":[]},{"type":"error","name":"InvalidProofLength","inputs":[]},{"type":"error","name":"InvalidPubKeyLength","inputs":[]},{"type":"error","name":"InvalidValidatorFieldsLength","inputs":[]},{"type":"error","name":"MsgValueNot32ETH","inputs":[]},{"type":"error","name":"NoActiveCheckpoint","inputs":[]},{"type":"error","name":"NoBalanceToCheckpoint","inputs":[]},{"type":"error","name":"OnlyEigenPodManager","inputs":[]},{"type":"error","name":"OnlyEigenPodOwner","inputs":[]},{"type":"error","name":"OnlyEigenPodOwnerOrProofSubmitter","inputs":[]},{"type":"error","name":"TimestampOutOfRange","inputs":[]},{"type":"error","name":"ValidatorInactiveOnBeaconChain","inputs":[]},{"type":"error","name":"ValidatorIsExitingBeaconChain","inputs":[]},{"type":"error","name":"ValidatorNotActiveInPod","inputs":[]},{"type":"error","name":"ValidatorNotSlashedOnBeaconChain","inputs":[]},{"type":"error","name":"WithdrawalCredentialsNotForEigenPod","inputs":[]}]
\ No newline at end of file
diff --git a/script/releases/v1.0.2-slashing-consolidated/cleanup/EigenPodManager.abi.json b/script/releases/v1.0.2-slashing-consolidated/cleanup/EigenPodManager.abi.json
new file mode 100644
index 0000000000..eca82221bb
--- /dev/null
+++ b/script/releases/v1.0.2-slashing-consolidated/cleanup/EigenPodManager.abi.json
@@ -0,0 +1 @@
+[{"type":"constructor","inputs":[{"name":"_ethPOS","type":"address","internalType":"contract IETHPOSDeposit"},{"name":"_eigenPodBeacon","type":"address","internalType":"contract IBeacon"},{"name":"_strategyManager","type":"address","internalType":"contract IStrategyManager"},{"name":"_delegationManager","type":"address","internalType":"contract IDelegationManager"},{"name":"_pauserRegistry","type":"address","internalType":"contract IPauserRegistry"}],"stateMutability":"nonpayable"},{"type":"function","name":"addShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"","type":"address","internalType":"contract IERC20"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"beaconChainETHStrategy","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategy"}],"stateMutability":"view"},{"type":"function","name":"beaconChainSlashingFactor","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"createPod","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"delegationManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"view"},{"type":"function","name":"eigenPodBeacon","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IBeacon"}],"stateMutability":"view"},{"type":"function","name":"ethPOS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IETHPOSDeposit"}],"stateMutability":"view"},{"type":"function","name":"getPod","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPod"}],"stateMutability":"view"},{"type":"function","name":"hasPod","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_initPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"numPods","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"ownerToPod","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"contract IEigenPod"}],"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":"contract IPauserRegistry"}],"stateMutability":"view"},{"type":"function","name":"podOwnerDepositShares","inputs":[{"name":"podOwner","type":"address","internalType":"address"}],"outputs":[{"name":"shares","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"recordBeaconChainETHBalanceUpdate","inputs":[{"name":"podOwner","type":"address","internalType":"address"},{"name":"prevRestakedBalanceWei","type":"uint256","internalType":"uint256"},{"name":"balanceDeltaWei","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeDepositShares","inputs":[{"name":"staker","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"depositSharesToRemove","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"pubkey","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"depositDataRoot","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"stakerDepositShares","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"strategy","type":"address","internalType":"contract IStrategy"}],"outputs":[{"name":"depositShares","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"strategyManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategyManager"}],"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":"contract IStrategy"},{"name":"","type":"address","internalType":"contract IERC20"},{"name":"shares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BeaconChainETHDeposited","inputs":[{"name":"podOwner","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BeaconChainETHWithdrawalCompleted","inputs":[{"name":"podOwner","type":"address","indexed":true,"internalType":"address"},{"name":"shares","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"nonce","type":"uint96","indexed":false,"internalType":"uint96"},{"name":"delegatedAddress","type":"address","indexed":false,"internalType":"address"},{"name":"withdrawer","type":"address","indexed":false,"internalType":"address"},{"name":"withdrawalRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BeaconChainSlashingFactorDecreased","inputs":[{"name":"staker","type":"address","indexed":false,"internalType":"address"},{"name":"wadSlashed","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newBeaconChainSlashingFactor","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"NewTotalShares","inputs":[{"name":"podOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newTotalShares","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PodDeployed","inputs":[{"name":"eigenPod","type":"address","indexed":true,"internalType":"address"},{"name":"podOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PodSharesUpdated","inputs":[{"name":"podOwner","type":"address","indexed":true,"internalType":"address"},{"name":"sharesDelta","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"CurrentlyPaused","inputs":[]},{"type":"error","name":"EigenPodAlreadyExists","inputs":[]},{"type":"error","name":"InputAddressZero","inputs":[]},{"type":"error","name":"InvalidNewPausedStatus","inputs":[]},{"type":"error","name":"InvalidStrategy","inputs":[]},{"type":"error","name":"LegacyWithdrawalsNotCompleted","inputs":[]},{"type":"error","name":"OnlyDelegationManager","inputs":[]},{"type":"error","name":"OnlyEigenPod","inputs":[]},{"type":"error","name":"OnlyPauser","inputs":[]},{"type":"error","name":"OnlyUnpauser","inputs":[]},{"type":"error","name":"SharesNegative","inputs":[]},{"type":"error","name":"SharesNotMultipleOfGwei","inputs":[]}]
\ No newline at end of file
diff --git a/script/releases/v1.0.2-slashing-consolidated/cleanup/go.mod b/script/releases/v1.0.2-slashing-consolidated/cleanup/go.mod
new file mode 100644
index 0000000000..54879f94b6
--- /dev/null
+++ b/script/releases/v1.0.2-slashing-consolidated/cleanup/go.mod
@@ -0,0 +1,74 @@
+module main
+
+go 1.22.4
+
+require (
+ github.com/Layr-Labs/eigenpod-proofs-generation v0.1.0-pepe-testnet.0.20240925202841-f6492b1cc9fc
+ github.com/attestantio/go-eth2-client v0.21.11
+ github.com/ethereum/go-ethereum v1.14.9
+ github.com/jbrower95/multicall-go v0.0.0-20241012224745-7e9c19976cb5
+ github.com/samber/lo v1.47.0
+)
+
+require (
+ github.com/Microsoft/go-winio v0.6.2 // indirect
+ github.com/StackExchange/wmi v1.2.1 // indirect
+ github.com/beorn7/perks v1.0.1 // indirect
+ github.com/bits-and-blooms/bitset v1.13.0 // indirect
+ github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect
+ github.com/cespare/xxhash/v2 v2.3.0 // indirect
+ github.com/consensys/bavard v0.1.13 // indirect
+ github.com/consensys/gnark-crypto v0.12.1 // indirect
+ github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect
+ github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect
+ github.com/deckarep/golang-set/v2 v2.6.0 // indirect
+ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
+ github.com/ethereum/c-kzg-4844 v1.0.0 // indirect
+ github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 // indirect
+ github.com/fatih/color v1.16.0 // indirect
+ github.com/ferranbt/fastssz v0.1.3 // indirect
+ github.com/fsnotify/fsnotify v1.6.0 // indirect
+ github.com/go-logr/logr v1.2.4 // indirect
+ github.com/go-logr/stdr v1.2.2 // indirect
+ github.com/go-ole/go-ole v1.3.0 // indirect
+ github.com/goccy/go-yaml v1.9.2 // indirect
+ github.com/google/uuid v1.6.0 // indirect
+ github.com/gorilla/websocket v1.4.2 // indirect
+ github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
+ github.com/holiman/uint256 v1.3.1 // indirect
+ github.com/huandu/go-clone v1.6.0 // indirect
+ github.com/klauspost/cpuid/v2 v2.2.7 // indirect
+ github.com/mattn/go-colorable v0.1.13 // indirect
+ github.com/mattn/go-isatty v0.0.20 // indirect
+ github.com/minio/sha256-simd v1.0.1 // indirect
+ github.com/mitchellh/mapstructure v1.5.0 // indirect
+ github.com/mmcloughlin/addchain v0.4.0 // indirect
+ github.com/pk910/dynamic-ssz v0.0.3 // indirect
+ github.com/pkg/errors v0.9.1 // indirect
+ github.com/prometheus/client_golang v1.19.0 // indirect
+ github.com/prometheus/client_model v0.5.0 // indirect
+ github.com/prometheus/common v0.48.0 // indirect
+ github.com/prometheus/procfs v0.12.0 // indirect
+ github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e // indirect
+ github.com/r3labs/sse/v2 v2.10.0 // indirect
+ github.com/rs/zerolog v1.32.0 // indirect
+ github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect
+ github.com/supranational/blst v0.3.11 // indirect
+ github.com/tklauser/go-sysconf v0.3.12 // indirect
+ github.com/tklauser/numcpus v0.6.1 // indirect
+ go.opentelemetry.io/otel v1.16.0 // indirect
+ go.opentelemetry.io/otel/metric v1.16.0 // indirect
+ go.opentelemetry.io/otel/trace v1.16.0 // indirect
+ golang.org/x/crypto v0.23.0 // indirect
+ golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect
+ golang.org/x/net v0.24.0 // indirect
+ golang.org/x/sync v0.7.0 // indirect
+ golang.org/x/sys v0.22.0 // indirect
+ golang.org/x/text v0.16.0 // indirect
+ golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
+ google.golang.org/protobuf v1.34.2 // indirect
+ gopkg.in/Knetic/govaluate.v3 v3.0.0 // indirect
+ gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect
+ gopkg.in/yaml.v2 v2.4.0 // indirect
+ rsc.io/tmplfunc v0.0.3 // indirect
+)
diff --git a/script/releases/v1.0.2-slashing-consolidated/cleanup/go.sum b/script/releases/v1.0.2-slashing-consolidated/cleanup/go.sum
new file mode 100644
index 0000000000..f100d52de7
--- /dev/null
+++ b/script/releases/v1.0.2-slashing-consolidated/cleanup/go.sum
@@ -0,0 +1,283 @@
+github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ=
+github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
+github.com/Layr-Labs/eigenpod-proofs-generation v0.1.0-pepe-testnet.0.20240925202841-f6492b1cc9fc h1:xOvrJ2NHD7ykcikuqqvUVXZR6PNUomd05eO/vYQ2+g8=
+github.com/Layr-Labs/eigenpod-proofs-generation v0.1.0-pepe-testnet.0.20240925202841-f6492b1cc9fc/go.mod h1:T7tYN8bTdca2pkMnz9G2+ZwXYWw5gWqQUIu4KLgC/vM=
+github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
+github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
+github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
+github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
+github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI=
+github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI=
+github.com/attestantio/go-eth2-client v0.21.11 h1:0ZYP69O8rJz41055WOf3n1C1NA4jNh2iME/NuTVfgmQ=
+github.com/attestantio/go-eth2-client v0.21.11/go.mod h1:d7ZPNrMX8jLfIgML5u7QZxFo2AukLM+5m08iMaLdqb8=
+github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
+github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
+github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE=
+github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
+github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ=
+github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04=
+github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U=
+github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=
+github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk=
+github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s=
+github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
+github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I=
+github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8=
+github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4=
+github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M=
+github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE=
+github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs=
+github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA=
+github.com/cockroachdb/pebble v1.1.2/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU=
+github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30=
+github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg=
+github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo=
+github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ=
+github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ=
+github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI=
+github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M=
+github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY=
+github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
+github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
+github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I=
+github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs=
+github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI=
+github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM=
+github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4=
+github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0=
+github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
+github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA=
+github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0=
+github.com/ethereum/go-ethereum v1.14.9 h1:J7iwXDrtUyE9FUjUYbd4c9tyzwMh6dTJsKzo9i6SrwA=
+github.com/ethereum/go-ethereum v1.14.9/go.mod h1:QeW+MtTpRdBEm2pUFoonByee8zfHv7kGp0wK0odvU1I=
+github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 h1:8NfxH2iXvJ60YRB8ChToFTUzl8awsc3cJ8CbLjGIl/A=
+github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk=
+github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
+github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
+github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
+github.com/ferranbt/fastssz v0.1.3 h1:ZI+z3JH05h4kgmFXdHuR1aWYsgrg7o+Fw7/NCzM16Mo=
+github.com/ferranbt/fastssz v0.1.3/go.mod h1:0Y9TEd/9XuFlh7mskMPfXiI2Dkw4Ddg9EyXt1W7MRvE=
+github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
+github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
+github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI=
+github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww=
+github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps=
+github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY=
+github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=
+github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
+github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
+github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
+github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
+github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
+github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q=
+github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
+github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no=
+github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
+github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE=
+github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
+github.com/goccy/go-yaml v1.9.2 h1:2Njwzw+0+pjU2gb805ZC1B/uBuAs2VcZ3K+ZgHwDs7w=
+github.com/goccy/go-yaml v1.9.2/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA=
+github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
+github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
+github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
+github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
+github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
+github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
+github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
+github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk=
+github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
+github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
+github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
+github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
+github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE=
+github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0=
+github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
+github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
+github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4=
+github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc=
+github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao=
+github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA=
+github.com/holiman/uint256 v1.3.1 h1:JfTzmih28bittyHM8z360dCjIA9dbPIBlcTI6lmctQs=
+github.com/holiman/uint256 v1.3.1/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E=
+github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c=
+github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U=
+github.com/huandu/go-clone v1.6.0 h1:HMo5uvg4wgfiy5FoGOqlFLQED/VGRm2D9Pi8g1FXPGc=
+github.com/huandu/go-clone v1.6.0/go.mod h1:ReGivhG6op3GYr+UY3lS6mxjKp7MIGTknuU5TbTVaXE=
+github.com/huandu/go-clone/generic v1.6.0 h1:Wgmt/fUZ28r16F2Y3APotFD59sHk1p78K0XLdbUYN5U=
+github.com/huandu/go-clone/generic v1.6.0/go.mod h1:xgd9ZebcMsBWWcBx5mVMCoqMX24gLWr5lQicr+nVXNs=
+github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
+github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
+github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
+github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
+github.com/jbrower95/multicall-go v0.0.0-20241012224745-7e9c19976cb5 h1:MbF9mcEhOK8A1lphvcfh5Tg7Y2p4iUAtw2+yz3jUa94=
+github.com/jbrower95/multicall-go v0.0.0-20241012224745-7e9c19976cb5/go.mod h1:cl6hJrk69g0EyKPgNySQbJE1nj29t2q7Pu0as27uC04=
+github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4=
+github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
+github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM=
+github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
+github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
+github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
+github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
+github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c=
+github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
+github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y=
+github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
+github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
+github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
+github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU=
+github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
+github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
+github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
+github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
+github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
+github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A=
+github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4=
+github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY=
+github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU=
+github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU=
+github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
+github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
+github.com/pk910/dynamic-ssz v0.0.3 h1:fCWzFowq9P6SYCc7NtJMkZcIHk+r5hSVD+32zVi6Aio=
+github.com/pk910/dynamic-ssz v0.0.3/go.mod h1:b6CrLaB2X7pYA+OSEEbkgXDEcRnjLOZIxZTsMuO/Y9c=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
+github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
+github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=
+github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
+github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE=
+github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
+github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
+github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
+github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e h1:ATgOe+abbzfx9kCPeXIW4fiWyDdxlwHw07j8UGhdTd4=
+github.com/prysmaticlabs/go-bitfield v0.0.0-20240328144219-a1caa50c3a1e/go.mod h1:wmuf/mdK4VMD+jA9ThwcUKjg3a2XWM9cVfFYjDyY4j4=
+github.com/r3labs/sse/v2 v2.10.0 h1:hFEkLLFY4LDifoHdiCN/LlGBAdVJYsANaLqNYa1l/v0=
+github.com/r3labs/sse/v2 v2.10.0/go.mod h1:Igau6Whc+F17QUgML1fYe1VPZzTV6EMCnYktEmkNJ7I=
+github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
+github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
+github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
+github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA=
+github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik=
+github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
+github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
+github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0=
+github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
+github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
+github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc=
+github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU=
+github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU=
+github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
+github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA=
+github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
+github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4=
+github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw=
+github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY=
+github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc=
+github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
+github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
+github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
+github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
+github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8=
+github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U=
+github.com/umbracle/gohashtree v0.0.2-alpha.0.20230207094856-5b775a815c10 h1:CQh33pStIp/E30b7TxDlXfM0145bn2e8boI30IxAhTg=
+github.com/umbracle/gohashtree v0.0.2-alpha.0.20230207094856-5b775a815c10/go.mod h1:x/Pa0FF5Te9kdrlZKJK82YmAkvL8+f989USgz6Jiw7M=
+github.com/urfave/cli/v2 v2.27.1 h1:8xSQ6szndafKVRmfyeUMxkNUJQMjL1F2zmsZ+qHpfho=
+github.com/urfave/cli/v2 v2.27.1/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
+github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
+github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
+go.opentelemetry.io/otel v1.16.0 h1:Z7GVAX/UkAXPKsy94IU+i6thsQS4nb7LviLpnaNeW8s=
+go.opentelemetry.io/otel v1.16.0/go.mod h1:vl0h9NUa1D5s1nv3A5vZOYWn8av4K8Ml6JDeHrT/bx4=
+go.opentelemetry.io/otel/metric v1.16.0 h1:RbrpwVG1Hfv85LgnZ7+txXioPDoh6EdbZHo26Q3hqOo=
+go.opentelemetry.io/otel/metric v1.16.0/go.mod h1:QE47cpOmkwipPiefDwo2wDzwJrlfxxNYodqc4xnGCo4=
+go.opentelemetry.io/otel/trace v1.16.0 h1:8JRpaObFoW0pxuVPapkgH8UhHQj+bJW8jJsCZEu5MQs=
+go.opentelemetry.io/otel/trace v1.16.0/go.mod h1:Yt9vYq1SdNz3xdjZZK7wcXv1qv2pwLkqr2QVwea0ef0=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
+golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
+golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ=
+golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20191116160921-f9c825593386/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
+golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
+golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
+golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
+golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
+golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
+golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
+golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=
+golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
+google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
+google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
+gopkg.in/Knetic/govaluate.v3 v3.0.0 h1:18mUyIt4ZlRlFZAAfVetz4/rzlJs9yhN+U02F4u1AOc=
+gopkg.in/Knetic/govaluate.v3 v3.0.0/go.mod h1:csKLBORsPbafmSCGTEh3U7Ozmsuq8ZSIlKk1bcqph0E=
+gopkg.in/cenkalti/backoff.v1 v1.1.0 h1:Arh75ttbsvlpVA7WtVpH4u9h6Zl46xuptxqLxPiSo4Y=
+gopkg.in/cenkalti/backoff.v1 v1.1.0/go.mod h1:J6Vskwqd+OMVJl8C33mmtxTBs2gyzfv7UDAkHu8BrjI=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
+gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU=
+rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA=
diff --git a/script/releases/v1.0.2-slashing-consolidated/cleanup/script.go b/script/releases/v1.0.2-slashing-consolidated/cleanup/script.go
new file mode 100644
index 0000000000..bbc3da4da1
--- /dev/null
+++ b/script/releases/v1.0.2-slashing-consolidated/cleanup/script.go
@@ -0,0 +1,328 @@
+package main
+
+import (
+ "context"
+ _ "embed"
+ "encoding/json"
+ "fmt"
+ "math/big"
+ "os"
+ "sort"
+ "strings"
+ "time"
+
+ proofgen "github.com/Layr-Labs/eigenpod-proofs-generation/cli/core"
+ eth2client "github.com/attestantio/go-eth2-client"
+ "github.com/attestantio/go-eth2-client/api"
+ v1 "github.com/attestantio/go-eth2-client/api/v1"
+ attestantio "github.com/attestantio/go-eth2-client/http"
+ "github.com/attestantio/go-eth2-client/spec/phase0"
+ "github.com/ethereum/go-ethereum/accounts/abi"
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/ethclient"
+ multicall "github.com/jbrower95/multicall-go"
+ "github.com/samber/lo"
+)
+
+type EigenpodInfo struct {
+ Address string `json:"address"`
+ CurrentCheckpointTimestamp uint64 `json:"currentCheckpointTimestamp"`
+}
+
+type TQueryAllEigenpodsOnNetworkArgs struct {
+ Ctx context.Context
+ AllValidators []ValidatorWithIndex
+ Eth *ethclient.Client
+ EigenpodAbi abi.ABI
+ PodManagerAbi abi.ABI
+ PodManagerAddress string
+ Mc *multicall.MulticallClient
+}
+
+//go:embed EigenPod.abi.json
+var EigenPodAbi string
+
+//go:embed EigenPodManager.abi.json
+var EigenPodManagerAbi string
+
+type ValidatorWithIndex struct {
+ Validator *v1.Validator
+ Index phase0.ValidatorIndex
+}
+
+type TArgs struct {
+ Node string
+ BeaconNode string
+ Sender string
+}
+
+func main() {
+ err := runScript(TArgs{
+ Node: os.Getenv("RPC_URL"),
+ BeaconNode: os.Getenv("BEACON_URL"),
+ Sender: os.Getenv("SENDER_PK"),
+ })
+ if err != nil {
+ fmt.Printf("Error: %v\n", err)
+ os.Exit(1)
+ }
+}
+
+func panicOnError(msg string, err error) {
+ if err != nil {
+ fmt.Printf("Error: %s", msg)
+ panic(err)
+ }
+}
+
+func runScript(args TArgs) error {
+ ctx := context.Background()
+
+ if args.Sender[:2] == "0x" {
+ args.Sender = args.Sender[2:]
+ }
+ fmt.Printf("Sender: %s\n", args.Sender)
+
+ eigenpodAbi, err := abi.JSON(strings.NewReader(EigenPodAbi))
+ panicOnError("failed to load eigenpod abi", err)
+
+ podManagerAbi, err := abi.JSON(strings.NewReader(EigenPodManagerAbi))
+ panicOnError("failed to load eigenpod manager abi", err)
+
+ eth, err := ethclient.Dial(args.Node)
+ panicOnError("failed to reach eth node", err)
+
+ chainId, err := eth.ChainID(ctx)
+ panicOnError("failed to read chainId", err)
+
+ beaconClient, err := attestantio.New(ctx,
+ attestantio.WithAddress(args.BeaconNode),
+ )
+ panicOnError("failed to reach beacon node", err)
+
+ panicOnError("failed to reach ethereum clients", err)
+
+ mc, err := multicall.NewMulticallClient(ctx, eth, &multicall.TMulticallClientOptions{
+ MaxBatchSizeBytes: 8192,
+ })
+ panicOnError("error initializing mc", err)
+
+ podManagerAddress := os.Getenv("ZEUS_DEPLOYED_EigenPodManager_Proxy")
+
+ // fetch latest beacon state.
+ _validators := (func() *map[phase0.ValidatorIndex]*v1.Validator {
+ if provider, isProvider := beaconClient.(eth2client.ValidatorsProvider); isProvider {
+ validators, err := provider.Validators(ctx, &api.ValidatorsOpts{
+ State: "head",
+ Common: api.CommonOpts{
+ Timeout: 60 * time.Second,
+ },
+ })
+ panicOnError("failed to load validator set", err)
+ return &validators.Data
+ }
+ return nil
+ })()
+ if _validators == nil {
+ panic("failed to load validators")
+ }
+ validators := *_validators
+
+ fmt.Printf("Found %d validators\n", len(validators))
+
+ panicOnError("failed to load beacon state", err)
+
+ panicOnError("failed to fetch validators", err)
+ allValidators := lo.Map(lo.Keys(validators), func(idx phase0.ValidatorIndex, i int) ValidatorWithIndex {
+ return ValidatorWithIndex{
+ Validator: validators[idx],
+ Index: idx,
+ }
+ })
+
+ allEigenpods, err := queryAllEigenpodsOnNetwork(ctx, allValidators, eth, &eigenpodAbi, &podManagerAbi, podManagerAddress, mc)
+ panicOnError("queryAllEigenpodsOnNetwork", err)
+
+ enc := json.NewEncoder(os.Stdout)
+ enc.SetIndent("", " ")
+
+ fmt.Printf("Discovered %d eigenpods on the network.\n", len(allEigenpods))
+
+ pods := lo.Map(allEigenpods, func(pod string, i int) string {
+ return fmt.Sprintf("0x%s", pod)
+ })
+ sort.Strings(pods)
+ fmt.Printf("%s\n", enc.Encode(pods))
+
+ // Now for each eigenpod, we want to fetch currentCheckpointTimestamp.
+ // We'll do a multicall to get currentCheckpointTimestamp from each eigenpod.
+ checkpointTimestamps, err := fetchCurrentCheckpointTimestamps(allEigenpods, &eigenpodAbi, mc)
+ panicOnError("failed to fetch currentCheckpointTimestamps", err)
+
+ results := []EigenpodInfo{}
+
+ for i, ep := range allEigenpods {
+ if checkpointTimestamps[i] > 0 {
+ results = append(results, EigenpodInfo{
+ Address: fmt.Sprintf("0x%s", ep),
+ CurrentCheckpointTimestamp: checkpointTimestamps[i],
+ })
+ }
+ }
+
+ if len(results) == 0 {
+ fmt.Printf("No eigenpods had active checkpoints. OK.")
+ return nil
+ }
+
+ fmt.Printf("%d EigenPods had active checkpoints\n\n", len(results))
+ fmt.Printf("%s\n", enc.Encode(results))
+
+ fmt.Printf("Completing %d checkpoints....", len(results))
+ coreBeaconClient, _, err := proofgen.NewBeaconClient(args.BeaconNode, true /* verbose */)
+ panicOnError("failed to instantiate beaconClient", err)
+
+ for i := 0; i < len(results); i++ {
+ fmt.Printf("Completing [%d/%d]...", i+1, len(results))
+ fmt.Printf("NOTE: this is expensive, and may take several minutes.")
+ completeCheckpointForEigenpod(ctx, results[i].Address, eth, chainId, coreBeaconClient, args.Sender)
+ }
+
+ checkpointTimestamps, err = fetchCurrentCheckpointTimestamps(allEigenpods, &eigenpodAbi, mc)
+ panicOnError("failed to fetch currentCheckpointTimestamps", err)
+
+ // require that all eigenpods have a checkpoint timestamp of 0
+ for i, timestamp := range checkpointTimestamps {
+ if timestamp != 0 {
+ panic(fmt.Sprintf("expected all eigenpods to have a checkpoint timestamp of 0, but found %d on %s", timestamp, allEigenpods[i]))
+ }
+ }
+
+ return nil
+}
+
+func completeCheckpointForEigenpod(ctx context.Context, eigenpodAddress string, eth *ethclient.Client, chainId *big.Int, coreBeaconClient proofgen.BeaconClient, sender string) {
+ res, err := proofgen.GenerateCheckpointProof(ctx, eigenpodAddress, eth, chainId, coreBeaconClient, true)
+ panicOnError(fmt.Sprintf("failed to generate checkpoint proof for eigenpod:%s", eigenpodAddress), err)
+
+ txns, err := proofgen.SubmitCheckpointProof(ctx, sender, eigenpodAddress, chainId, res, eth, 80 /* ideal checkpoint proof batch size */, true /* noPrompt */, false /* noSend */, true /* verbose */)
+ panicOnError(fmt.Sprintf("failed to submit checkpoint proof for eigenpod:%s", eigenpodAddress), err)
+ if txns == nil {
+ panic("submitting checkpoint proof generated no transactions. this is a bug.")
+ }
+
+ for i, txn := range txns {
+ fmt.Printf("[%d/%d] %s\n", i+1, len(txns), txn.Hash())
+ }
+}
+
+// This is a simplified version of the queryAllEigenpodsOnNetwork function inline.
+// It uses the logic from the provided code snippet in the commands package.
+func queryAllEigenpodsOnNetwork(
+ ctx context.Context,
+ allValidators []ValidatorWithIndex,
+ eth *ethclient.Client,
+ eigenpodAbi, podManagerAbi *abi.ABI,
+ podManagerAddress string,
+ mc *multicall.MulticallClient,
+) ([]string, error) {
+ args := TQueryAllEigenpodsOnNetworkArgs{
+ Ctx: ctx,
+ AllValidators: allValidators,
+ Eth: eth,
+ EigenpodAbi: *eigenpodAbi,
+ PodManagerAbi: *podManagerAbi,
+ PodManagerAddress: podManagerAddress,
+ Mc: mc,
+ }
+ return internalQueryAllEigenpodsOnNetwork(args)
+}
+
+// internalQueryAllEigenpodsOnNetwork is lifted from the provided snippet.
+func internalQueryAllEigenpodsOnNetwork(args TQueryAllEigenpodsOnNetworkArgs) ([]string, error) {
+ // Filter out validators that are withdrawing to execution layer addresses
+ executionLayerWithdrawalCredentialValidators := lo.Filter(args.AllValidators, func(validator ValidatorWithIndex, i int) bool {
+ return validator.Validator.Validator.WithdrawalCredentials[0] == 1
+ })
+
+ interestingWithdrawalAddresses := lo.Keys(lo.Reduce(executionLayerWithdrawalCredentialValidators, func(accum map[string]int, next ValidatorWithIndex, index int) map[string]int {
+ accum[common.Bytes2Hex(next.Validator.Validator.WithdrawalCredentials[12:])] = 1
+ return accum
+ }, map[string]int{}))
+
+ fmt.Printf("Querying %d beacon-chain withdrawal addresses to see if they may be eigenpods\n", len(interestingWithdrawalAddresses))
+
+ podOwners, err := multicall.DoManyAllowFailures[common.Address](args.Mc, lo.Map(interestingWithdrawalAddresses, func(address string, index int) *multicall.MultiCallMetaData[common.Address] {
+ callMeta, err := multicall.Describe[common.Address](
+ common.HexToAddress(address),
+ args.EigenpodAbi,
+ "podOwner",
+ )
+ panicOnError("failed to form mc", err)
+ return callMeta
+ })...)
+
+ if podOwners == nil || err != nil || len(*podOwners) == 0 {
+ panicOnError("failed to fetch podOwners", err)
+ panic("loaded no pod owners")
+ }
+
+ podToPodOwner := map[string]*common.Address{}
+ addressesWithPodOwners := lo.Filter(interestingWithdrawalAddresses, func(address string, i int) bool {
+ success := (*podOwners)[i].Success
+ if success {
+ podToPodOwner[address] = (*podOwners)[i].Value
+ }
+ return success
+ })
+
+ fmt.Printf("Querying %d addresses on (EigenPodManager=%s) to see if it knows about these eigenpods\n", len(addressesWithPodOwners), args.PodManagerAddress)
+
+ eigenpodForOwner, err := multicall.DoMany(
+ args.Mc,
+ lo.Map(addressesWithPodOwners, func(address string, i int) *multicall.MultiCallMetaData[common.Address] {
+ claimedOwner := *podToPodOwner[address]
+ call, err := multicall.Describe[common.Address](
+ common.HexToAddress(args.PodManagerAddress),
+ args.PodManagerAbi,
+ "ownerToPod",
+ claimedOwner,
+ )
+ panicOnError("failed to form multicall", err)
+ return call
+ })...,
+ )
+ panicOnError("failed to query", err)
+
+ // now, see which are properly eigenpods
+ return lo.Filter(addressesWithPodOwners, func(address string, i int) bool {
+ return (*eigenpodForOwner)[i].Cmp(common.HexToAddress(addressesWithPodOwners[i])) == 0
+ }), nil
+}
+
+func fetchCurrentCheckpointTimestamps(
+ allEigenpods []string,
+ eigenpodAbi *abi.ABI,
+ mc *multicall.MulticallClient,
+) ([]uint64, error) {
+ calls := lo.Map(allEigenpods, func(eigenpod string, i int) *multicall.MultiCallMetaData[uint64] {
+ call, err := multicall.Describe[uint64](
+ common.HexToAddress(eigenpod),
+ *eigenpodAbi,
+ "currentCheckpointTimestamp",
+ )
+ panicOnError("failed to form multicall", err)
+ return call
+ })
+
+ results, err := multicall.DoMany(mc, calls...)
+ if err != nil {
+ return nil, err
+ }
+
+ out := make([]uint64, len(*results))
+ for i, r := range *results {
+ out[i] = *r
+ }
+ return out, nil
+}
diff --git a/script/releases/v1.0.2-slashing-consolidated/cleanup/start.sh b/script/releases/v1.0.2-slashing-consolidated/cleanup/start.sh
new file mode 100755
index 0000000000..e75139d25b
--- /dev/null
+++ b/script/releases/v1.0.2-slashing-consolidated/cleanup/start.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+cd script/releases/v1.0.0-slashing/cleanup
+go run script.go
\ No newline at end of file
diff --git a/script/releases/v1.0.2-slashing-consolidated/upgrade.json b/script/releases/v1.0.2-slashing-consolidated/upgrade.json
new file mode 100644
index 0000000000..1d7f57e108
--- /dev/null
+++ b/script/releases/v1.0.2-slashing-consolidated/upgrade.json
@@ -0,0 +1,32 @@
+{
+ "name": "slashing-consolidated",
+ "from": "~0.5.3",
+ "to": "1.0.2",
+ "phases": [
+ {
+ "type": "eoa",
+ "filename": "1-deployContracts.s.sol"
+ },
+ {
+ "type": "multisig",
+ "filename": "2-queueUpgradeAndUnpause.s.sol"
+ },
+ {
+ "type": "multisig",
+ "filename": "3-pause.s.sol"
+ },
+ {
+ "type": "script",
+ "filename": "cleanup/start.sh",
+ "arguments": [
+ {"type": "url", "passBy": "env", "inputType": "text", "name": "RPC_URL", "prompt": "Enter an ETH RPC URL"},
+ {"type": "url", "passBy": "env", "inputType": "text", "name": "BEACON_URL", "prompt": "Enter an ETH2 Beacon RPC URL"},
+ {"type": "privateKey", "passBy": "env", "inputType": "password", "name": "SENDER_PK", "prompt": "Enter an ETH wallet private key to complete checkpoints from:"}
+ ]
+ },
+ {
+ "type": "multisig",
+ "filename": "5-executeUpgradeAndUnpause.s.sol"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/script/releases/v1.0.2-slashing/1-eoa.s.sol b/script/releases/v1.0.2-slashing/1-eoa.s.sol
new file mode 100644
index 0000000000..6a740cf9c3
--- /dev/null
+++ b/script/releases/v1.0.2-slashing/1-eoa.s.sol
@@ -0,0 +1,87 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.12;
+
+import {EOADeployer} from "zeus-templates/templates/EOADeployer.sol";
+import "../Env.sol";
+
+import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
+import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
+import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
+import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
+
+// Just upgrade StrategyManager
+contract Deploy is EOADeployer {
+ using Env for *;
+
+ function _runAsEOA() internal override {
+ vm.startBroadcast();
+ deployImpl({
+ name: type(StrategyManager).name,
+ deployedTo: address(new StrategyManager({
+ _delegation: Env.proxy.delegationManager(),
+ _pauserRegistry: Env.impl.pauserRegistry()
+ }))
+ });
+
+ vm.stopBroadcast();
+ }
+
+ function testDeploy() public virtual {
+ _runAsEOA();
+ _validateNewImplAddresses(false);
+ _validateImplConstructors();
+ _validateImplsInitialized();
+ }
+
+
+ /// @dev Validate that the `Env.impl` addresses are updated to be distinct from what the proxy
+ /// admin reports as the current implementation address.
+ ///
+ /// Note: The upgrade script can call this with `areMatching == true` to check that these impl
+ /// addresses _are_ matches.
+ function _validateNewImplAddresses(bool areMatching) internal view {
+ function (address, address, string memory) internal pure assertion =
+ areMatching ? _assertMatch : _assertNotMatch;
+
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.strategyManager())),
+ address(Env.impl.strategyManager()),
+ "strategyManager impl failed"
+ );
+ }
+
+ /// @dev Validate the immutables set in the new implementation constructors
+ function _validateImplConstructors() internal view {
+ StrategyManager strategyManager = Env.impl.strategyManager();
+ assertTrue(strategyManager.delegation() == Env.proxy.delegationManager(), "sm.dm invalid");
+ assertTrue(strategyManager.pauserRegistry() == Env.impl.pauserRegistry(), "sm.pR invalid");
+ }
+
+ /// @dev Call initialize on all deployed implementations to ensure initializers are disabled
+ function _validateImplsInitialized() internal {
+ bytes memory errInit = "Initializable: contract is already initialized";
+
+ StrategyManager strategyManager = Env.impl.strategyManager();
+ vm.expectRevert(errInit);
+ strategyManager.initialize(address(0), address(0), 0);
+ }
+
+ /// @dev Query and return `proxyAdmin.getProxyImplementation(proxy)`
+ function _getProxyImpl(address proxy) internal view returns (address) {
+ return ProxyAdmin(Env.proxyAdmin()).getProxyImplementation(ITransparentUpgradeableProxy(proxy));
+ }
+
+ /// @dev Query and return `proxyAdmin.getProxyAdmin(proxy)`
+ function _getProxyAdmin(address proxy) internal view returns (address) {
+ return ProxyAdmin(Env.proxyAdmin()).getProxyAdmin(ITransparentUpgradeableProxy(proxy));
+ }
+
+ function _assertMatch(address a, address b, string memory err) private pure {
+ assertEq(a, b, err);
+ }
+
+ function _assertNotMatch(address a, address b, string memory err) private pure {
+ assertNotEq(a, b, err);
+ }
+}
\ No newline at end of file
diff --git a/script/releases/v1.0.2-slashing/2-multisig.s.sol b/script/releases/v1.0.2-slashing/2-multisig.s.sol
new file mode 100644
index 0000000000..7557f94b48
--- /dev/null
+++ b/script/releases/v1.0.2-slashing/2-multisig.s.sol
@@ -0,0 +1,71 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.12;
+
+import {Deploy} from "./1-eoa.s.sol";
+import "../Env.sol";
+
+import {MultisigBuilder} from "zeus-templates/templates/MultisigBuilder.sol";
+import "zeus-templates/utils/Encode.sol";
+
+import {TimelockController} from "@openzeppelin/contracts/governance/TimelockController.sol";
+
+contract Queue is MultisigBuilder, Deploy {
+ using Env for *;
+ using Encode for *;
+
+ function _runAsMultisig() prank(Env.opsMultisig()) internal virtual override {
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+
+ TimelockController timelock = Env.timelockController();
+ timelock.schedule({
+ target: Env.executorMultisig(),
+ value: 0,
+ data: calldata_to_executor,
+ predecessor: 0,
+ salt: 0,
+ delay: timelock.getMinDelay()
+ });
+ }
+
+ /// @dev Get the calldata to be sent from the timelock to the executor
+ function _getCalldataToExecutor() internal returns (bytes memory) {
+ MultisigCall[] storage executorCalls = Encode.newMultisigCalls()
+ /// core/
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.strategyManager()),
+ impl: address(Env.impl.strategyManager())
+ })
+ });
+
+ return Encode.gnosisSafe.execTransaction({
+ from: address(Env.timelockController()),
+ to: address(Env.multiSendCallOnly()),
+ op: Encode.Operation.DelegateCall,
+ data: Encode.multiSend(executorCalls)
+ });
+ }
+
+ function testScript() public virtual {
+ runAsEOA();
+
+ TimelockController timelock = Env.timelockController();
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+ bytes32 txHash = timelock.hashOperation({
+ target: Env.executorMultisig(),
+ value: 0,
+ data: calldata_to_executor,
+ predecessor: 0,
+ salt: 0
+ });
+
+ // Check that the upgrade does not exist in the timelock
+ assertFalse(timelock.isOperationPending(txHash), "Transaction should NOT be queued.");
+
+ execute();
+
+ // Check that the upgrade has been added to the timelock
+ assertTrue(timelock.isOperationPending(txHash), "Transaction should be queued.");
+ }
+}
\ No newline at end of file
diff --git a/script/releases/v1.0.2-slashing/3-execute.s.sol b/script/releases/v1.0.2-slashing/3-execute.s.sol
new file mode 100644
index 0000000000..624bc1a31c
--- /dev/null
+++ b/script/releases/v1.0.2-slashing/3-execute.s.sol
@@ -0,0 +1,64 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.12;
+
+import "../Env.sol";
+import {Queue} from "./2-multisig.s.sol";
+
+import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
+import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
+
+contract Execute is Queue {
+ using Env for *;
+
+ function _runAsMultisig() prank(Env.protocolCouncilMultisig()) internal override(Queue) {
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+
+ TimelockController timelock = Env.timelockController();
+ timelock.execute({
+ target: Env.executorMultisig(),
+ value: 0,
+ payload: calldata_to_executor,
+ predecessor: 0,
+ salt: 0
+ });
+ }
+
+ function testScript() public virtual override(Queue){
+ // 0. Deploy Impls
+ runAsEOA();
+
+ TimelockController timelock = Env.timelockController();
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+ bytes32 txHash = timelock.hashOperation({
+ target: Env.executorMultisig(),
+ value: 0,
+ data: calldata_to_executor,
+ predecessor: 0,
+ salt: 0
+ });
+ assertFalse(timelock.isOperationPending(txHash), "Transaction should NOT be queued.");
+
+ // 1. Queue Upgrade
+ Queue._runAsMultisig();
+ _unsafeResetHasPranked(); // reset hasPranked so we can use it again
+
+ // 2. Warp past delay
+ vm.warp(block.timestamp + timelock.getMinDelay()); // 1 tick after ETA
+ assertEq(timelock.isOperationReady(txHash), true, "Transaction should be executable.");
+
+ // 3- execute
+ execute();
+
+ assertTrue(timelock.isOperationDone(txHash), "Transaction should be complete.");
+
+ // 4. Validate
+ _validateNewImplAddresses(true);
+ _validateProxyConstructors();
+ }
+
+ function _validateProxyConstructors() internal view {
+ StrategyManager strategyManager = Env.proxy.strategyManager();
+ assertTrue(strategyManager.delegation() == Env.proxy.delegationManager(), "sm.dm invalid");
+ assertTrue(strategyManager.pauserRegistry() == Env.impl.pauserRegistry(), "sm.pR invalid");
+ }
+}
\ No newline at end of file
diff --git a/script/releases/v0.5.2-rewardsv2/upgrade.json b/script/releases/v1.0.2-slashing/upgrade.json
similarity index 67%
rename from script/releases/v0.5.2-rewardsv2/upgrade.json
rename to script/releases/v1.0.2-slashing/upgrade.json
index 5ffe21753e..e54c2e2253 100644
--- a/script/releases/v0.5.2-rewardsv2/upgrade.json
+++ b/script/releases/v1.0.2-slashing/upgrade.json
@@ -1,7 +1,7 @@
{
- "name": "rewards-v2-patch",
- "from": ">=0.0.0 <=0.5.1",
- "to": "0.5.2",
+ "name": "slashing-patch",
+ "from": "1.0.1",
+ "to": "1.0.2",
"phases": [
{
"type": "eoa",
@@ -13,7 +13,7 @@
},
{
"type": "multisig",
- "filename": "3-multisig.s.sol"
+ "filename": "3-execute.s.sol"
}
]
-}
+}
\ No newline at end of file
diff --git a/script/releases/v1.0.3-slashing/1-eoa.s.sol b/script/releases/v1.0.3-slashing/1-eoa.s.sol
new file mode 100644
index 0000000000..d9a5793aa3
--- /dev/null
+++ b/script/releases/v1.0.3-slashing/1-eoa.s.sol
@@ -0,0 +1,230 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.12;
+
+import {EOADeployer} from "zeus-templates/templates/EOADeployer.sol";
+import "../Env.sol";
+
+import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
+import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
+import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
+import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
+
+// Just upgrade StrategyManager
+contract Deploy is EOADeployer {
+ using Env for *;
+
+ function _runAsEOA() internal override {
+ vm.startBroadcast();
+
+ // Deploy DM
+ deployImpl({
+ name: type(DelegationManager).name,
+ deployedTo: address(new DelegationManager({
+ _strategyManager: Env.proxy.strategyManager(),
+ _eigenPodManager: Env.proxy.eigenPodManager(),
+ _allocationManager: Env.proxy.allocationManager(),
+ _pauserRegistry: Env.impl.pauserRegistry(),
+ _permissionController: Env.proxy.permissionController(),
+ _MIN_WITHDRAWAL_DELAY: Env.MIN_WITHDRAWAL_DELAY()
+ }))
+ });
+
+ // Deploy AVSD
+ deployImpl({
+ name: type(AVSDirectory).name,
+ deployedTo: address(new AVSDirectory({
+ _delegation: Env.proxy.delegationManager(),
+ _pauserRegistry: Env.impl.pauserRegistry()
+ }))
+ });
+
+ // Deploy SM
+ deployImpl({
+ name: type(StrategyManager).name,
+ deployedTo: address(new StrategyManager({
+ _delegation: Env.proxy.delegationManager(),
+ _pauserRegistry: Env.impl.pauserRegistry()
+ }))
+ });
+
+ // Deploy RC
+ deployImpl({
+ name: type(RewardsCoordinator).name,
+ deployedTo: address(new RewardsCoordinator({
+ _delegationManager: Env.proxy.delegationManager(),
+ _strategyManager: Env.proxy.strategyManager(),
+ _allocationManager: Env.proxy.allocationManager(),
+ _pauserRegistry: Env.impl.pauserRegistry(),
+ _permissionController: Env.proxy.permissionController(),
+ _CALCULATION_INTERVAL_SECONDS: Env.CALCULATION_INTERVAL_SECONDS(),
+ _MAX_REWARDS_DURATION: Env.MAX_REWARDS_DURATION(),
+ _MAX_RETROACTIVE_LENGTH: Env.MAX_RETROACTIVE_LENGTH(),
+ _MAX_FUTURE_LENGTH: Env.MAX_FUTURE_LENGTH(),
+ _GENESIS_REWARDS_TIMESTAMP: Env.GENESIS_REWARDS_TIMESTAMP()
+ }))
+ });
+
+ vm.stopBroadcast();
+ }
+
+ function testDeploy() public virtual {
+ _runAsEOA();
+ _validateDomainSeparatorNonZero();
+ _validateNewImplAddresses(false);
+ _validateImplConstructors();
+ _validateImplsInitialized();
+ _validateRCValues();
+ }
+
+ function _validateDomainSeparatorNonZero() internal view {
+ bytes32 zeroDomainSeparator = bytes32(0);
+
+ assertFalse(Env.impl.avsDirectory().domainSeparator() == zeroDomainSeparator, "avsD.domainSeparator is zero");
+ assertFalse(Env.impl.delegationManager().domainSeparator() == zeroDomainSeparator, "dm.domainSeparator is zero");
+ assertFalse(Env.impl.strategyManager().domainSeparator() == zeroDomainSeparator, "rc.domainSeparator is zero");
+ }
+
+
+ /// @dev Validate that the `Env.impl` addresses are updated to be distinct from what the proxy
+ /// admin reports as the current implementation address.
+ ///
+ /// Note: The upgrade script can call this with `areMatching == true` to check that these impl
+ /// addresses _are_ matches.
+ function _validateNewImplAddresses(bool areMatching) internal view {
+ function (address, address, string memory) internal pure assertion =
+ areMatching ? _assertMatch : _assertNotMatch;
+
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.strategyManager())),
+ address(Env.impl.strategyManager()),
+ "strategyManager impl failed"
+ );
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.delegationManager())),
+ address(Env.impl.delegationManager()),
+ "delegationManager impl failed"
+ );
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.avsDirectory())),
+ address(Env.impl.avsDirectory()),
+ "avsdirectory impl failed"
+ );
+
+ assertion(
+ _getProxyImpl(address(Env.proxy.rewardsCoordinator())),
+ address(Env.impl.rewardsCoordinator()),
+ "rewardsCoordinator impl failed"
+ );
+ }
+
+ /// @dev Validate the immutables set in the new implementation constructors
+ function _validateImplConstructors() internal view {
+ AVSDirectory avsDirectory = Env.impl.avsDirectory();
+ assertTrue(avsDirectory.delegation() == Env.proxy.delegationManager(), "avsD.dm invalid");
+ assertTrue(avsDirectory.pauserRegistry() == Env.impl.pauserRegistry(), "avsD.pR invalid");
+
+ DelegationManager delegation = Env.impl.delegationManager();
+ assertTrue(delegation.strategyManager() == Env.proxy.strategyManager(), "dm.sm invalid");
+ assertTrue(delegation.eigenPodManager() == Env.proxy.eigenPodManager(), "dm.epm invalid");
+ assertTrue(delegation.allocationManager() == Env.proxy.allocationManager(), "dm.alm invalid");
+ assertTrue(delegation.pauserRegistry() == Env.impl.pauserRegistry(), "dm.pR invalid");
+ assertTrue(delegation.permissionController() == Env.proxy.permissionController(), "dm.pc invalid");
+ assertTrue(delegation.minWithdrawalDelayBlocks() == Env.MIN_WITHDRAWAL_DELAY(), "dm.withdrawalDelay invalid");
+
+ RewardsCoordinator rewards = Env.impl.rewardsCoordinator();
+ assertTrue(rewards.delegationManager() == Env.proxy.delegationManager(), "rc.dm invalid");
+ assertTrue(rewards.strategyManager() == Env.proxy.strategyManager(), "rc.sm invalid");
+ assertTrue(rewards.allocationManager() == Env.proxy.allocationManager(), "rc.alm invalid");
+ assertTrue(rewards.pauserRegistry() == Env.impl.pauserRegistry(), "rc.pR invalid");
+ assertTrue(rewards.permissionController() == Env.proxy.permissionController(), "rc.pc invalid");
+ assertTrue(rewards.CALCULATION_INTERVAL_SECONDS() == Env.CALCULATION_INTERVAL_SECONDS(), "rc.calcInterval invalid");
+ assertTrue(rewards.MAX_REWARDS_DURATION() == Env.MAX_REWARDS_DURATION(), "rc.rewardsDuration invalid");
+ assertTrue(rewards.MAX_RETROACTIVE_LENGTH() == Env.MAX_RETROACTIVE_LENGTH(), "rc.retroLength invalid");
+ assertTrue(rewards.MAX_FUTURE_LENGTH() == Env.MAX_FUTURE_LENGTH(), "rc.futureLength invalid");
+ assertTrue(rewards.GENESIS_REWARDS_TIMESTAMP() == Env.GENESIS_REWARDS_TIMESTAMP(), "rc.genesis invalid");
+
+ StrategyManager strategyManager = Env.impl.strategyManager();
+ assertTrue(strategyManager.delegation() == Env.proxy.delegationManager(), "sm.dm invalid");
+ assertTrue(strategyManager.pauserRegistry() == Env.impl.pauserRegistry(), "sm.pR invalid");
+ }
+
+ /// @dev Call initialize on all deployed implementations to ensure initializers are disabled
+ function _validateImplsInitialized() internal {
+ bytes memory errInit = "Initializable: contract is already initialized";
+
+ AVSDirectory avsDirectory = Env.impl.avsDirectory();
+ vm.expectRevert(errInit);
+ avsDirectory.initialize(address(0), 0);
+
+ DelegationManager delegation = Env.impl.delegationManager();
+ vm.expectRevert(errInit);
+ delegation.initialize(address(0), 0);
+
+ RewardsCoordinator rewards = Env.impl.rewardsCoordinator();
+ vm.expectRevert(errInit);
+ rewards.initialize(address(0), 0, address(0), 0, 0);
+
+ StrategyManager strategyManager = Env.impl.strategyManager();
+ vm.expectRevert(errInit);
+ strategyManager.initialize(address(0), address(0), 0);
+ }
+
+ function _validateRCValues() internal view {
+
+ RewardsCoordinator rewardsCoordinatorImpl = Env.impl.rewardsCoordinator();
+ assertEq(
+ rewardsCoordinatorImpl.CALCULATION_INTERVAL_SECONDS(),
+ Env.CALCULATION_INTERVAL_SECONDS(),
+ "expected REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
+ );
+ assertEq(
+ rewardsCoordinatorImpl.CALCULATION_INTERVAL_SECONDS(),
+ 1 days,
+ "expected REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
+ );
+ assertGt(
+ rewardsCoordinatorImpl.CALCULATION_INTERVAL_SECONDS(),
+ 0,
+ "expected non-zero REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
+ );
+
+ assertEq(rewardsCoordinatorImpl.MAX_REWARDS_DURATION(), Env.MAX_REWARDS_DURATION());
+ assertGt(rewardsCoordinatorImpl.MAX_REWARDS_DURATION(), 0);
+
+ assertEq(
+ rewardsCoordinatorImpl.MAX_RETROACTIVE_LENGTH(),
+ Env.MAX_RETROACTIVE_LENGTH()
+ );
+ assertGt(rewardsCoordinatorImpl.MAX_RETROACTIVE_LENGTH(), 0);
+
+ assertEq(rewardsCoordinatorImpl.MAX_FUTURE_LENGTH(), Env.MAX_FUTURE_LENGTH());
+ assertGt(rewardsCoordinatorImpl.MAX_FUTURE_LENGTH(), 0);
+
+ assertEq(
+ rewardsCoordinatorImpl.GENESIS_REWARDS_TIMESTAMP(),
+ Env.GENESIS_REWARDS_TIMESTAMP()
+ );
+ assertGt(rewardsCoordinatorImpl.GENESIS_REWARDS_TIMESTAMP(), 0);
+ }
+
+ /// @dev Query and return `proxyAdmin.getProxyImplementation(proxy)`
+ function _getProxyImpl(address proxy) internal view returns (address) {
+ return ProxyAdmin(Env.proxyAdmin()).getProxyImplementation(ITransparentUpgradeableProxy(proxy));
+ }
+
+ /// @dev Query and return `proxyAdmin.getProxyAdmin(proxy)`
+ function _getProxyAdmin(address proxy) internal view returns (address) {
+ return ProxyAdmin(Env.proxyAdmin()).getProxyAdmin(ITransparentUpgradeableProxy(proxy));
+ }
+
+ function _assertMatch(address a, address b, string memory err) private pure {
+ assertEq(a, b, err);
+ }
+
+ function _assertNotMatch(address a, address b, string memory err) private pure {
+ assertNotEq(a, b, err);
+ }
+}
\ No newline at end of file
diff --git a/script/releases/v1.0.3-slashing/2-multisig.s.sol b/script/releases/v1.0.3-slashing/2-multisig.s.sol
new file mode 100644
index 0000000000..1604197979
--- /dev/null
+++ b/script/releases/v1.0.3-slashing/2-multisig.s.sol
@@ -0,0 +1,93 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.12;
+
+import {Deploy} from "./1-eoa.s.sol";
+import "../Env.sol";
+
+import {MultisigBuilder} from "zeus-templates/templates/MultisigBuilder.sol";
+import "zeus-templates/utils/Encode.sol";
+
+import {TimelockController} from "@openzeppelin/contracts/governance/TimelockController.sol";
+
+contract Queue is MultisigBuilder, Deploy {
+ using Env for *;
+ using Encode for *;
+
+ function _runAsMultisig() prank(Env.opsMultisig()) internal virtual override {
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+
+ TimelockController timelock = Env.timelockController();
+ timelock.schedule({
+ target: Env.executorMultisig(),
+ value: 0,
+ data: calldata_to_executor,
+ predecessor: 0,
+ salt: 0,
+ delay: timelock.getMinDelay()
+ });
+ }
+
+ /// @dev Get the calldata to be sent from the timelock to the executor
+ function _getCalldataToExecutor() internal returns (bytes memory) {
+ MultisigCall[] storage executorCalls = Encode.newMultisigCalls()
+ /// core/
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.strategyManager()),
+ impl: address(Env.impl.strategyManager())
+ })
+ })
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.avsDirectory()),
+ impl: address(Env.impl.avsDirectory())
+ })
+ })
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.delegationManager()),
+ impl: address(Env.impl.delegationManager())
+ })
+ })
+ .append({
+ to: Env.proxyAdmin(),
+ data: Encode.proxyAdmin.upgrade({
+ proxy: address(Env.proxy.rewardsCoordinator()),
+ impl: address(Env.impl.rewardsCoordinator())
+ })
+ });
+
+
+ return Encode.gnosisSafe.execTransaction({
+ from: address(Env.timelockController()),
+ to: address(Env.multiSendCallOnly()),
+ op: Encode.Operation.DelegateCall,
+ data: Encode.multiSend(executorCalls)
+ });
+ }
+
+ function testScript() public virtual {
+ runAsEOA();
+
+ TimelockController timelock = Env.timelockController();
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+ bytes32 txHash = timelock.hashOperation({
+ target: Env.executorMultisig(),
+ value: 0,
+ data: calldata_to_executor,
+ predecessor: 0,
+ salt: 0
+ });
+
+ // Check that the upgrade does not exist in the timelock
+ assertFalse(timelock.isOperationPending(txHash), "Transaction should NOT be queued.");
+
+ execute();
+
+ // Check that the upgrade has been added to the timelock
+ assertTrue(timelock.isOperationPending(txHash), "Transaction should be queued.");
+ }
+}
\ No newline at end of file
diff --git a/script/releases/v1.0.3-slashing/3-execute.s.sol b/script/releases/v1.0.3-slashing/3-execute.s.sol
new file mode 100644
index 0000000000..cb0a82a1b1
--- /dev/null
+++ b/script/releases/v1.0.3-slashing/3-execute.s.sol
@@ -0,0 +1,148 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.12;
+
+import "../Env.sol";
+import {Queue} from "./2-multisig.s.sol";
+
+import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
+import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
+
+contract Execute is Queue {
+ using Env for *;
+
+ function _runAsMultisig() prank(Env.protocolCouncilMultisig()) internal override(Queue) {
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+
+ TimelockController timelock = Env.timelockController();
+ timelock.execute({
+ target: Env.executorMultisig(),
+ value: 0,
+ payload: calldata_to_executor,
+ predecessor: 0,
+ salt: 0
+ });
+ }
+
+ function testScript() public virtual override(Queue){
+ // 0. Deploy Impls
+ runAsEOA();
+
+ TimelockController timelock = Env.timelockController();
+ bytes memory calldata_to_executor = _getCalldataToExecutor();
+ bytes32 txHash = timelock.hashOperation({
+ target: Env.executorMultisig(),
+ value: 0,
+ data: calldata_to_executor,
+ predecessor: 0,
+ salt: 0
+ });
+ assertFalse(timelock.isOperationPending(txHash), "Transaction should NOT be queued.");
+
+ // 1. Queue Upgrade
+ Queue._runAsMultisig();
+ _unsafeResetHasPranked(); // reset hasPranked so we can use it again
+
+ // 2. Warp past delay
+ vm.warp(block.timestamp + timelock.getMinDelay()); // 1 tick after ETA
+ assertEq(timelock.isOperationReady(txHash), true, "Transaction should be executable.");
+
+ // 3- execute
+ execute();
+
+ assertTrue(timelock.isOperationDone(txHash), "Transaction should be complete.");
+
+ // 4. Validate
+ _validateNewImplAddresses(true);
+ _validateProxyConstructors();
+ _validateProxyDomainSeparators();
+ }
+
+ function _validateProxyDomainSeparators() internal view {
+ bytes32 zeroDomainSeparator = bytes32(0);
+
+ assertFalse(Env.proxy.avsDirectory().domainSeparator() == zeroDomainSeparator, "avsD.domainSeparator is zero");
+ assertFalse(Env.proxy.delegationManager().domainSeparator() == zeroDomainSeparator, "dm.domainSeparator is zero");
+ assertFalse(Env.proxy.strategyManager().domainSeparator() == zeroDomainSeparator, "rc.domainSeparator is zero");
+ }
+
+ function _validateProxyConstructors() internal view {
+ AVSDirectory avsDirectory = Env.proxy.avsDirectory();
+ assertTrue(avsDirectory.delegation() == Env.proxy.delegationManager(), "avsD.dm invalid");
+ assertTrue(avsDirectory.pauserRegistry() == Env.impl.pauserRegistry(), "avsD.pR invalid");
+
+ DelegationManager delegation = Env.proxy.delegationManager();
+ assertTrue(delegation.strategyManager() == Env.proxy.strategyManager(), "dm.sm invalid");
+ assertTrue(delegation.eigenPodManager() == Env.proxy.eigenPodManager(), "dm.epm invalid");
+ assertTrue(delegation.allocationManager() == Env.proxy.allocationManager(), "dm.alm invalid");
+ assertTrue(delegation.pauserRegistry() == Env.impl.pauserRegistry(), "dm.pR invalid");
+ assertTrue(delegation.permissionController() == Env.proxy.permissionController(), "dm.pc invalid");
+ assertTrue(delegation.minWithdrawalDelayBlocks() == Env.MIN_WITHDRAWAL_DELAY(), "dm.withdrawalDelay invalid");
+
+ RewardsCoordinator rewards = Env.proxy.rewardsCoordinator();
+ assertTrue(rewards.delegationManager() == Env.proxy.delegationManager(), "rc.dm invalid");
+ assertTrue(rewards.strategyManager() == Env.proxy.strategyManager(), "rc.sm invalid");
+ assertTrue(rewards.allocationManager() == Env.proxy.allocationManager(), "rc.alm invalid");
+ assertTrue(rewards.pauserRegistry() == Env.impl.pauserRegistry(), "rc.pR invalid");
+ assertTrue(rewards.permissionController() == Env.proxy.permissionController(), "rc.pc invalid");
+ assertTrue(rewards.CALCULATION_INTERVAL_SECONDS() == Env.CALCULATION_INTERVAL_SECONDS(), "rc.calcInterval invalid");
+ assertTrue(rewards.MAX_REWARDS_DURATION() == Env.MAX_REWARDS_DURATION(), "rc.rewardsDuration invalid");
+ assertTrue(rewards.MAX_RETROACTIVE_LENGTH() == Env.MAX_RETROACTIVE_LENGTH(), "rc.retroLength invalid");
+ assertTrue(rewards.MAX_FUTURE_LENGTH() == Env.MAX_FUTURE_LENGTH(), "rc.futureLength invalid");
+ assertTrue(rewards.GENESIS_REWARDS_TIMESTAMP() == Env.GENESIS_REWARDS_TIMESTAMP(), "rc.genesis invalid");
+
+ StrategyManager strategyManager = Env.proxy.strategyManager();
+ assertTrue(strategyManager.delegation() == Env.proxy.delegationManager(), "sm.dm invalid");
+ assertTrue(strategyManager.pauserRegistry() == Env.impl.pauserRegistry(), "sm.pR invalid");
+ }
+
+ function _validateRC() internal view {
+ RewardsCoordinator rewards = Env.proxy.rewardsCoordinator();
+ assertEq(
+ rewards.defaultOperatorSplitBips(),
+ Env.DEFAULT_SPLIT_BIPS(),
+ "expected defaultOperatorSplitBips"
+ );
+
+ uint256 pausedStatusAfter = rewards.paused();
+
+ assertEq(
+ Env.REWARDS_PAUSE_STATUS(),
+ pausedStatusAfter,
+ "expected paused status to be the same before and after initialization"
+ );
+
+ assertEq(
+ rewards.CALCULATION_INTERVAL_SECONDS(),
+ Env.CALCULATION_INTERVAL_SECONDS(),
+ "expected REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
+ );
+ assertEq(
+ rewards.CALCULATION_INTERVAL_SECONDS(),
+ 1 days,
+ "expected REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
+ );
+ assertGt(
+ rewards.CALCULATION_INTERVAL_SECONDS(),
+ 0,
+ "expected non-zero REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS"
+ );
+
+ assertEq(rewards.MAX_REWARDS_DURATION(), Env.MAX_REWARDS_DURATION());
+ assertGt(rewards.MAX_REWARDS_DURATION(), 0);
+
+ assertEq(
+ rewards.MAX_RETROACTIVE_LENGTH(),
+ Env.MAX_RETROACTIVE_LENGTH()
+ );
+ assertGt(rewards.MAX_RETROACTIVE_LENGTH(), 0);
+
+ assertEq(rewards.MAX_FUTURE_LENGTH(), Env.MAX_FUTURE_LENGTH());
+ assertGt(rewards.MAX_FUTURE_LENGTH(), 0);
+
+ assertEq(
+ rewards.GENESIS_REWARDS_TIMESTAMP(),
+ Env.GENESIS_REWARDS_TIMESTAMP()
+ );
+ assertGt(rewards.GENESIS_REWARDS_TIMESTAMP(), 0);
+ }
+}
\ No newline at end of file
diff --git a/script/releases/v0.5.3-rewardsv2/upgrade.json b/script/releases/v1.0.3-slashing/upgrade.json
similarity index 63%
rename from script/releases/v0.5.3-rewardsv2/upgrade.json
rename to script/releases/v1.0.3-slashing/upgrade.json
index e067e0e7b2..69c4594871 100644
--- a/script/releases/v0.5.3-rewardsv2/upgrade.json
+++ b/script/releases/v1.0.3-slashing/upgrade.json
@@ -1,7 +1,7 @@
{
- "name": "rewards-v2-operator-split-lock-patch",
- "from": ">=0.0.0 <=0.5.2",
- "to": "0.5.3",
+ "name": "slashing-patch-RC-domainSeparator",
+ "from": "1.0.2",
+ "to": "1.0.3",
"phases": [
{
"type": "eoa",
@@ -13,7 +13,7 @@
},
{
"type": "multisig",
- "filename": "3-multisig.s.sol"
+ "filename": "3-execute.s.sol"
}
]
-}
+}
\ No newline at end of file
diff --git a/script/tasks/README.md b/script/tasks/README.md
new file mode 100644
index 0000000000..c93b8aa666
--- /dev/null
+++ b/script/tasks/README.md
@@ -0,0 +1,155 @@
+# Setup slashing locally
+
+These tasks deploy the `slashing-magnitudes` contracts and set up the sender (`address(PRIVATE_KEY)`) as an `AVS`, `Operator` and `Staker`.
+
+We then register the `Operator` to an `OperatorSet`, allocate the `Strategy` in that `OperatorSet` and perform a `slashing`.
+
+---
+
+1. Start `anvil` in one terminal
+```sh
+anvil
+```
+
+2. Run the full setup in another terminal
+```sh
+./run.sh
+```
+
+OR
+
+2. Deploy contracts in another terminal (this will save addresses to [../output/local/slashing_output.json](../output/local/slashing_output.json))
+```sh
+export RPC_URL=127.0.0.1:8545
+export PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
+export SENDER=$(cast wallet address --private-key $PRIVATE_KEY)
+
+mkdir ./script/output/local
+forge script -C src/contracts --via-ir ../deploy/local/deploy_from_scratch.slashing.s.sol \
+ --rpc-url $RPC_URL --private-key $PRIVATE_KEY --broadcast \
+ --sig "run(string memory configFile)" \
+ -- local/deploy_from_scratch.slashing.anvil.config.json
+```
+
+3. Build the task scripts
+```sh
+forge build -C script/tasks
+```
+
+4. Extract `DELEGATION_MANAGER`, `STRATEGY_MANAGER`, `STRATEGY` and `TOKEN` addresses from deployment output
+```sh
+export DELEGATION_MANAGER=$(jq -r '.addresses.delegationManager' "../output/local/slashing_output.json")
+export STRATEGY_MANAGER=$(jq -r '.addresses.strategyManager' "../output/local/slashing_output.json")
+export STRATEGY=$(jq -r '.addresses.strategy' "../output/local/slashing_output.json")
+export TOKEN=$(jq -r '.addresses.TestToken' "../output/local/slashing_output.json")
+```
+
+5. Unpause the `avsDirectory`
+```sh
+forge script ../tasks/unpause_avsDirectory.s.sol \
+ --rpc-url $RPC_URL --private-key $PRIVATE_KEY --broadcast \
+ --sig "run(string memory configFile)" \
+ -- local/slashing_output.json
+```
+
+6. Deposit into `Strategy`
+```sh
+forge script ../tasks/deposit_into_strategy.s.sol \
+ --rpc-url $RPC_URL --private-key $PRIVATE_KEY --broadcast \
+ --sig "run(string memory configFile,address strategy,address token,uint256 amount)" \
+ -- local/slashing_output.json $STRATEGY $TOKEN 1000
+```
+
+7. Register as `Operator`
+```sh
+forge script ../tasks/register_as_operator.s.sol \
+ --rpc-url $RPC_URL --private-key $PRIVATE_KEY --broadcast \
+ --sig "run(string memory configFile,address operator,string metadataURI)" \
+ -- local/slashing_output.json $SENDER "metadataURI"
+```
+
+8. Register `Operator` to `OperatorSet`
+```sh
+forge script ../tasks/register_operator_to_operatorSet.s.sol \
+ --tc RegisterOperatorToOperatorSets \
+ --rpc-url $RPC_URL --private-key $PRIVATE_KEY --broadcast \
+ --sig "run(string memory configFile)" \
+ -- local/slashing_output.json
+```
+
+9. Move the chain by **600** blocks (to move beyond `pendingDelay`)
+```
+cast rpc anvil_mine 600 --rpc-url $RPC_URL
+```
+
+10. Allocate the `OperatorSet` **(50%)**
+```sh
+forge script ../tasks/allocate_operatorSet.s.sol \
+ --rpc-url $RPC_URL --private-key $PRIVATE_KEY --broadcast \
+ --sig "run(string memory configFile,address strategy,address avs,uint32 operatorSetId,uint64 magnitude)" \
+ -- local/slashing_output.json $STRATEGY $SENDER 00000001 0500000000000000000
+```
+
+11. Slash the `OperatorSet` **(50%)** - we expect that 25% of our shares will be slashed when we withdraw them
+```sh
+forge script ../tasks/slash_operatorSet.s.sol \
+ --rpc-url $RPC_URL --private-key $PRIVATE_KEY --broadcast \
+ --sig "run(string memory configFile,address operator,uint32 operatorSetId,uint256 wadToSlash)" \
+ -- local/slashing_output.json $SENDER 00000001 0500000000000000000
+```
+
+12. Verify that the sender holds **1000** Deposited `TOKEN` shares:
+```sh
+cast call $STRATEGY_MANAGER "getDeposits(address)(address[],uint256[])" $SENDER --rpc-url $RPC_URL
+```
+
+13. Verify that the sender holds **750** Withdrawable `TOKEN` shares:
+```sh
+cast call $DELEGATION_MANAGER "getWithdrawableShares(address,address[])(uint256[])" $SENDER "[$STRATEGY]" --rpc-url $RPC_URL
+```
+
+14. Withdraw slashed shares from `DelegationManager`
+
+- Extract Nonce and available shares from $DELEGATION_MANAGER
+```sh
+export DEPOSITS=$(cast call $DELEGATION_MANAGER "getDepositedShares(address)(address[],uint256[])" $SENDER "[$STRATEGY]" --rpc-url $RPC_URL | sed -n '2p' | tr -d '[]')
+export SHARES=$(cast call $DELEGATION_MANAGER "getWithdrawableShares(address,address[])(uint256[],uint256[])" $SENDER "[$STRATEGY]" --rpc-url $RPC_URL | sed -n '1p' | tr -d '[]')
+export NONCE=$(cast call $DELEGATION_MANAGER "cumulativeWithdrawalsQueued(address)(uint256)" $SENDER --rpc-url $RPC_URL)
+```
+
+- Queue withdrawal
+```sh
+forge script ../tasks/withdraw_from_strategy.s.sol \
+ --rpc-url $RPC_URL --private-key $PRIVATE_KEY --broadcast \
+ --sig "run(string memory configFile,address strategy,address token,uint256 amount)" \
+ -- local/slashing_output.json $STRATEGY $TOKEN $DEPOSITS
+```
+
+- Record the withdrawal `START_BLOCK`
+```sh
+export WITHDRAWAL_START_BLOCK_NUMBER=$(cast block-number --rpc-url $RPC_URL)
+```
+
+- Move the chain by 5 blocks (to move beyond `MIN_WITHDRAWAL_DELAY_BLOCKS` (5))
+```sh
+cast rpc anvil_mine 5 --rpc-url $RPC_URL
+```
+
+- Complete withdrawal
+
+```sh
+forge script ../tasks/complete_withdrawal_from_strategy.s.sol \
+ --rpc-url $RPC_URL --private-key $PRIVATE_KEY --broadcast \
+ --sig "run(string memory configFile,address strategy,address token,uint256 amount,uint256 nonce,uint32 startBlock)" \
+ -- local/slashing_output.json $STRATEGY $TOKEN $SHARES $NONCE $WITHDRAWAL_START_BLOCK_NUMBER
+```
+
+15. Verify that the `SHARES` we're withdrawn back to the sender
+```sh
+cast call $TOKEN "balanceOf(address)(uint256)" $SENDER --rpc-url $RPC_URL
+```
+
+16. Verify that the sender holds 0 withdrawable `TOKEN` shares:
+```sh
+cast call $DELEGATION_MANAGER "getWithdrawableShares(address,address[])(uint256[])" $SENDER "[$STRATEGY]" --rpc-url $RPC_URL
+```
diff --git a/script/tasks/allocate_operatorSet.s.sol b/script/tasks/allocate_operatorSet.s.sol
new file mode 100644
index 0000000000..ab3d633a6e
--- /dev/null
+++ b/script/tasks/allocate_operatorSet.s.sol
@@ -0,0 +1,59 @@
+// SPDX-License-Identifier: BUSL-1.1
+pragma solidity ^0.8.27;
+
+import "../../src/contracts/core/AVSDirectory.sol";
+import "../../src/contracts/core/AllocationManager.sol";
+
+import "forge-std/Script.sol";
+import "forge-std/Test.sol";
+
+// use forge:
+// RUST_LOG=forge,foundry=trace forge script script/tasks/allocate_operatorSet.s.sol --rpc-url $RPC_URL --private-key $PRIVATE_KEY --broadcast --sig "run(string memory configFile,address strategy,address avs,uint32 operatorSetId,uint64 magnitude)" --