From 2da987a99d4685750b4e43401fd54521f9902908 Mon Sep 17 00:00:00 2001 From: Sean McGary Date: Fri, 3 May 2024 09:42:47 -0500 Subject: [PATCH] chore: cleanup script for generating bindings update readme Add setup step to readme --- .github/workflows/check-compilation.yml | 30 + .gitignore | 4 +- Makefile | 19 + README.md | 21 + go.mod | 34 + go.sum | 192 + pkg/bindings/AVSDirectory/binding.go | 1793 +++++++ pkg/bindings/AVSDirectory/tmp.abi | 501 ++ pkg/bindings/AVSDirectory/tmp.bin | 1 + pkg/bindings/AVSDirectoryStorage/binding.go | 736 +++ pkg/bindings/AVSDirectoryStorage/tmp.abi | 228 + pkg/bindings/AVSDirectoryStorage/tmp.bin | 1 + pkg/bindings/BeaconChainProofs/binding.go | 203 + pkg/bindings/BeaconChainProofs/tmp.abi | 1 + pkg/bindings/BeaconChainProofs/tmp.bin | 1 + pkg/bindings/BytesLib/binding.go | 203 + pkg/bindings/BytesLib/tmp.abi | 1 + pkg/bindings/BytesLib/tmp.bin | 1 + .../DelayedWithdrawalRouter/binding.go | 1969 ++++++++ pkg/bindings/DelayedWithdrawalRouter/tmp.abi | 614 +++ pkg/bindings/DelayedWithdrawalRouter/tmp.bin | 1 + pkg/bindings/DelegationManager/binding.go | 4352 +++++++++++++++++ pkg/bindings/DelegationManager/tmp.abi | 1747 +++++++ pkg/bindings/DelegationManager/tmp.bin | 1 + .../DelegationManagerStorage/binding.go | 3211 ++++++++++++ pkg/bindings/DelegationManagerStorage/tmp.abi | 1394 ++++++ pkg/bindings/DelegationManagerStorage/tmp.bin | 1 + pkg/bindings/EIP1271SignatureUtils/binding.go | 203 + pkg/bindings/EIP1271SignatureUtils/tmp.abi | 1 + pkg/bindings/EIP1271SignatureUtils/tmp.bin | 1 + pkg/bindings/EigenPod/binding.go | 2360 +++++++++ pkg/bindings/EigenPod/tmp.abi | 825 ++++ pkg/bindings/EigenPod/tmp.bin | 1 + pkg/bindings/EigenPodManager/binding.go | 2658 ++++++++++ pkg/bindings/EigenPodManager/tmp.abi | 757 +++ pkg/bindings/EigenPodManager/tmp.bin | 1 + .../EigenPodManagerStorage/binding.go | 2255 +++++++++ pkg/bindings/EigenPodManagerStorage/tmp.abi | 633 +++ pkg/bindings/EigenPodManagerStorage/tmp.bin | 1 + .../EigenPodPausingConstants/binding.go | 181 + pkg/bindings/EigenPodPausingConstants/tmp.abi | 1 + pkg/bindings/EigenPodPausingConstants/tmp.bin | 1 + pkg/bindings/Endian/binding.go | 203 + pkg/bindings/Endian/tmp.abi | 1 + pkg/bindings/Endian/tmp.bin | 1 + pkg/bindings/IAVSDirectory/binding.go | 643 +++ pkg/bindings/IAVSDirectory/tmp.abi | 178 + pkg/bindings/IAVSDirectory/tmp.bin | 1 + pkg/bindings/IBeaconChainOracle/binding.go | 212 + pkg/bindings/IBeaconChainOracle/tmp.abi | 21 + pkg/bindings/IBeaconChainOracle/tmp.bin | 1 + .../IDelayedWithdrawalRouter/binding.go | 902 ++++ pkg/bindings/IDelayedWithdrawalRouter/tmp.abi | 336 ++ pkg/bindings/IDelayedWithdrawalRouter/tmp.bin | 1 + pkg/bindings/IDelegationFaucet/binding.go | 352 ++ pkg/bindings/IDelegationFaucet/tmp.abi | 270 + pkg/bindings/IDelegationFaucet/tmp.bin | 1 + pkg/bindings/IDelegationManager/binding.go | 3056 ++++++++++++ pkg/bindings/IDelegationManager/tmp.abi | 1323 +++++ pkg/bindings/IDelegationManager/tmp.bin | 1 + pkg/bindings/IETHPOSDeposit/binding.go | 402 ++ pkg/bindings/IETHPOSDeposit/tmp.abi | 93 + pkg/bindings/IETHPOSDeposit/tmp.bin | 1 + pkg/bindings/IEigenPod/binding.go | 2059 ++++++++ pkg/bindings/IEigenPod/tmp.abi | 725 +++ pkg/bindings/IEigenPod/tmp.bin | 1 + pkg/bindings/IEigenPodManager/binding.go | 2224 +++++++++ pkg/bindings/IEigenPodManager/tmp.abi | 620 +++ pkg/bindings/IEigenPodManager/tmp.bin | 1 + pkg/bindings/IPausable/binding.go | 783 +++ pkg/bindings/IPausable/tmp.abi | 150 + pkg/bindings/IPausable/tmp.bin | 1 + pkg/bindings/IPauserRegistry/binding.go | 513 ++ pkg/bindings/IPauserRegistry/tmp.abi | 72 + pkg/bindings/IPauserRegistry/tmp.bin | 1 + pkg/bindings/ISignatureUtils/binding.go | 181 + pkg/bindings/ISignatureUtils/tmp.abi | 1 + pkg/bindings/ISignatureUtils/tmp.bin | 1 + pkg/bindings/ISlasher/binding.go | 1480 ++++++ pkg/bindings/ISlasher/tmp.abi | 538 ++ pkg/bindings/ISlasher/tmp.bin | 1 + pkg/bindings/ISocketUpdater/binding.go | 347 ++ pkg/bindings/ISocketUpdater/tmp.abi | 34 + pkg/bindings/ISocketUpdater/tmp.bin | 1 + pkg/bindings/IStrategy/binding.go | 503 ++ pkg/bindings/IStrategy/tmp.abi | 221 + pkg/bindings/IStrategy/tmp.bin | 1 + pkg/bindings/IStrategyManager/binding.go | 1320 +++++ pkg/bindings/IStrategyManager/tmp.abi | 549 +++ pkg/bindings/IStrategyManager/tmp.bin | 1 + pkg/bindings/IWhitelister/binding.go | 346 ++ pkg/bindings/IWhitelister/tmp.abi | 243 + pkg/bindings/IWhitelister/tmp.bin | 1 + pkg/bindings/Merkle/binding.go | 203 + pkg/bindings/Merkle/tmp.abi | 1 + pkg/bindings/Merkle/tmp.bin | 1 + pkg/bindings/Pausable/binding.go | 805 +++ pkg/bindings/Pausable/tmp.abi | 150 + pkg/bindings/Pausable/tmp.bin | 1 + pkg/bindings/PauserRegistry/binding.go | 577 +++ pkg/bindings/PauserRegistry/tmp.abi | 119 + pkg/bindings/PauserRegistry/tmp.bin | 1 + pkg/bindings/Slasher/tmp.abi | 831 ++++ pkg/bindings/Slasher/tmp.bin | 1 + pkg/bindings/StrategyBase/binding.go | 1333 +++++ pkg/bindings/StrategyBase/tmp.abi | 424 ++ pkg/bindings/StrategyBase/tmp.bin | 1 + pkg/bindings/StrategyBaseTVLLimits/binding.go | 1739 +++++++ pkg/bindings/StrategyBaseTVLLimits/tmp.abi | 552 +++ pkg/bindings/StrategyBaseTVLLimits/tmp.bin | 1 + pkg/bindings/StrategyManager/binding.go | 2584 ++++++++++ pkg/bindings/StrategyManager/tmp.abi | 962 ++++ pkg/bindings/StrategyManager/tmp.bin | 1 + .../StrategyManagerStorage/binding.go | 1506 ++++++ pkg/bindings/StrategyManagerStorage/tmp.abi | 656 +++ pkg/bindings/StrategyManagerStorage/tmp.bin | 1 + pkg/bindings/StructuredLinkedList/binding.go | 203 + pkg/bindings/StructuredLinkedList/tmp.abi | 1 + pkg/bindings/StructuredLinkedList/tmp.bin | 1 + .../binding.go | 377 ++ .../UpgradeableSignatureCheckingUtils/tmp.abi | 41 + .../UpgradeableSignatureCheckingUtils/tmp.bin | 1 + scripts/compile-bindings.sh | 32 + scripts/pre-commit.sh | 3 + 124 files changed, 61165 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/check-compilation.yml create mode 100644 Makefile create mode 100644 go.mod create mode 100644 go.sum create mode 100644 pkg/bindings/AVSDirectory/binding.go create mode 100644 pkg/bindings/AVSDirectory/tmp.abi create mode 100644 pkg/bindings/AVSDirectory/tmp.bin create mode 100644 pkg/bindings/AVSDirectoryStorage/binding.go create mode 100644 pkg/bindings/AVSDirectoryStorage/tmp.abi create mode 100644 pkg/bindings/AVSDirectoryStorage/tmp.bin create mode 100644 pkg/bindings/BeaconChainProofs/binding.go create mode 100644 pkg/bindings/BeaconChainProofs/tmp.abi create mode 100644 pkg/bindings/BeaconChainProofs/tmp.bin create mode 100644 pkg/bindings/BytesLib/binding.go create mode 100644 pkg/bindings/BytesLib/tmp.abi create mode 100644 pkg/bindings/BytesLib/tmp.bin create mode 100644 pkg/bindings/DelayedWithdrawalRouter/binding.go create mode 100644 pkg/bindings/DelayedWithdrawalRouter/tmp.abi create mode 100644 pkg/bindings/DelayedWithdrawalRouter/tmp.bin create mode 100644 pkg/bindings/DelegationManager/binding.go create mode 100644 pkg/bindings/DelegationManager/tmp.abi create mode 100644 pkg/bindings/DelegationManager/tmp.bin create mode 100644 pkg/bindings/DelegationManagerStorage/binding.go create mode 100644 pkg/bindings/DelegationManagerStorage/tmp.abi create mode 100644 pkg/bindings/DelegationManagerStorage/tmp.bin create mode 100644 pkg/bindings/EIP1271SignatureUtils/binding.go create mode 100644 pkg/bindings/EIP1271SignatureUtils/tmp.abi create mode 100644 pkg/bindings/EIP1271SignatureUtils/tmp.bin create mode 100644 pkg/bindings/EigenPod/binding.go create mode 100644 pkg/bindings/EigenPod/tmp.abi create mode 100644 pkg/bindings/EigenPod/tmp.bin create mode 100644 pkg/bindings/EigenPodManager/binding.go create mode 100644 pkg/bindings/EigenPodManager/tmp.abi create mode 100644 pkg/bindings/EigenPodManager/tmp.bin create mode 100644 pkg/bindings/EigenPodManagerStorage/binding.go create mode 100644 pkg/bindings/EigenPodManagerStorage/tmp.abi create mode 100644 pkg/bindings/EigenPodManagerStorage/tmp.bin create mode 100644 pkg/bindings/EigenPodPausingConstants/binding.go create mode 100644 pkg/bindings/EigenPodPausingConstants/tmp.abi create mode 100644 pkg/bindings/EigenPodPausingConstants/tmp.bin create mode 100644 pkg/bindings/Endian/binding.go create mode 100644 pkg/bindings/Endian/tmp.abi create mode 100644 pkg/bindings/Endian/tmp.bin create mode 100644 pkg/bindings/IAVSDirectory/binding.go create mode 100644 pkg/bindings/IAVSDirectory/tmp.abi create mode 100644 pkg/bindings/IAVSDirectory/tmp.bin create mode 100644 pkg/bindings/IBeaconChainOracle/binding.go create mode 100644 pkg/bindings/IBeaconChainOracle/tmp.abi create mode 100644 pkg/bindings/IBeaconChainOracle/tmp.bin create mode 100644 pkg/bindings/IDelayedWithdrawalRouter/binding.go create mode 100644 pkg/bindings/IDelayedWithdrawalRouter/tmp.abi create mode 100644 pkg/bindings/IDelayedWithdrawalRouter/tmp.bin create mode 100644 pkg/bindings/IDelegationFaucet/binding.go create mode 100644 pkg/bindings/IDelegationFaucet/tmp.abi create mode 100644 pkg/bindings/IDelegationFaucet/tmp.bin create mode 100644 pkg/bindings/IDelegationManager/binding.go create mode 100644 pkg/bindings/IDelegationManager/tmp.abi create mode 100644 pkg/bindings/IDelegationManager/tmp.bin create mode 100644 pkg/bindings/IETHPOSDeposit/binding.go create mode 100644 pkg/bindings/IETHPOSDeposit/tmp.abi create mode 100644 pkg/bindings/IETHPOSDeposit/tmp.bin create mode 100644 pkg/bindings/IEigenPod/binding.go create mode 100644 pkg/bindings/IEigenPod/tmp.abi create mode 100644 pkg/bindings/IEigenPod/tmp.bin create mode 100644 pkg/bindings/IEigenPodManager/binding.go create mode 100644 pkg/bindings/IEigenPodManager/tmp.abi create mode 100644 pkg/bindings/IEigenPodManager/tmp.bin create mode 100644 pkg/bindings/IPausable/binding.go create mode 100644 pkg/bindings/IPausable/tmp.abi create mode 100644 pkg/bindings/IPausable/tmp.bin create mode 100644 pkg/bindings/IPauserRegistry/binding.go create mode 100644 pkg/bindings/IPauserRegistry/tmp.abi create mode 100644 pkg/bindings/IPauserRegistry/tmp.bin create mode 100644 pkg/bindings/ISignatureUtils/binding.go create mode 100644 pkg/bindings/ISignatureUtils/tmp.abi create mode 100644 pkg/bindings/ISignatureUtils/tmp.bin create mode 100644 pkg/bindings/ISlasher/binding.go create mode 100644 pkg/bindings/ISlasher/tmp.abi create mode 100644 pkg/bindings/ISlasher/tmp.bin create mode 100644 pkg/bindings/ISocketUpdater/binding.go create mode 100644 pkg/bindings/ISocketUpdater/tmp.abi create mode 100644 pkg/bindings/ISocketUpdater/tmp.bin create mode 100644 pkg/bindings/IStrategy/binding.go create mode 100644 pkg/bindings/IStrategy/tmp.abi create mode 100644 pkg/bindings/IStrategy/tmp.bin create mode 100644 pkg/bindings/IStrategyManager/binding.go create mode 100644 pkg/bindings/IStrategyManager/tmp.abi create mode 100644 pkg/bindings/IStrategyManager/tmp.bin create mode 100644 pkg/bindings/IWhitelister/binding.go create mode 100644 pkg/bindings/IWhitelister/tmp.abi create mode 100644 pkg/bindings/IWhitelister/tmp.bin create mode 100644 pkg/bindings/Merkle/binding.go create mode 100644 pkg/bindings/Merkle/tmp.abi create mode 100644 pkg/bindings/Merkle/tmp.bin create mode 100644 pkg/bindings/Pausable/binding.go create mode 100644 pkg/bindings/Pausable/tmp.abi create mode 100644 pkg/bindings/Pausable/tmp.bin create mode 100644 pkg/bindings/PauserRegistry/binding.go create mode 100644 pkg/bindings/PauserRegistry/tmp.abi create mode 100644 pkg/bindings/PauserRegistry/tmp.bin create mode 100644 pkg/bindings/Slasher/tmp.abi create mode 100644 pkg/bindings/Slasher/tmp.bin create mode 100644 pkg/bindings/StrategyBase/binding.go create mode 100644 pkg/bindings/StrategyBase/tmp.abi create mode 100644 pkg/bindings/StrategyBase/tmp.bin create mode 100644 pkg/bindings/StrategyBaseTVLLimits/binding.go create mode 100644 pkg/bindings/StrategyBaseTVLLimits/tmp.abi create mode 100644 pkg/bindings/StrategyBaseTVLLimits/tmp.bin create mode 100644 pkg/bindings/StrategyManager/binding.go create mode 100644 pkg/bindings/StrategyManager/tmp.abi create mode 100644 pkg/bindings/StrategyManager/tmp.bin create mode 100644 pkg/bindings/StrategyManagerStorage/binding.go create mode 100644 pkg/bindings/StrategyManagerStorage/tmp.abi create mode 100644 pkg/bindings/StrategyManagerStorage/tmp.bin create mode 100644 pkg/bindings/StructuredLinkedList/binding.go create mode 100644 pkg/bindings/StructuredLinkedList/tmp.abi create mode 100644 pkg/bindings/StructuredLinkedList/tmp.bin create mode 100644 pkg/bindings/UpgradeableSignatureCheckingUtils/binding.go create mode 100644 pkg/bindings/UpgradeableSignatureCheckingUtils/tmp.abi create mode 100644 pkg/bindings/UpgradeableSignatureCheckingUtils/tmp.bin create mode 100755 scripts/compile-bindings.sh create mode 100755 scripts/pre-commit.sh diff --git a/.github/workflows/check-compilation.yml b/.github/workflows/check-compilation.yml new file mode 100644 index 000000000..17cbf150e --- /dev/null +++ b/.github/workflows/check-compilation.yml @@ -0,0 +1,30 @@ +name: CI + +on: [push] + +jobs: + check-compilation: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Build and validate + if: github.event_name == 'push' + run: | + sudo apt-get update + sudo apt-get install -y make curl git software-properties-common jq + sudo add-apt-repository -y ppa:longsleep/golang-backports + sudo apt-get update + sudo apt-get install -y golang-1.22 + sudo update-alternatives --install /usr/local/bin/go go /usr/lib/go-1.22/bin/go 1 + mkdir ~/.go + export GOPATH=~/.go + export PATH=$PATH:~/.go/bin + go install github.com/ethereum/go-ethereum/cmd/abigen@v1.14.0 + curl -L https://foundry.paradigm.xyz | bash + export PATH=$PATH:/home/runner/.config/.foundry/bin + source ~/.bashrc + foundryup + make bindings + if [ ! -z "$(git status --porcelain)" ]; then git diff; git status; exit 1; fi diff --git a/.gitignore b/.gitignore index 555235f94..c8e5b6075 100644 --- a/.gitignore +++ b/.gitignore @@ -42,4 +42,6 @@ test.sh # Surya outputs InheritanceGraph.png -surya_report.md \ No newline at end of file +surya_report.md + +.idea diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..0e5cdf6c0 --- /dev/null +++ b/Makefile @@ -0,0 +1,19 @@ + +.PHONY: install-hooks +install-hooks: + cp scripts/pre-commit.sh .git/hooks/pre-commit + +.PHONY: deps +deps: install-hooks + brew install libusb + go install github.com/ethereum/go-ethereum/cmd/abigen@latest + curl -L https://foundry.paradigm.xyz | bash + foundryup + +.PHONY: compile +compile: + forge b + +.PHONY: bindings +bindings: compile + ./scripts/compile-bindings.sh diff --git a/README.md b/README.md index 5e9a83574..1b5328efb 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,19 @@ The main branches we use are: ## Documentation +### Setup + +To set up this repo for the first time, run: + +```bash +make deps +``` + +This will: +* Install the pre-commit hook +* Install foundry and its tools +* Install abigen + ### Basics To get a basic understanding of EigenLayer, check out [You Could've Invented EigenLayer](https://www.blog.eigenlayer.xyz/ycie/). Note that some of the document's content describes features that do not exist yet (like the Slasher). To understand more about how restakers and operators interact with EigenLayer, check out these guides: @@ -41,6 +54,8 @@ foundryup forge build forge test + +make bindings ``` ### Running Fork Tests @@ -83,6 +98,12 @@ surya inheritance ./src/contracts/**/*.sol | dot -Tpng > InheritanceGraph.png surya mdreport surya_report.md ./src/contracts/**/*.sol ``` +### Generate Go bindings + +```bash +make bindings +``` + ## Deployments ### Current Mainnet Deployment diff --git a/go.mod b/go.mod new file mode 100644 index 000000000..1c07f30d8 --- /dev/null +++ b/go.mod @@ -0,0 +1,34 @@ +module github.com/Layr-Labs/eigenlayer-contracts + +go 1.22.2 + +require github.com/ethereum/go-ethereum v1.14.0 + +require ( + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/StackExchange/wmi v1.2.1 // indirect + github.com/bits-and-blooms/bitset v1.10.0 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect + github.com/consensys/bavard v0.1.13 // indirect + github.com/consensys/gnark-crypto v0.12.1 // indirect + github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect + github.com/deckarep/golang-set/v2 v2.1.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/fsnotify/fsnotify v1.6.0 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/gorilla/websocket v1.4.2 // indirect + github.com/holiman/uint256 v1.2.4 // indirect + github.com/mmcloughlin/addchain v0.4.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 + golang.org/x/crypto v0.22.0 // indirect + golang.org/x/mod v0.17.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.19.0 // indirect + golang.org/x/tools v0.20.0 // indirect + rsc.io/tmplfunc v0.0.3 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 000000000..c6cccc4af --- /dev/null +++ b/go.sum @@ -0,0 +1,192 @@ +github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= +github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +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.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= +github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= +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.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= +github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/btcsuite/btcd/btcec/v2 v2.2.0 h1:fzn1qaOt32TuLjFlkzYSsBC35Q3KUjT1SwPxiMSCF5k= +github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU= +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.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= +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.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= +github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= +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/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-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= +github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/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.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.1.0 h1:g47V4Or+DUdzbs8FxCCmgb6VYd+ptPAngjM6dtGktsI= +github.com/deckarep/golang-set/v2 v2.1.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.0 h1:xRWC5NlB6g1x7vNy4HDBLuqVNbtLrc7v8S6+Uxim1LU= +github.com/ethereum/go-ethereum v1.14.0/go.mod h1:1STrq471D0BQbCX9He0hUj4bHxX2k6mt5nOQJhDNOJ8= +github.com/fjl/memsize v0.0.2 h1:27txuSD9or+NZlnOWdKUxeBzTAUkWCVh+4Gf2dWFOzA= +github.com/fjl/memsize v0.0.2/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +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/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE= +github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46/go.mod h1:QNpY22eby74jVhqH4WhDLDwxc/vqsern6pW+u2kbkpc= +github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= +github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= +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/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/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +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/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.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.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/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.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= +github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= +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/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= +github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= +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/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.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +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/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= +github.com/mitchellh/mapstructure v1.4.1/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/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.12.0 h1:C+UIj/QWtmqY13Arb8kwMt5j34/0Z2iKamrJ+ryC0Gg= +github.com/prometheus/client_golang v1.12.0/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_model v0.2.1-0.20210607210712-147c58e9608a h1:CmF68hwI0XsOQ5UwlBopMi2Ow4Pbg32akc4KIVCOm+Y= +github.com/prometheus/client_model v0.2.1-0.20210607210712-147c58e9608a/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +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.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +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/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/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/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +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/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= +github.com/urfave/cli/v2 v2.25.7/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= +golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= +golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= +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/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +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-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +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.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +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.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= +golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= +gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +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.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/pkg/bindings/AVSDirectory/binding.go b/pkg/bindings/AVSDirectory/binding.go new file mode 100644 index 000000000..1df42142e --- /dev/null +++ b/pkg/bindings/AVSDirectory/binding.go @@ -0,0 +1,1793 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package AVSDirectory + +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 +) + +// ISignatureUtilsSignatureWithSaltAndExpiry is an auto generated low-level Go binding around an user-defined struct. +type ISignatureUtilsSignatureWithSaltAndExpiry struct { + Signature []byte + Salt [32]byte + Expiry *big.Int +} + +// 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: "0x60c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a264697066735822122065943d27b1056cf61e472d810a01e8cc60d5672db77210063097f268a7f169fb64736f6c634300080c0033", +} + +// AVSDirectoryABI is the input ABI used to generate the binding from. +// Deprecated: Use AVSDirectoryMetaData.ABI instead. +var AVSDirectoryABI = AVSDirectoryMetaData.ABI + +// AVSDirectoryBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use AVSDirectoryMetaData.Bin instead. +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) { + parsed, err := AVSDirectoryMetaData.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(AVSDirectoryBin), backend, _delegation) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &AVSDirectory{AVSDirectoryCaller: AVSDirectoryCaller{contract: contract}, AVSDirectoryTransactor: AVSDirectoryTransactor{contract: contract}, AVSDirectoryFilterer: AVSDirectoryFilterer{contract: contract}}, nil +} + +// AVSDirectory is an auto generated Go binding around an Ethereum contract. +type AVSDirectory struct { + AVSDirectoryCaller // Read-only binding to the contract + AVSDirectoryTransactor // Write-only binding to the contract + AVSDirectoryFilterer // Log filterer for contract events +} + +// AVSDirectoryCaller is an auto generated read-only Go binding around an Ethereum contract. +type AVSDirectoryCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AVSDirectoryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AVSDirectoryTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AVSDirectoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AVSDirectoryFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AVSDirectorySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AVSDirectorySession struct { + Contract *AVSDirectory // 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 +} + +// AVSDirectoryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AVSDirectoryCallerSession struct { + Contract *AVSDirectoryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AVSDirectoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AVSDirectoryTransactorSession struct { + Contract *AVSDirectoryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AVSDirectoryRaw is an auto generated low-level Go binding around an Ethereum contract. +type AVSDirectoryRaw struct { + Contract *AVSDirectory // Generic contract binding to access the raw methods on +} + +// AVSDirectoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AVSDirectoryCallerRaw struct { + Contract *AVSDirectoryCaller // Generic read-only contract binding to access the raw methods on +} + +// AVSDirectoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AVSDirectoryTransactorRaw struct { + Contract *AVSDirectoryTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAVSDirectory creates a new instance of AVSDirectory, bound to a specific deployed contract. +func NewAVSDirectory(address common.Address, backend bind.ContractBackend) (*AVSDirectory, error) { + contract, err := bindAVSDirectory(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &AVSDirectory{AVSDirectoryCaller: AVSDirectoryCaller{contract: contract}, AVSDirectoryTransactor: AVSDirectoryTransactor{contract: contract}, AVSDirectoryFilterer: AVSDirectoryFilterer{contract: contract}}, nil +} + +// NewAVSDirectoryCaller creates a new read-only instance of AVSDirectory, bound to a specific deployed contract. +func NewAVSDirectoryCaller(address common.Address, caller bind.ContractCaller) (*AVSDirectoryCaller, error) { + contract, err := bindAVSDirectory(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AVSDirectoryCaller{contract: contract}, nil +} + +// NewAVSDirectoryTransactor creates a new write-only instance of AVSDirectory, bound to a specific deployed contract. +func NewAVSDirectoryTransactor(address common.Address, transactor bind.ContractTransactor) (*AVSDirectoryTransactor, error) { + contract, err := bindAVSDirectory(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AVSDirectoryTransactor{contract: contract}, nil +} + +// NewAVSDirectoryFilterer creates a new log filterer instance of AVSDirectory, bound to a specific deployed contract. +func NewAVSDirectoryFilterer(address common.Address, filterer bind.ContractFilterer) (*AVSDirectoryFilterer, error) { + contract, err := bindAVSDirectory(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AVSDirectoryFilterer{contract: contract}, nil +} + +// bindAVSDirectory binds a generic wrapper to an already deployed contract. +func bindAVSDirectory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := AVSDirectoryMetaData.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 (_AVSDirectory *AVSDirectoryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AVSDirectory.Contract.AVSDirectoryCaller.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 (_AVSDirectory *AVSDirectoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AVSDirectory.Contract.AVSDirectoryTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AVSDirectory *AVSDirectoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AVSDirectory.Contract.AVSDirectoryTransactor.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 (_AVSDirectory *AVSDirectoryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AVSDirectory.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 (_AVSDirectory *AVSDirectoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AVSDirectory.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AVSDirectory *AVSDirectoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AVSDirectory.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 (_AVSDirectory *AVSDirectoryCaller) DOMAINTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _AVSDirectory.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 (_AVSDirectory *AVSDirectorySession) DOMAINTYPEHASH() ([32]byte, error) { + return _AVSDirectory.Contract.DOMAINTYPEHASH(&_AVSDirectory.CallOpts) +} + +// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70. +// +// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32) +func (_AVSDirectory *AVSDirectoryCallerSession) DOMAINTYPEHASH() ([32]byte, error) { + return _AVSDirectory.Contract.DOMAINTYPEHASH(&_AVSDirectory.CallOpts) +} + +// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab. +// +// 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, "OPERATOR_AVS_REGISTRATION_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab. +// +// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32) +func (_AVSDirectory *AVSDirectorySession) OPERATORAVSREGISTRATIONTYPEHASH() ([32]byte, error) { + return _AVSDirectory.Contract.OPERATORAVSREGISTRATIONTYPEHASH(&_AVSDirectory.CallOpts) +} + +// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab. +// +// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32) +func (_AVSDirectory *AVSDirectoryCallerSession) OPERATORAVSREGISTRATIONTYPEHASH() ([32]byte, error) { + return _AVSDirectory.Contract.OPERATORAVSREGISTRATIONTYPEHASH(&_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) { + var out []interface{} + err := _AVSDirectory.contract.Call(opts, &out, "avsOperatorStatus", arg0, arg1) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// AvsOperatorStatus is a free data retrieval call binding the contract method 0x49075da3. +// +// Solidity: function avsOperatorStatus(address , address ) view returns(uint8) +func (_AVSDirectory *AVSDirectorySession) AvsOperatorStatus(arg0 common.Address, arg1 common.Address) (uint8, error) { + return _AVSDirectory.Contract.AvsOperatorStatus(&_AVSDirectory.CallOpts, arg0, arg1) +} + +// 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) +} + +// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88. +// +// Solidity: function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) view returns(bytes32) +func (_AVSDirectory *AVSDirectoryCaller) CalculateOperatorAVSRegistrationDigestHash(opts *bind.CallOpts, operator common.Address, avs common.Address, salt [32]byte, expiry *big.Int) ([32]byte, error) { + var out []interface{} + err := _AVSDirectory.contract.Call(opts, &out, "calculateOperatorAVSRegistrationDigestHash", operator, avs, salt, expiry) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88. +// +// Solidity: function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) view returns(bytes32) +func (_AVSDirectory *AVSDirectorySession) CalculateOperatorAVSRegistrationDigestHash(operator common.Address, avs common.Address, salt [32]byte, expiry *big.Int) ([32]byte, error) { + return _AVSDirectory.Contract.CalculateOperatorAVSRegistrationDigestHash(&_AVSDirectory.CallOpts, operator, avs, salt, expiry) +} + +// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88. +// +// Solidity: function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) view returns(bytes32) +func (_AVSDirectory *AVSDirectoryCallerSession) CalculateOperatorAVSRegistrationDigestHash(operator common.Address, avs common.Address, salt [32]byte, expiry *big.Int) ([32]byte, error) { + return _AVSDirectory.Contract.CalculateOperatorAVSRegistrationDigestHash(&_AVSDirectory.CallOpts, operator, avs, salt, expiry) +} + +// Delegation is a free data retrieval call binding the contract method 0xdf5cf723. +// +// Solidity: function delegation() view returns(address) +func (_AVSDirectory *AVSDirectoryCaller) Delegation(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _AVSDirectory.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 (_AVSDirectory *AVSDirectorySession) Delegation() (common.Address, error) { + return _AVSDirectory.Contract.Delegation(&_AVSDirectory.CallOpts) +} + +// Delegation is a free data retrieval call binding the contract method 0xdf5cf723. +// +// Solidity: function delegation() view returns(address) +func (_AVSDirectory *AVSDirectoryCallerSession) Delegation() (common.Address, error) { + return _AVSDirectory.Contract.Delegation(&_AVSDirectory.CallOpts) +} + +// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25. +// +// Solidity: function domainSeparator() view returns(bytes32) +func (_AVSDirectory *AVSDirectoryCaller) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _AVSDirectory.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 (_AVSDirectory *AVSDirectorySession) DomainSeparator() ([32]byte, error) { + return _AVSDirectory.Contract.DomainSeparator(&_AVSDirectory.CallOpts) +} + +// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25. +// +// Solidity: function domainSeparator() view returns(bytes32) +func (_AVSDirectory *AVSDirectoryCallerSession) DomainSeparator() ([32]byte, error) { + return _AVSDirectory.Contract.DomainSeparator(&_AVSDirectory.CallOpts) +} + +// 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) { + var out []interface{} + err := _AVSDirectory.contract.Call(opts, &out, "operatorSaltIsSpent", arg0, arg1) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// OperatorSaltIsSpent is a free data retrieval call binding the contract method 0x374823b5. +// +// Solidity: function operatorSaltIsSpent(address , bytes32 ) view returns(bool) +func (_AVSDirectory *AVSDirectorySession) OperatorSaltIsSpent(arg0 common.Address, arg1 [32]byte) (bool, error) { + return _AVSDirectory.Contract.OperatorSaltIsSpent(&_AVSDirectory.CallOpts, arg0, arg1) +} + +// 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) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_AVSDirectory *AVSDirectoryCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _AVSDirectory.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 (_AVSDirectory *AVSDirectorySession) Owner() (common.Address, error) { + return _AVSDirectory.Contract.Owner(&_AVSDirectory.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_AVSDirectory *AVSDirectoryCallerSession) Owner() (common.Address, error) { + return _AVSDirectory.Contract.Owner(&_AVSDirectory.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_AVSDirectory *AVSDirectoryCaller) Paused(opts *bind.CallOpts, index uint8) (bool, error) { + var out []interface{} + err := _AVSDirectory.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 (_AVSDirectory *AVSDirectorySession) Paused(index uint8) (bool, error) { + return _AVSDirectory.Contract.Paused(&_AVSDirectory.CallOpts, index) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_AVSDirectory *AVSDirectoryCallerSession) Paused(index uint8) (bool, error) { + return _AVSDirectory.Contract.Paused(&_AVSDirectory.CallOpts, index) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_AVSDirectory *AVSDirectoryCaller) Paused0(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _AVSDirectory.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 (_AVSDirectory *AVSDirectorySession) Paused0() (*big.Int, error) { + return _AVSDirectory.Contract.Paused0(&_AVSDirectory.CallOpts) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_AVSDirectory *AVSDirectoryCallerSession) Paused0() (*big.Int, error) { + return _AVSDirectory.Contract.Paused0(&_AVSDirectory.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_AVSDirectory *AVSDirectoryCaller) PauserRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _AVSDirectory.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 (_AVSDirectory *AVSDirectorySession) PauserRegistry() (common.Address, error) { + return _AVSDirectory.Contract.PauserRegistry(&_AVSDirectory.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_AVSDirectory *AVSDirectoryCallerSession) PauserRegistry() (common.Address, error) { + return _AVSDirectory.Contract.PauserRegistry(&_AVSDirectory.CallOpts) +} + +// CancelSalt is a paid mutator transaction binding the contract method 0xec76f442. +// +// Solidity: function cancelSalt(bytes32 salt) returns() +func (_AVSDirectory *AVSDirectoryTransactor) CancelSalt(opts *bind.TransactOpts, salt [32]byte) (*types.Transaction, error) { + return _AVSDirectory.contract.Transact(opts, "cancelSalt", salt) +} + +// CancelSalt is a paid mutator transaction binding the contract method 0xec76f442. +// +// Solidity: function cancelSalt(bytes32 salt) returns() +func (_AVSDirectory *AVSDirectorySession) CancelSalt(salt [32]byte) (*types.Transaction, error) { + return _AVSDirectory.Contract.CancelSalt(&_AVSDirectory.TransactOpts, salt) +} + +// CancelSalt is a paid mutator transaction binding the contract method 0xec76f442. +// +// Solidity: function cancelSalt(bytes32 salt) returns() +func (_AVSDirectory *AVSDirectoryTransactorSession) CancelSalt(salt [32]byte) (*types.Transaction, error) { + return _AVSDirectory.Contract.CancelSalt(&_AVSDirectory.TransactOpts, salt) +} + +// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. +// +// Solidity: function deregisterOperatorFromAVS(address operator) returns() +func (_AVSDirectory *AVSDirectoryTransactor) DeregisterOperatorFromAVS(opts *bind.TransactOpts, operator common.Address) (*types.Transaction, error) { + return _AVSDirectory.contract.Transact(opts, "deregisterOperatorFromAVS", operator) +} + +// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. +// +// Solidity: function deregisterOperatorFromAVS(address operator) returns() +func (_AVSDirectory *AVSDirectorySession) DeregisterOperatorFromAVS(operator common.Address) (*types.Transaction, error) { + return _AVSDirectory.Contract.DeregisterOperatorFromAVS(&_AVSDirectory.TransactOpts, operator) +} + +// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. +// +// Solidity: function deregisterOperatorFromAVS(address operator) returns() +func (_AVSDirectory *AVSDirectoryTransactorSession) DeregisterOperatorFromAVS(operator common.Address) (*types.Transaction, error) { + return _AVSDirectory.Contract.DeregisterOperatorFromAVS(&_AVSDirectory.TransactOpts, operator) +} + +// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c. +// +// 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) +} + +// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c. +// +// 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) +} + +// Initialize is a paid mutator transaction binding the contract method 0x1794bb3c. +// +// 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) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_AVSDirectory *AVSDirectoryTransactor) Pause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _AVSDirectory.contract.Transact(opts, "pause", newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_AVSDirectory *AVSDirectorySession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _AVSDirectory.Contract.Pause(&_AVSDirectory.TransactOpts, newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_AVSDirectory *AVSDirectoryTransactorSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _AVSDirectory.Contract.Pause(&_AVSDirectory.TransactOpts, newPausedStatus) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_AVSDirectory *AVSDirectoryTransactor) PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AVSDirectory.contract.Transact(opts, "pauseAll") +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_AVSDirectory *AVSDirectorySession) PauseAll() (*types.Transaction, error) { + return _AVSDirectory.Contract.PauseAll(&_AVSDirectory.TransactOpts) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_AVSDirectory *AVSDirectoryTransactorSession) PauseAll() (*types.Transaction, error) { + return _AVSDirectory.Contract.PauseAll(&_AVSDirectory.TransactOpts) +} + +// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// +// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() +func (_AVSDirectory *AVSDirectoryTransactor) RegisterOperatorToAVS(opts *bind.TransactOpts, operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _AVSDirectory.contract.Transact(opts, "registerOperatorToAVS", operator, operatorSignature) +} + +// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// +// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() +func (_AVSDirectory *AVSDirectorySession) RegisterOperatorToAVS(operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _AVSDirectory.Contract.RegisterOperatorToAVS(&_AVSDirectory.TransactOpts, operator, operatorSignature) +} + +// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// +// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() +func (_AVSDirectory *AVSDirectoryTransactorSession) RegisterOperatorToAVS(operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _AVSDirectory.Contract.RegisterOperatorToAVS(&_AVSDirectory.TransactOpts, operator, operatorSignature) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_AVSDirectory *AVSDirectoryTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AVSDirectory.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_AVSDirectory *AVSDirectorySession) RenounceOwnership() (*types.Transaction, error) { + return _AVSDirectory.Contract.RenounceOwnership(&_AVSDirectory.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_AVSDirectory *AVSDirectoryTransactorSession) RenounceOwnership() (*types.Transaction, error) { + 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() +func (_AVSDirectory *AVSDirectoryTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _AVSDirectory.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_AVSDirectory *AVSDirectorySession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _AVSDirectory.Contract.TransferOwnership(&_AVSDirectory.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_AVSDirectory *AVSDirectoryTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _AVSDirectory.Contract.TransferOwnership(&_AVSDirectory.TransactOpts, newOwner) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_AVSDirectory *AVSDirectoryTransactor) Unpause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _AVSDirectory.contract.Transact(opts, "unpause", newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_AVSDirectory *AVSDirectorySession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _AVSDirectory.Contract.Unpause(&_AVSDirectory.TransactOpts, newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_AVSDirectory *AVSDirectoryTransactorSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _AVSDirectory.Contract.Unpause(&_AVSDirectory.TransactOpts, newPausedStatus) +} + +// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa98fb355. +// +// Solidity: function updateAVSMetadataURI(string metadataURI) returns() +func (_AVSDirectory *AVSDirectoryTransactor) UpdateAVSMetadataURI(opts *bind.TransactOpts, metadataURI string) (*types.Transaction, error) { + return _AVSDirectory.contract.Transact(opts, "updateAVSMetadataURI", metadataURI) +} + +// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa98fb355. +// +// Solidity: function updateAVSMetadataURI(string metadataURI) returns() +func (_AVSDirectory *AVSDirectorySession) UpdateAVSMetadataURI(metadataURI string) (*types.Transaction, error) { + return _AVSDirectory.Contract.UpdateAVSMetadataURI(&_AVSDirectory.TransactOpts, metadataURI) +} + +// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa98fb355. +// +// Solidity: function updateAVSMetadataURI(string metadataURI) returns() +func (_AVSDirectory *AVSDirectoryTransactorSession) UpdateAVSMetadataURI(metadataURI string) (*types.Transaction, error) { + return _AVSDirectory.Contract.UpdateAVSMetadataURI(&_AVSDirectory.TransactOpts, metadataURI) +} + +// AVSDirectoryAVSMetadataURIUpdatedIterator is returned from FilterAVSMetadataURIUpdated and is used to iterate over the raw logs and unpacked data for AVSMetadataURIUpdated events raised by the AVSDirectory contract. +type AVSDirectoryAVSMetadataURIUpdatedIterator struct { + Event *AVSDirectoryAVSMetadataURIUpdated // Event containing the contract specifics 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 *AVSDirectoryAVSMetadataURIUpdatedIterator) 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(AVSDirectoryAVSMetadataURIUpdated) + 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(AVSDirectoryAVSMetadataURIUpdated) + 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 *AVSDirectoryAVSMetadataURIUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AVSDirectoryAVSMetadataURIUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AVSDirectoryAVSMetadataURIUpdated represents a AVSMetadataURIUpdated event raised by the AVSDirectory contract. +type AVSDirectoryAVSMetadataURIUpdated 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 (_AVSDirectory *AVSDirectoryFilterer) FilterAVSMetadataURIUpdated(opts *bind.FilterOpts, avs []common.Address) (*AVSDirectoryAVSMetadataURIUpdatedIterator, error) { + + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _AVSDirectory.contract.FilterLogs(opts, "AVSMetadataURIUpdated", avsRule) + if err != nil { + return nil, err + } + return &AVSDirectoryAVSMetadataURIUpdatedIterator{contract: _AVSDirectory.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 (_AVSDirectory *AVSDirectoryFilterer) WatchAVSMetadataURIUpdated(opts *bind.WatchOpts, sink chan<- *AVSDirectoryAVSMetadataURIUpdated, avs []common.Address) (event.Subscription, error) { + + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _AVSDirectory.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(AVSDirectoryAVSMetadataURIUpdated) + if err := _AVSDirectory.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 (_AVSDirectory *AVSDirectoryFilterer) ParseAVSMetadataURIUpdated(log types.Log) (*AVSDirectoryAVSMetadataURIUpdated, error) { + event := new(AVSDirectoryAVSMetadataURIUpdated) + if err := _AVSDirectory.contract.UnpackLog(event, "AVSMetadataURIUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AVSDirectoryInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the AVSDirectory contract. +type AVSDirectoryInitializedIterator struct { + Event *AVSDirectoryInitialized // Event containing the contract specifics 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 *AVSDirectoryInitializedIterator) 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(AVSDirectoryInitialized) + 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(AVSDirectoryInitialized) + 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 *AVSDirectoryInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AVSDirectoryInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AVSDirectoryInitialized represents a Initialized event raised by the AVSDirectory contract. +type AVSDirectoryInitialized 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 (_AVSDirectory *AVSDirectoryFilterer) FilterInitialized(opts *bind.FilterOpts) (*AVSDirectoryInitializedIterator, error) { + + logs, sub, err := _AVSDirectory.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &AVSDirectoryInitializedIterator{contract: _AVSDirectory.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 (_AVSDirectory *AVSDirectoryFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *AVSDirectoryInitialized) (event.Subscription, error) { + + logs, sub, err := _AVSDirectory.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(AVSDirectoryInitialized) + if err := _AVSDirectory.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 (_AVSDirectory *AVSDirectoryFilterer) ParseInitialized(log types.Log) (*AVSDirectoryInitialized, error) { + event := new(AVSDirectoryInitialized) + if err := _AVSDirectory.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator is returned from FilterOperatorAVSRegistrationStatusUpdated and is used to iterate over the raw logs and unpacked data for OperatorAVSRegistrationStatusUpdated events raised by the AVSDirectory contract. +type AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator struct { + Event *AVSDirectoryOperatorAVSRegistrationStatusUpdated // Event containing the contract specifics 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 *AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator) 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(AVSDirectoryOperatorAVSRegistrationStatusUpdated) + 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(AVSDirectoryOperatorAVSRegistrationStatusUpdated) + 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 *AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AVSDirectoryOperatorAVSRegistrationStatusUpdated represents a OperatorAVSRegistrationStatusUpdated event raised by the AVSDirectory contract. +type AVSDirectoryOperatorAVSRegistrationStatusUpdated struct { + Operator common.Address + Avs common.Address + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorAVSRegistrationStatusUpdated is a free log retrieval operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// +// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) +func (_AVSDirectory *AVSDirectoryFilterer) FilterOperatorAVSRegistrationStatusUpdated(opts *bind.FilterOpts, operator []common.Address, avs []common.Address) (*AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _AVSDirectory.contract.FilterLogs(opts, "OperatorAVSRegistrationStatusUpdated", operatorRule, avsRule) + if err != nil { + return nil, err + } + return &AVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator{contract: _AVSDirectory.contract, event: "OperatorAVSRegistrationStatusUpdated", logs: logs, sub: sub}, nil +} + +// WatchOperatorAVSRegistrationStatusUpdated is a free log subscription operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// +// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) +func (_AVSDirectory *AVSDirectoryFilterer) WatchOperatorAVSRegistrationStatusUpdated(opts *bind.WatchOpts, sink chan<- *AVSDirectoryOperatorAVSRegistrationStatusUpdated, operator []common.Address, avs []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _AVSDirectory.contract.WatchLogs(opts, "OperatorAVSRegistrationStatusUpdated", operatorRule, avsRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AVSDirectoryOperatorAVSRegistrationStatusUpdated) + if err := _AVSDirectory.contract.UnpackLog(event, "OperatorAVSRegistrationStatusUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorAVSRegistrationStatusUpdated is a log parse operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// +// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) +func (_AVSDirectory *AVSDirectoryFilterer) ParseOperatorAVSRegistrationStatusUpdated(log types.Log) (*AVSDirectoryOperatorAVSRegistrationStatusUpdated, error) { + event := new(AVSDirectoryOperatorAVSRegistrationStatusUpdated) + if err := _AVSDirectory.contract.UnpackLog(event, "OperatorAVSRegistrationStatusUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AVSDirectoryOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the AVSDirectory contract. +type AVSDirectoryOwnershipTransferredIterator struct { + Event *AVSDirectoryOwnershipTransferred // Event containing the contract specifics 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 *AVSDirectoryOwnershipTransferredIterator) 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(AVSDirectoryOwnershipTransferred) + 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(AVSDirectoryOwnershipTransferred) + 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 *AVSDirectoryOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AVSDirectoryOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AVSDirectoryOwnershipTransferred represents a OwnershipTransferred event raised by the AVSDirectory contract. +type AVSDirectoryOwnershipTransferred 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 (_AVSDirectory *AVSDirectoryFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*AVSDirectoryOwnershipTransferredIterator, 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 := _AVSDirectory.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &AVSDirectoryOwnershipTransferredIterator{contract: _AVSDirectory.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 (_AVSDirectory *AVSDirectoryFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *AVSDirectoryOwnershipTransferred, 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 := _AVSDirectory.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(AVSDirectoryOwnershipTransferred) + if err := _AVSDirectory.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 (_AVSDirectory *AVSDirectoryFilterer) ParseOwnershipTransferred(log types.Log) (*AVSDirectoryOwnershipTransferred, error) { + event := new(AVSDirectoryOwnershipTransferred) + if err := _AVSDirectory.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AVSDirectoryPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the AVSDirectory contract. +type AVSDirectoryPausedIterator struct { + Event *AVSDirectoryPaused // Event containing the contract specifics 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 *AVSDirectoryPausedIterator) 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(AVSDirectoryPaused) + 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(AVSDirectoryPaused) + 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 *AVSDirectoryPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AVSDirectoryPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AVSDirectoryPaused represents a Paused event raised by the AVSDirectory contract. +type AVSDirectoryPaused 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 (_AVSDirectory *AVSDirectoryFilterer) FilterPaused(opts *bind.FilterOpts, account []common.Address) (*AVSDirectoryPausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _AVSDirectory.contract.FilterLogs(opts, "Paused", accountRule) + if err != nil { + return nil, err + } + return &AVSDirectoryPausedIterator{contract: _AVSDirectory.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 (_AVSDirectory *AVSDirectoryFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *AVSDirectoryPaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _AVSDirectory.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(AVSDirectoryPaused) + if err := _AVSDirectory.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 (_AVSDirectory *AVSDirectoryFilterer) ParsePaused(log types.Log) (*AVSDirectoryPaused, error) { + event := new(AVSDirectoryPaused) + if err := _AVSDirectory.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + 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 + + 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 *AVSDirectoryUnpausedIterator) 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(AVSDirectoryUnpaused) + 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(AVSDirectoryUnpaused) + 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 *AVSDirectoryUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AVSDirectoryUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AVSDirectoryUnpaused represents a Unpaused event raised by the AVSDirectory contract. +type AVSDirectoryUnpaused 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 (_AVSDirectory *AVSDirectoryFilterer) FilterUnpaused(opts *bind.FilterOpts, account []common.Address) (*AVSDirectoryUnpausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _AVSDirectory.contract.FilterLogs(opts, "Unpaused", accountRule) + if err != nil { + return nil, err + } + return &AVSDirectoryUnpausedIterator{contract: _AVSDirectory.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 (_AVSDirectory *AVSDirectoryFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *AVSDirectoryUnpaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _AVSDirectory.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(AVSDirectoryUnpaused) + if err := _AVSDirectory.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 (_AVSDirectory *AVSDirectoryFilterer) ParseUnpaused(log types.Log) (*AVSDirectoryUnpaused, error) { + event := new(AVSDirectoryUnpaused) + if err := _AVSDirectory.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/AVSDirectory/tmp.abi b/pkg/bindings/AVSDirectory/tmp.abi new file mode 100644 index 000000000..02b9c609d --- /dev/null +++ b/pkg/bindings/AVSDirectory/tmp.abi @@ -0,0 +1,501 @@ +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_delegation", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "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": "enum IAVSDirectory.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": "contract IDelegationManager" + } + ], + "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": "contract IPauserRegistry" + }, + { + "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": "contract IPauserRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registerOperatorToAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorSignature", + "type": "tuple", + "internalType": "struct ISignatureUtils.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": "contract IPauserRegistry" + } + ], + "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": "enum IAVSDirectory.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": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "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 + } +] diff --git a/pkg/bindings/AVSDirectory/tmp.bin b/pkg/bindings/AVSDirectory/tmp.bin new file mode 100644 index 000000000..f3765254a --- /dev/null +++ b/pkg/bindings/AVSDirectory/tmp.bin @@ -0,0 +1 @@ +0x60c06040523480156200001157600080fd5b5060405162001f7838038062001f78833981016040819052620000349162000118565b6001600160a01b0381166080526200004b62000056565b504660a0526200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051611e01620001776000396000610ea801526000818161032401526109830152611e016000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a264697066735822122065943d27b1056cf61e472d810a01e8cc60d5672db77210063097f268a7f169fb64736f6c634300080c0033 diff --git a/pkg/bindings/AVSDirectoryStorage/binding.go b/pkg/bindings/AVSDirectoryStorage/binding.go new file mode 100644 index 000000000..2070a8e69 --- /dev/null +++ b/pkg/bindings/AVSDirectoryStorage/binding.go @@ -0,0 +1,736 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package AVSDirectoryStorage + +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 +) + +// ISignatureUtilsSignatureWithSaltAndExpiry is an auto generated low-level Go binding around an user-defined struct. +type ISignatureUtilsSignatureWithSaltAndExpiry struct { + Signature []byte + Salt [32]byte + Expiry *big.Int +} + +// 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\":\"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\":\"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}]", +} + +// AVSDirectoryStorageABI is the input ABI used to generate the binding from. +// Deprecated: Use AVSDirectoryStorageMetaData.ABI instead. +var AVSDirectoryStorageABI = AVSDirectoryStorageMetaData.ABI + +// AVSDirectoryStorage is an auto generated Go binding around an Ethereum contract. +type AVSDirectoryStorage struct { + AVSDirectoryStorageCaller // Read-only binding to the contract + AVSDirectoryStorageTransactor // Write-only binding to the contract + AVSDirectoryStorageFilterer // Log filterer for contract events +} + +// AVSDirectoryStorageCaller is an auto generated read-only Go binding around an Ethereum contract. +type AVSDirectoryStorageCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AVSDirectoryStorageTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AVSDirectoryStorageTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AVSDirectoryStorageFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AVSDirectoryStorageFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AVSDirectoryStorageSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AVSDirectoryStorageSession struct { + Contract *AVSDirectoryStorage // 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 +} + +// AVSDirectoryStorageCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AVSDirectoryStorageCallerSession struct { + Contract *AVSDirectoryStorageCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AVSDirectoryStorageTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AVSDirectoryStorageTransactorSession struct { + Contract *AVSDirectoryStorageTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AVSDirectoryStorageRaw is an auto generated low-level Go binding around an Ethereum contract. +type AVSDirectoryStorageRaw struct { + Contract *AVSDirectoryStorage // Generic contract binding to access the raw methods on +} + +// AVSDirectoryStorageCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AVSDirectoryStorageCallerRaw struct { + Contract *AVSDirectoryStorageCaller // Generic read-only contract binding to access the raw methods on +} + +// AVSDirectoryStorageTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AVSDirectoryStorageTransactorRaw struct { + Contract *AVSDirectoryStorageTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAVSDirectoryStorage creates a new instance of AVSDirectoryStorage, bound to a specific deployed contract. +func NewAVSDirectoryStorage(address common.Address, backend bind.ContractBackend) (*AVSDirectoryStorage, error) { + contract, err := bindAVSDirectoryStorage(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &AVSDirectoryStorage{AVSDirectoryStorageCaller: AVSDirectoryStorageCaller{contract: contract}, AVSDirectoryStorageTransactor: AVSDirectoryStorageTransactor{contract: contract}, AVSDirectoryStorageFilterer: AVSDirectoryStorageFilterer{contract: contract}}, nil +} + +// NewAVSDirectoryStorageCaller creates a new read-only instance of AVSDirectoryStorage, bound to a specific deployed contract. +func NewAVSDirectoryStorageCaller(address common.Address, caller bind.ContractCaller) (*AVSDirectoryStorageCaller, error) { + contract, err := bindAVSDirectoryStorage(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AVSDirectoryStorageCaller{contract: contract}, nil +} + +// NewAVSDirectoryStorageTransactor creates a new write-only instance of AVSDirectoryStorage, bound to a specific deployed contract. +func NewAVSDirectoryStorageTransactor(address common.Address, transactor bind.ContractTransactor) (*AVSDirectoryStorageTransactor, error) { + contract, err := bindAVSDirectoryStorage(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AVSDirectoryStorageTransactor{contract: contract}, nil +} + +// NewAVSDirectoryStorageFilterer creates a new log filterer instance of AVSDirectoryStorage, bound to a specific deployed contract. +func NewAVSDirectoryStorageFilterer(address common.Address, filterer bind.ContractFilterer) (*AVSDirectoryStorageFilterer, error) { + contract, err := bindAVSDirectoryStorage(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AVSDirectoryStorageFilterer{contract: contract}, nil +} + +// bindAVSDirectoryStorage binds a generic wrapper to an already deployed contract. +func bindAVSDirectoryStorage(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := AVSDirectoryStorageMetaData.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 (_AVSDirectoryStorage *AVSDirectoryStorageRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AVSDirectoryStorage.Contract.AVSDirectoryStorageCaller.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 (_AVSDirectoryStorage *AVSDirectoryStorageRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AVSDirectoryStorage.Contract.AVSDirectoryStorageTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AVSDirectoryStorage *AVSDirectoryStorageRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AVSDirectoryStorage.Contract.AVSDirectoryStorageTransactor.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 (_AVSDirectoryStorage *AVSDirectoryStorageCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AVSDirectoryStorage.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 (_AVSDirectoryStorage *AVSDirectoryStorageTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AVSDirectoryStorage.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AVSDirectoryStorage *AVSDirectoryStorageTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AVSDirectoryStorage.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 (_AVSDirectoryStorage *AVSDirectoryStorageCaller) DOMAINTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _AVSDirectoryStorage.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 (_AVSDirectoryStorage *AVSDirectoryStorageSession) DOMAINTYPEHASH() ([32]byte, error) { + return _AVSDirectoryStorage.Contract.DOMAINTYPEHASH(&_AVSDirectoryStorage.CallOpts) +} + +// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70. +// +// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32) +func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) DOMAINTYPEHASH() ([32]byte, error) { + return _AVSDirectoryStorage.Contract.DOMAINTYPEHASH(&_AVSDirectoryStorage.CallOpts) +} + +// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab. +// +// 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, "OPERATOR_AVS_REGISTRATION_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab. +// +// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32) +func (_AVSDirectoryStorage *AVSDirectoryStorageSession) OPERATORAVSREGISTRATIONTYPEHASH() ([32]byte, error) { + return _AVSDirectoryStorage.Contract.OPERATORAVSREGISTRATIONTYPEHASH(&_AVSDirectoryStorage.CallOpts) +} + +// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab. +// +// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32) +func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) OPERATORAVSREGISTRATIONTYPEHASH() ([32]byte, error) { + return _AVSDirectoryStorage.Contract.OPERATORAVSREGISTRATIONTYPEHASH(&_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) { + var out []interface{} + err := _AVSDirectoryStorage.contract.Call(opts, &out, "avsOperatorStatus", arg0, arg1) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// AvsOperatorStatus is a free data retrieval call binding the contract method 0x49075da3. +// +// Solidity: function avsOperatorStatus(address , address ) view returns(uint8) +func (_AVSDirectoryStorage *AVSDirectoryStorageSession) AvsOperatorStatus(arg0 common.Address, arg1 common.Address) (uint8, error) { + return _AVSDirectoryStorage.Contract.AvsOperatorStatus(&_AVSDirectoryStorage.CallOpts, arg0, arg1) +} + +// 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) +} + +// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88. +// +// Solidity: function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) view returns(bytes32) +func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) CalculateOperatorAVSRegistrationDigestHash(opts *bind.CallOpts, operator common.Address, avs common.Address, salt [32]byte, expiry *big.Int) ([32]byte, error) { + var out []interface{} + err := _AVSDirectoryStorage.contract.Call(opts, &out, "calculateOperatorAVSRegistrationDigestHash", operator, avs, salt, expiry) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88. +// +// Solidity: function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) view returns(bytes32) +func (_AVSDirectoryStorage *AVSDirectoryStorageSession) CalculateOperatorAVSRegistrationDigestHash(operator common.Address, avs common.Address, salt [32]byte, expiry *big.Int) ([32]byte, error) { + return _AVSDirectoryStorage.Contract.CalculateOperatorAVSRegistrationDigestHash(&_AVSDirectoryStorage.CallOpts, operator, avs, salt, expiry) +} + +// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88. +// +// Solidity: function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) view returns(bytes32) +func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) CalculateOperatorAVSRegistrationDigestHash(operator common.Address, avs common.Address, salt [32]byte, expiry *big.Int) ([32]byte, error) { + return _AVSDirectoryStorage.Contract.CalculateOperatorAVSRegistrationDigestHash(&_AVSDirectoryStorage.CallOpts, operator, avs, salt, expiry) +} + +// Delegation is a free data retrieval call binding the contract method 0xdf5cf723. +// +// Solidity: function delegation() view returns(address) +func (_AVSDirectoryStorage *AVSDirectoryStorageCaller) Delegation(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _AVSDirectoryStorage.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 (_AVSDirectoryStorage *AVSDirectoryStorageSession) Delegation() (common.Address, error) { + return _AVSDirectoryStorage.Contract.Delegation(&_AVSDirectoryStorage.CallOpts) +} + +// Delegation is a free data retrieval call binding the contract method 0xdf5cf723. +// +// Solidity: function delegation() view returns(address) +func (_AVSDirectoryStorage *AVSDirectoryStorageCallerSession) Delegation() (common.Address, error) { + return _AVSDirectoryStorage.Contract.Delegation(&_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) { + var out []interface{} + err := _AVSDirectoryStorage.contract.Call(opts, &out, "operatorSaltIsSpent", arg0, arg1) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// OperatorSaltIsSpent is a free data retrieval call binding the contract method 0x374823b5. +// +// Solidity: function operatorSaltIsSpent(address , bytes32 ) view returns(bool) +func (_AVSDirectoryStorage *AVSDirectoryStorageSession) OperatorSaltIsSpent(arg0 common.Address, arg1 [32]byte) (bool, error) { + return _AVSDirectoryStorage.Contract.OperatorSaltIsSpent(&_AVSDirectoryStorage.CallOpts, arg0, arg1) +} + +// 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) +} + +// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. +// +// Solidity: function deregisterOperatorFromAVS(address operator) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageTransactor) DeregisterOperatorFromAVS(opts *bind.TransactOpts, operator common.Address) (*types.Transaction, error) { + return _AVSDirectoryStorage.contract.Transact(opts, "deregisterOperatorFromAVS", operator) +} + +// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. +// +// Solidity: function deregisterOperatorFromAVS(address operator) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageSession) DeregisterOperatorFromAVS(operator common.Address) (*types.Transaction, error) { + return _AVSDirectoryStorage.Contract.DeregisterOperatorFromAVS(&_AVSDirectoryStorage.TransactOpts, operator) +} + +// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. +// +// Solidity: function deregisterOperatorFromAVS(address operator) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageTransactorSession) DeregisterOperatorFromAVS(operator common.Address) (*types.Transaction, error) { + return _AVSDirectoryStorage.Contract.DeregisterOperatorFromAVS(&_AVSDirectoryStorage.TransactOpts, operator) +} + +// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// +// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageTransactor) RegisterOperatorToAVS(opts *bind.TransactOpts, operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _AVSDirectoryStorage.contract.Transact(opts, "registerOperatorToAVS", operator, operatorSignature) +} + +// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// +// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageSession) RegisterOperatorToAVS(operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _AVSDirectoryStorage.Contract.RegisterOperatorToAVS(&_AVSDirectoryStorage.TransactOpts, operator, operatorSignature) +} + +// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// +// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageTransactorSession) RegisterOperatorToAVS(operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _AVSDirectoryStorage.Contract.RegisterOperatorToAVS(&_AVSDirectoryStorage.TransactOpts, operator, operatorSignature) +} + +// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa98fb355. +// +// Solidity: function updateAVSMetadataURI(string metadataURI) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageTransactor) UpdateAVSMetadataURI(opts *bind.TransactOpts, metadataURI string) (*types.Transaction, error) { + return _AVSDirectoryStorage.contract.Transact(opts, "updateAVSMetadataURI", metadataURI) +} + +// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa98fb355. +// +// Solidity: function updateAVSMetadataURI(string metadataURI) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageSession) UpdateAVSMetadataURI(metadataURI string) (*types.Transaction, error) { + return _AVSDirectoryStorage.Contract.UpdateAVSMetadataURI(&_AVSDirectoryStorage.TransactOpts, metadataURI) +} + +// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa98fb355. +// +// Solidity: function updateAVSMetadataURI(string metadataURI) returns() +func (_AVSDirectoryStorage *AVSDirectoryStorageTransactorSession) UpdateAVSMetadataURI(metadataURI string) (*types.Transaction, error) { + return _AVSDirectoryStorage.Contract.UpdateAVSMetadataURI(&_AVSDirectoryStorage.TransactOpts, metadataURI) +} + +// AVSDirectoryStorageAVSMetadataURIUpdatedIterator is returned from FilterAVSMetadataURIUpdated and is used to iterate over the raw logs and unpacked data for AVSMetadataURIUpdated events raised by the AVSDirectoryStorage contract. +type AVSDirectoryStorageAVSMetadataURIUpdatedIterator struct { + Event *AVSDirectoryStorageAVSMetadataURIUpdated // Event containing the contract specifics 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 *AVSDirectoryStorageAVSMetadataURIUpdatedIterator) 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(AVSDirectoryStorageAVSMetadataURIUpdated) + 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(AVSDirectoryStorageAVSMetadataURIUpdated) + 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 *AVSDirectoryStorageAVSMetadataURIUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AVSDirectoryStorageAVSMetadataURIUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AVSDirectoryStorageAVSMetadataURIUpdated represents a AVSMetadataURIUpdated event raised by the AVSDirectoryStorage contract. +type AVSDirectoryStorageAVSMetadataURIUpdated 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 (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) FilterAVSMetadataURIUpdated(opts *bind.FilterOpts, avs []common.Address) (*AVSDirectoryStorageAVSMetadataURIUpdatedIterator, error) { + + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _AVSDirectoryStorage.contract.FilterLogs(opts, "AVSMetadataURIUpdated", avsRule) + if err != nil { + return nil, err + } + return &AVSDirectoryStorageAVSMetadataURIUpdatedIterator{contract: _AVSDirectoryStorage.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 (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) WatchAVSMetadataURIUpdated(opts *bind.WatchOpts, sink chan<- *AVSDirectoryStorageAVSMetadataURIUpdated, avs []common.Address) (event.Subscription, error) { + + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _AVSDirectoryStorage.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(AVSDirectoryStorageAVSMetadataURIUpdated) + if err := _AVSDirectoryStorage.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 (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) ParseAVSMetadataURIUpdated(log types.Log) (*AVSDirectoryStorageAVSMetadataURIUpdated, error) { + event := new(AVSDirectoryStorageAVSMetadataURIUpdated) + if err := _AVSDirectoryStorage.contract.UnpackLog(event, "AVSMetadataURIUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator is returned from FilterOperatorAVSRegistrationStatusUpdated and is used to iterate over the raw logs and unpacked data for OperatorAVSRegistrationStatusUpdated events raised by the AVSDirectoryStorage contract. +type AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator struct { + Event *AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated // Event containing the contract specifics 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 *AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator) 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(AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated) + 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(AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated) + 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 *AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated represents a OperatorAVSRegistrationStatusUpdated event raised by the AVSDirectoryStorage contract. +type AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated struct { + Operator common.Address + Avs common.Address + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorAVSRegistrationStatusUpdated is a free log retrieval operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// +// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) FilterOperatorAVSRegistrationStatusUpdated(opts *bind.FilterOpts, operator []common.Address, avs []common.Address) (*AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _AVSDirectoryStorage.contract.FilterLogs(opts, "OperatorAVSRegistrationStatusUpdated", operatorRule, avsRule) + if err != nil { + return nil, err + } + return &AVSDirectoryStorageOperatorAVSRegistrationStatusUpdatedIterator{contract: _AVSDirectoryStorage.contract, event: "OperatorAVSRegistrationStatusUpdated", logs: logs, sub: sub}, nil +} + +// WatchOperatorAVSRegistrationStatusUpdated is a free log subscription operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// +// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) WatchOperatorAVSRegistrationStatusUpdated(opts *bind.WatchOpts, sink chan<- *AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated, operator []common.Address, avs []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _AVSDirectoryStorage.contract.WatchLogs(opts, "OperatorAVSRegistrationStatusUpdated", operatorRule, avsRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated) + if err := _AVSDirectoryStorage.contract.UnpackLog(event, "OperatorAVSRegistrationStatusUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorAVSRegistrationStatusUpdated is a log parse operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// +// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) +func (_AVSDirectoryStorage *AVSDirectoryStorageFilterer) ParseOperatorAVSRegistrationStatusUpdated(log types.Log) (*AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated, error) { + event := new(AVSDirectoryStorageOperatorAVSRegistrationStatusUpdated) + if err := _AVSDirectoryStorage.contract.UnpackLog(event, "OperatorAVSRegistrationStatusUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/AVSDirectoryStorage/tmp.abi b/pkg/bindings/AVSDirectoryStorage/tmp.abi new file mode 100644 index 000000000..ad466ac0a --- /dev/null +++ b/pkg/bindings/AVSDirectoryStorage/tmp.abi @@ -0,0 +1,228 @@ +[ + { + "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": "enum IAVSDirectory.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": "delegation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "deregisterOperatorFromAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "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": "registerOperatorToAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorSignature", + "type": "tuple", + "internalType": "struct ISignatureUtils.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": "enum IAVSDirectory.OperatorAVSRegistrationStatus" + } + ], + "anonymous": false + } +] diff --git a/pkg/bindings/AVSDirectoryStorage/tmp.bin b/pkg/bindings/AVSDirectoryStorage/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/AVSDirectoryStorage/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/BeaconChainProofs/binding.go b/pkg/bindings/BeaconChainProofs/binding.go new file mode 100644 index 000000000..d6374d4fd --- /dev/null +++ b/pkg/bindings/BeaconChainProofs/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 BeaconChainProofs + +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 +) + +// BeaconChainProofsMetaData contains all meta data concerning the BeaconChainProofs contract. +var BeaconChainProofsMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a81747ea880a82c0a4f4c01180d0f9ef199dd3f3290157f797791cf5a75b86d364736f6c634300080c0033", +} + +// BeaconChainProofsABI is the input ABI used to generate the binding from. +// Deprecated: Use BeaconChainProofsMetaData.ABI instead. +var BeaconChainProofsABI = BeaconChainProofsMetaData.ABI + +// BeaconChainProofsBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use BeaconChainProofsMetaData.Bin instead. +var BeaconChainProofsBin = BeaconChainProofsMetaData.Bin + +// DeployBeaconChainProofs deploys a new Ethereum contract, binding an instance of BeaconChainProofs to it. +func DeployBeaconChainProofs(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BeaconChainProofs, error) { + parsed, err := BeaconChainProofsMetaData.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(BeaconChainProofsBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &BeaconChainProofs{BeaconChainProofsCaller: BeaconChainProofsCaller{contract: contract}, BeaconChainProofsTransactor: BeaconChainProofsTransactor{contract: contract}, BeaconChainProofsFilterer: BeaconChainProofsFilterer{contract: contract}}, nil +} + +// BeaconChainProofs is an auto generated Go binding around an Ethereum contract. +type BeaconChainProofs struct { + BeaconChainProofsCaller // Read-only binding to the contract + BeaconChainProofsTransactor // Write-only binding to the contract + BeaconChainProofsFilterer // Log filterer for contract events +} + +// BeaconChainProofsCaller is an auto generated read-only Go binding around an Ethereum contract. +type BeaconChainProofsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BeaconChainProofsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type BeaconChainProofsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BeaconChainProofsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type BeaconChainProofsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BeaconChainProofsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type BeaconChainProofsSession struct { + Contract *BeaconChainProofs // 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 +} + +// BeaconChainProofsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type BeaconChainProofsCallerSession struct { + Contract *BeaconChainProofsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// BeaconChainProofsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type BeaconChainProofsTransactorSession struct { + Contract *BeaconChainProofsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BeaconChainProofsRaw is an auto generated low-level Go binding around an Ethereum contract. +type BeaconChainProofsRaw struct { + Contract *BeaconChainProofs // Generic contract binding to access the raw methods on +} + +// BeaconChainProofsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type BeaconChainProofsCallerRaw struct { + Contract *BeaconChainProofsCaller // Generic read-only contract binding to access the raw methods on +} + +// BeaconChainProofsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type BeaconChainProofsTransactorRaw struct { + Contract *BeaconChainProofsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewBeaconChainProofs creates a new instance of BeaconChainProofs, bound to a specific deployed contract. +func NewBeaconChainProofs(address common.Address, backend bind.ContractBackend) (*BeaconChainProofs, error) { + contract, err := bindBeaconChainProofs(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &BeaconChainProofs{BeaconChainProofsCaller: BeaconChainProofsCaller{contract: contract}, BeaconChainProofsTransactor: BeaconChainProofsTransactor{contract: contract}, BeaconChainProofsFilterer: BeaconChainProofsFilterer{contract: contract}}, nil +} + +// NewBeaconChainProofsCaller creates a new read-only instance of BeaconChainProofs, bound to a specific deployed contract. +func NewBeaconChainProofsCaller(address common.Address, caller bind.ContractCaller) (*BeaconChainProofsCaller, error) { + contract, err := bindBeaconChainProofs(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &BeaconChainProofsCaller{contract: contract}, nil +} + +// NewBeaconChainProofsTransactor creates a new write-only instance of BeaconChainProofs, bound to a specific deployed contract. +func NewBeaconChainProofsTransactor(address common.Address, transactor bind.ContractTransactor) (*BeaconChainProofsTransactor, error) { + contract, err := bindBeaconChainProofs(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &BeaconChainProofsTransactor{contract: contract}, nil +} + +// NewBeaconChainProofsFilterer creates a new log filterer instance of BeaconChainProofs, bound to a specific deployed contract. +func NewBeaconChainProofsFilterer(address common.Address, filterer bind.ContractFilterer) (*BeaconChainProofsFilterer, error) { + contract, err := bindBeaconChainProofs(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &BeaconChainProofsFilterer{contract: contract}, nil +} + +// bindBeaconChainProofs binds a generic wrapper to an already deployed contract. +func bindBeaconChainProofs(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BeaconChainProofsMetaData.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 (_BeaconChainProofs *BeaconChainProofsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BeaconChainProofs.Contract.BeaconChainProofsCaller.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 (_BeaconChainProofs *BeaconChainProofsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BeaconChainProofs.Contract.BeaconChainProofsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BeaconChainProofs *BeaconChainProofsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BeaconChainProofs.Contract.BeaconChainProofsTransactor.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 (_BeaconChainProofs *BeaconChainProofsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BeaconChainProofs.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 (_BeaconChainProofs *BeaconChainProofsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BeaconChainProofs.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BeaconChainProofs *BeaconChainProofsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BeaconChainProofs.Contract.contract.Transact(opts, method, params...) +} diff --git a/pkg/bindings/BeaconChainProofs/tmp.abi b/pkg/bindings/BeaconChainProofs/tmp.abi new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/pkg/bindings/BeaconChainProofs/tmp.abi @@ -0,0 +1 @@ +[] diff --git a/pkg/bindings/BeaconChainProofs/tmp.bin b/pkg/bindings/BeaconChainProofs/tmp.bin new file mode 100644 index 000000000..a6e0b284e --- /dev/null +++ b/pkg/bindings/BeaconChainProofs/tmp.bin @@ -0,0 +1 @@ +0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a81747ea880a82c0a4f4c01180d0f9ef199dd3f3290157f797791cf5a75b86d364736f6c634300080c0033 diff --git a/pkg/bindings/BytesLib/binding.go b/pkg/bindings/BytesLib/binding.go new file mode 100644 index 000000000..16d900855 --- /dev/null +++ b/pkg/bindings/BytesLib/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 BytesLib + +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 +) + +// BytesLibMetaData contains all meta data concerning the BytesLib contract. +var BytesLibMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205a42c27fc21ca253944211273e2788278254322b204b0f0705d0a813e941728e64736f6c634300080c0033", +} + +// BytesLibABI is the input ABI used to generate the binding from. +// Deprecated: Use BytesLibMetaData.ABI instead. +var BytesLibABI = BytesLibMetaData.ABI + +// BytesLibBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use BytesLibMetaData.Bin instead. +var BytesLibBin = BytesLibMetaData.Bin + +// DeployBytesLib deploys a new Ethereum contract, binding an instance of BytesLib to it. +func DeployBytesLib(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BytesLib, error) { + parsed, err := BytesLibMetaData.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(BytesLibBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &BytesLib{BytesLibCaller: BytesLibCaller{contract: contract}, BytesLibTransactor: BytesLibTransactor{contract: contract}, BytesLibFilterer: BytesLibFilterer{contract: contract}}, nil +} + +// BytesLib is an auto generated Go binding around an Ethereum contract. +type BytesLib struct { + BytesLibCaller // Read-only binding to the contract + BytesLibTransactor // Write-only binding to the contract + BytesLibFilterer // Log filterer for contract events +} + +// BytesLibCaller is an auto generated read-only Go binding around an Ethereum contract. +type BytesLibCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BytesLibTransactor is an auto generated write-only Go binding around an Ethereum contract. +type BytesLibTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BytesLibFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type BytesLibFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// BytesLibSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type BytesLibSession struct { + Contract *BytesLib // 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 +} + +// BytesLibCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type BytesLibCallerSession struct { + Contract *BytesLibCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// BytesLibTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type BytesLibTransactorSession struct { + Contract *BytesLibTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// BytesLibRaw is an auto generated low-level Go binding around an Ethereum contract. +type BytesLibRaw struct { + Contract *BytesLib // Generic contract binding to access the raw methods on +} + +// BytesLibCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type BytesLibCallerRaw struct { + Contract *BytesLibCaller // Generic read-only contract binding to access the raw methods on +} + +// BytesLibTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type BytesLibTransactorRaw struct { + Contract *BytesLibTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewBytesLib creates a new instance of BytesLib, bound to a specific deployed contract. +func NewBytesLib(address common.Address, backend bind.ContractBackend) (*BytesLib, error) { + contract, err := bindBytesLib(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &BytesLib{BytesLibCaller: BytesLibCaller{contract: contract}, BytesLibTransactor: BytesLibTransactor{contract: contract}, BytesLibFilterer: BytesLibFilterer{contract: contract}}, nil +} + +// NewBytesLibCaller creates a new read-only instance of BytesLib, bound to a specific deployed contract. +func NewBytesLibCaller(address common.Address, caller bind.ContractCaller) (*BytesLibCaller, error) { + contract, err := bindBytesLib(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &BytesLibCaller{contract: contract}, nil +} + +// NewBytesLibTransactor creates a new write-only instance of BytesLib, bound to a specific deployed contract. +func NewBytesLibTransactor(address common.Address, transactor bind.ContractTransactor) (*BytesLibTransactor, error) { + contract, err := bindBytesLib(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &BytesLibTransactor{contract: contract}, nil +} + +// NewBytesLibFilterer creates a new log filterer instance of BytesLib, bound to a specific deployed contract. +func NewBytesLibFilterer(address common.Address, filterer bind.ContractFilterer) (*BytesLibFilterer, error) { + contract, err := bindBytesLib(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &BytesLibFilterer{contract: contract}, nil +} + +// bindBytesLib binds a generic wrapper to an already deployed contract. +func bindBytesLib(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := BytesLibMetaData.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 (_BytesLib *BytesLibRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BytesLib.Contract.BytesLibCaller.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 (_BytesLib *BytesLibRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BytesLib.Contract.BytesLibTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BytesLib *BytesLibRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BytesLib.Contract.BytesLibTransactor.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 (_BytesLib *BytesLibCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _BytesLib.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 (_BytesLib *BytesLibTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _BytesLib.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_BytesLib *BytesLibTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _BytesLib.Contract.contract.Transact(opts, method, params...) +} diff --git a/pkg/bindings/BytesLib/tmp.abi b/pkg/bindings/BytesLib/tmp.abi new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/pkg/bindings/BytesLib/tmp.abi @@ -0,0 +1 @@ +[] diff --git a/pkg/bindings/BytesLib/tmp.bin b/pkg/bindings/BytesLib/tmp.bin new file mode 100644 index 000000000..1179346f1 --- /dev/null +++ b/pkg/bindings/BytesLib/tmp.bin @@ -0,0 +1 @@ +0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205a42c27fc21ca253944211273e2788278254322b204b0f0705d0a813e941728e64736f6c634300080c0033 diff --git a/pkg/bindings/DelayedWithdrawalRouter/binding.go b/pkg/bindings/DelayedWithdrawalRouter/binding.go new file mode 100644 index 000000000..56216139a --- /dev/null +++ b/pkg/bindings/DelayedWithdrawalRouter/binding.go @@ -0,0 +1,1969 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package DelayedWithdrawalRouter + +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 +) + +// IDelayedWithdrawalRouterDelayedWithdrawal is an auto generated low-level Go binding around an user-defined struct. +type IDelayedWithdrawalRouterDelayedWithdrawal struct { + Amount *big.Int + BlockCreated uint32 +} + +// IDelayedWithdrawalRouterUserDelayedWithdrawals is an auto generated low-level Go binding around an user-defined struct. +type IDelayedWithdrawalRouterUserDelayedWithdrawals struct { + DelayedWithdrawalsCompleted *big.Int + DelayedWithdrawals []IDelayedWithdrawalRouterDelayedWithdrawal +} + +// DelayedWithdrawalRouterMetaData contains all meta data concerning the DelayedWithdrawalRouter contract. +var DelayedWithdrawalRouterMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"MAX_WITHDRAWAL_DELAY_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"canClaimDelayedWithdrawal\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimDelayedWithdrawals\",\"inputs\":[{\"name\":\"maxNumberOfDelayedWithdrawalsToClaim\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"claimDelayedWithdrawals\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxNumberOfDelayedWithdrawalsToClaim\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createDelayedWithdrawal\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getClaimableUserDelayedWithdrawals\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIDelayedWithdrawalRouter.DelayedWithdrawal[]\",\"components\":[{\"name\":\"amount\",\"type\":\"uint224\",\"internalType\":\"uint224\"},{\"name\":\"blockCreated\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getUserDelayedWithdrawals\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIDelayedWithdrawalRouter.DelayedWithdrawal[]\",\"components\":[{\"name\":\"amount\",\"type\":\"uint224\",\"internalType\":\"uint224\"},{\"name\":\"blockCreated\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_withdrawalDelayBlocks\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setWithdrawalDelayBlocks\",\"inputs\":[{\"name\":\"newValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"userDelayedWithdrawalByIndex\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIDelayedWithdrawalRouter.DelayedWithdrawal\",\"components\":[{\"name\":\"amount\",\"type\":\"uint224\",\"internalType\":\"uint224\"},{\"name\":\"blockCreated\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"userWithdrawals\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIDelayedWithdrawalRouter.UserDelayedWithdrawals\",\"components\":[{\"name\":\"delayedWithdrawalsCompleted\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"delayedWithdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelayedWithdrawalRouter.DelayedWithdrawal[]\",\"components\":[{\"name\":\"amount\",\"type\":\"uint224\",\"internalType\":\"uint224\"},{\"name\":\"blockCreated\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"userWithdrawalsLength\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawalDelayBlocks\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"DelayedWithdrawalCreated\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"index\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelayedWithdrawalsClaimed\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amountClaimed\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"delayedWithdrawalsCompleted\",\"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\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalDelayBlocksSet\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", + Bin: "0x60a06040523480156200001157600080fd5b5060405162001f0e38038062001f0e8339810160408190526200003491620001a8565b6001600160a01b038116620000cb5760405162461bcd60e51b815260206004820152604c60248201527f44656c617965645769746864726177616c526f757465722e636f6e737472756360448201527f746f723a205f656967656e506f644d616e616765722063616e6e6f742062652060648201526b7a65726f206164647265737360a01b608482015260a4015b60405180910390fd5b6001600160a01b038116608052620000e2620000e9565b50620001da565b600054610100900460ff1615620001535760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401620000c2565b60005460ff9081161015620001a6576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b600060208284031215620001bb57600080fd5b81516001600160a01b0381168114620001d357600080fd5b9392505050565b608051611d11620001fd600039600081816101fa0152610c000152611d116000f3fe60806040526004361061014b5760003560e01c806385594e58116100b6578063e4f4f8871161006f578063e4f4f887146103cc578063e5db06c014610405578063eb990c5914610425578063ecb7cb1b14610445578063f2fde38b14610472578063fabc1cbc1461049257600080fd5b806385594e5814610317578063886f1195146103445780638da5cb5b14610364578063c0db354c14610382578063ca661c0414610395578063d44e1b76146103ac57600080fd5b806350f73e7c1161010857806350f73e7c14610254578063595c6a67146102785780635ac86ab71461028d5780635c975abb146102cd578063715018a6146102e257806375608896146102f757600080fd5b806310d67a2f14610150578063136439dd146101725780631f39d87f146101925780633e1de008146101c85780634665bcda146101e85780634d50f9a414610234575b600080fd5b34801561015c57600080fd5b5061017061016b36600461196d565b6104b2565b005b34801561017e57600080fd5b5061017061018d366004611991565b61056e565b34801561019e57600080fd5b506101b26101ad36600461196d565b6106ad565b6040516101bf91906119c8565b60405180910390f35b3480156101d457600080fd5b506101b26101e336600461196d565b6108a8565b3480156101f457600080fd5b5061021c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101bf565b34801561024057600080fd5b5061017061024f366004611991565b6109ee565b34801561026057600080fd5b5061026a60c95481565b6040519081526020016101bf565b34801561028457600080fd5b506101706109ff565b34801561029957600080fd5b506102bd6102a8366004611a15565b609854600160ff9092169190911b9081161490565b60405190151581526020016101bf565b3480156102d957600080fd5b5060985461026a565b3480156102ee57600080fd5b50610170610ac6565b34801561030357600080fd5b506102bd610312366004611a38565b610ada565b34801561032357600080fd5b50610337610332366004611a38565b610b5d565b6040516101bf9190611a64565b34801561035057600080fd5b5060975461021c906001600160a01b031681565b34801561037057600080fd5b506033546001600160a01b031661021c565b610170610390366004611a72565b610bdd565b3480156103a157600080fd5b5061026a62034bc081565b3480156103b857600080fd5b506101706103c7366004611991565b610e9d565b3480156103d857600080fd5b5061026a6103e736600461196d565b6001600160a01b0316600090815260ca602052604090206001015490565b34801561041157600080fd5b50610170610420366004611a38565b610f31565b34801561043157600080fd5b50610170610440366004611aab565b610fc6565b34801561045157600080fd5b5061046561046036600461196d565b6110ee565b6040516101bf9190611af1565b34801561047e57600080fd5b5061017061048d36600461196d565b6111a8565b34801561049e57600080fd5b506101706104ad366004611991565b61121e565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105299190611b47565b6001600160a01b0316336001600160a01b0316146105625760405162461bcd60e51b815260040161055990611b64565b60405180910390fd5b61056b8161137a565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da9190611bae565b6105f65760405162461bcd60e51b815260040161055990611bd0565b6098548181161461066f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926106da8383611c2e565b90508060005b82811015610786576001600160a01b038716600090815260ca6020526040812060010161070d8388611c45565b8154811061071d5761071d611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061076391611c45565b4310156107735781925050610786565b508061077e81611c73565b9150506106e0565b508060008167ffffffffffffffff8111156107a3576107a3611c8e565b6040519080825280602002602001820160405280156107e857816020015b60408051808201909152600080825260208201528152602001906001900390816107c15790505b509050811561089d5760005b8281101561089b576001600160a01b038916600090815260ca602052604090206001016108218289611c45565b8154811061083157610831611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810191909152825183908390811061087d5761087d611c5d565b6020026020010181905250808061089390611c73565b9150506107f4565b505b979650505050505050565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926108d58383611c2e565b905060008167ffffffffffffffff8111156108f2576108f2611c8e565b60405190808252806020026020018201604052801561093757816020015b60408051808201909152600080825260208201528152602001906001900390816109105790505b50905060005b828110156109e4576001600160a01b038716600090815260ca6020526040902060010161096a8287611c45565b8154811061097a5761097a611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff169181019190915282518390839081106109c6576109c6611c5d565b602002602001018190525080806109dc90611c73565b91505061093d565b5095945050505050565b6109f6611471565b61056b816114cb565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6b9190611bae565b610a875760405162461bcd60e51b815260040161055990611bd0565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610ace611471565b610ad86000611593565b565b6001600160a01b038216600090815260ca60205260408120548210801590610b54575060c9546001600160a01b038416600090815260ca60205260409020600101805484908110610b2d57610b2d611c5d565b600091825260209091200154610b509190600160e01b900463ffffffff16611c45565b4310155b90505b92915050565b60408051808201909152600080825260208201526001600160a01b038316600090815260ca60205260409020600101805483908110610b9e57610b9e611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff16918101919091529392505050565b60405163a38406a360e01b81526001600160a01b038084166004830152839133917f0000000000000000000000000000000000000000000000000000000000000000169063a38406a390602401602060405180830381865afa158015610c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6b9190611b47565b6001600160a01b031614610ce75760405162461bcd60e51b815260206004820152603d60248201527f44656c617965645769746864726177616c526f757465722e6f6e6c794569676560448201527f6e506f643a206e6f7420706f644f776e6572277320456967656e506f640000006064820152608401610559565b60985460009060019081161415610d105760405162461bcd60e51b815260040161055990611ca4565b6001600160a01b038316610da65760405162461bcd60e51b815260206004820152605160248201527f44656c617965645769746864726177616c526f757465722e637265617465446560448201527f6c617965645769746864726177616c3a20726563697069656e742063616e6e6f60648201527074206265207a65726f206164647265737360781b608482015260a401610559565b346001600160e01b03811615610e96576040805180820182526001600160e01b03808416825263ffffffff43811660208085019182526001600160a01b038a16600081815260ca8352968720600190810180548083018255818a5293892088519551909616600160e01b029490961693909317939091019290925593525490917fb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f5991889188918691610e5791611c2e565b604080516001600160a01b0395861681529490931660208501526001600160e01b039091169183019190915260608201526080015b60405180910390a1505b5050505050565b60026065541415610ef05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b600260655560985460009060019081161415610f1e5760405162461bcd60e51b815260040161055990611ca4565b610f2833836115e5565b50506001606555565b60026065541415610f845760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b600260655560985460009060019081161415610fb25760405162461bcd60e51b815260040161055990611ca4565b610fbc83836115e5565b5050600160655550565b600054610100900460ff1615808015610fe65750600054600160ff909116105b806110005750303b158015611000575060005460ff166001145b6110635760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610559565b6000805460ff191660011790558015611086576000805461ff0019166101001790555b61108f85611593565b6110998484611750565b6110a2826114cb565b8015610e96576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6040805180820190915260008152606060208201526001600160a01b038216600090815260ca6020908152604080832081518083018352815481526001820180548451818702810187019095528085529195929486810194939192919084015b8282101561119a57600084815260209081902060408051808201909152908401546001600160e01b0381168252600160e01b900463ffffffff168183015282526001909201910161114e565b505050915250909392505050565b6111b0611471565b6001600160a01b0381166112155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610559565b61056b81611593565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611271573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112959190611b47565b6001600160a01b0316336001600160a01b0316146112c55760405162461bcd60e51b815260040161055990611b64565b6098541981196098541916146113435760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016106a2565b6001600160a01b0381166114085760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610559565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314610ad85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610559565b62034bc08111156115525760405162461bcd60e51b815260206004820152604560248201527f44656c617965645769746864726177616c526f757465722e5f7365745769746860448201527f64726177616c44656c6179426c6f636b733a206e657756616c756520746f6f206064820152646c6172676560d81b608482015260a401610559565b60c95460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a160c955565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600090815260ca602052604081208054600190910154825b848110801561161e57508161161c8285611c45565b105b156116cb576001600160a01b038616600090815260ca602052604081206001016116488386611c45565b8154811061165857611658611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061169e91611c45565b4310156116ab57506116cb565b80516116c0906001600160e01b031686611c45565b945050600101611607565b6116d58184611c45565b6001600160a01b038716600090815260ca602052604090205583156116fe576116fe868561183a565b7f6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb0943868561172b8487611c45565b604080516001600160a01b039094168452602084019290925290820152606001610e8c565b6097546001600160a01b031615801561177157506001600160a01b03821615155b6117f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26118368261137a565b5050565b8047101561188a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610559565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118d7576040519150601f19603f3d011682016040523d82523d6000602084013e6118dc565b606091505b50509050806119535760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610559565b505050565b6001600160a01b038116811461056b57600080fd5b60006020828403121561197f57600080fd5b813561198a81611958565b9392505050565b6000602082840312156119a357600080fd5b5035919050565b80516001600160e01b0316825260209081015163ffffffff16910152565b602080825282518282018190526000919060409081850190868401855b82811015611a08576119f88483516119aa565b92840192908501906001016119e5565b5091979650505050505050565b600060208284031215611a2757600080fd5b813560ff8116811461198a57600080fd5b60008060408385031215611a4b57600080fd5b8235611a5681611958565b946020939093013593505050565b60408101610b5782846119aa565b60008060408385031215611a8557600080fd5b8235611a9081611958565b91506020830135611aa081611958565b809150509250929050565b60008060008060808587031215611ac157600080fd5b8435611acc81611958565b93506020850135611adc81611958565b93969395505050506040820135916060013590565b602080825282518282015282810151604080840181905281516060850181905260009392830191849160808701905b8084101561089b57611b338286516119aa565b938501936001939093019290820190611b20565b600060208284031215611b5957600080fd5b815161198a81611958565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611bc057600080fd5b8151801515811461198a57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082821015611c4057611c40611c18565b500390565b60008219821115611c5857611c58611c18565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415611c8757611c87611c18565b5060010190565b634e487b7160e01b600052604160045260246000fd5b60208082526019908201527f5061757361626c653a20696e646578206973207061757365640000000000000060408201526060019056fea26469706673582212204d034cf38e6f52eeeeee18bdeaaabb4e2c786993ce058ddff212f92f634d302a64736f6c634300080c0033", +} + +// DelayedWithdrawalRouterABI is the input ABI used to generate the binding from. +// Deprecated: Use DelayedWithdrawalRouterMetaData.ABI instead. +var DelayedWithdrawalRouterABI = DelayedWithdrawalRouterMetaData.ABI + +// DelayedWithdrawalRouterBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use DelayedWithdrawalRouterMetaData.Bin instead. +var DelayedWithdrawalRouterBin = DelayedWithdrawalRouterMetaData.Bin + +// DeployDelayedWithdrawalRouter deploys a new Ethereum contract, binding an instance of DelayedWithdrawalRouter to it. +func DeployDelayedWithdrawalRouter(auth *bind.TransactOpts, backend bind.ContractBackend, _eigenPodManager common.Address) (common.Address, *types.Transaction, *DelayedWithdrawalRouter, error) { + parsed, err := DelayedWithdrawalRouterMetaData.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(DelayedWithdrawalRouterBin), backend, _eigenPodManager) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &DelayedWithdrawalRouter{DelayedWithdrawalRouterCaller: DelayedWithdrawalRouterCaller{contract: contract}, DelayedWithdrawalRouterTransactor: DelayedWithdrawalRouterTransactor{contract: contract}, DelayedWithdrawalRouterFilterer: DelayedWithdrawalRouterFilterer{contract: contract}}, nil +} + +// DelayedWithdrawalRouter is an auto generated Go binding around an Ethereum contract. +type DelayedWithdrawalRouter struct { + DelayedWithdrawalRouterCaller // Read-only binding to the contract + DelayedWithdrawalRouterTransactor // Write-only binding to the contract + DelayedWithdrawalRouterFilterer // Log filterer for contract events +} + +// DelayedWithdrawalRouterCaller is an auto generated read-only Go binding around an Ethereum contract. +type DelayedWithdrawalRouterCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DelayedWithdrawalRouterTransactor is an auto generated write-only Go binding around an Ethereum contract. +type DelayedWithdrawalRouterTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DelayedWithdrawalRouterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type DelayedWithdrawalRouterFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DelayedWithdrawalRouterSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type DelayedWithdrawalRouterSession struct { + Contract *DelayedWithdrawalRouter // 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 +} + +// DelayedWithdrawalRouterCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type DelayedWithdrawalRouterCallerSession struct { + Contract *DelayedWithdrawalRouterCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// DelayedWithdrawalRouterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type DelayedWithdrawalRouterTransactorSession struct { + Contract *DelayedWithdrawalRouterTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// DelayedWithdrawalRouterRaw is an auto generated low-level Go binding around an Ethereum contract. +type DelayedWithdrawalRouterRaw struct { + Contract *DelayedWithdrawalRouter // Generic contract binding to access the raw methods on +} + +// DelayedWithdrawalRouterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type DelayedWithdrawalRouterCallerRaw struct { + Contract *DelayedWithdrawalRouterCaller // Generic read-only contract binding to access the raw methods on +} + +// DelayedWithdrawalRouterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type DelayedWithdrawalRouterTransactorRaw struct { + Contract *DelayedWithdrawalRouterTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewDelayedWithdrawalRouter creates a new instance of DelayedWithdrawalRouter, bound to a specific deployed contract. +func NewDelayedWithdrawalRouter(address common.Address, backend bind.ContractBackend) (*DelayedWithdrawalRouter, error) { + contract, err := bindDelayedWithdrawalRouter(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &DelayedWithdrawalRouter{DelayedWithdrawalRouterCaller: DelayedWithdrawalRouterCaller{contract: contract}, DelayedWithdrawalRouterTransactor: DelayedWithdrawalRouterTransactor{contract: contract}, DelayedWithdrawalRouterFilterer: DelayedWithdrawalRouterFilterer{contract: contract}}, nil +} + +// NewDelayedWithdrawalRouterCaller creates a new read-only instance of DelayedWithdrawalRouter, bound to a specific deployed contract. +func NewDelayedWithdrawalRouterCaller(address common.Address, caller bind.ContractCaller) (*DelayedWithdrawalRouterCaller, error) { + contract, err := bindDelayedWithdrawalRouter(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &DelayedWithdrawalRouterCaller{contract: contract}, nil +} + +// NewDelayedWithdrawalRouterTransactor creates a new write-only instance of DelayedWithdrawalRouter, bound to a specific deployed contract. +func NewDelayedWithdrawalRouterTransactor(address common.Address, transactor bind.ContractTransactor) (*DelayedWithdrawalRouterTransactor, error) { + contract, err := bindDelayedWithdrawalRouter(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &DelayedWithdrawalRouterTransactor{contract: contract}, nil +} + +// NewDelayedWithdrawalRouterFilterer creates a new log filterer instance of DelayedWithdrawalRouter, bound to a specific deployed contract. +func NewDelayedWithdrawalRouterFilterer(address common.Address, filterer bind.ContractFilterer) (*DelayedWithdrawalRouterFilterer, error) { + contract, err := bindDelayedWithdrawalRouter(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &DelayedWithdrawalRouterFilterer{contract: contract}, nil +} + +// bindDelayedWithdrawalRouter binds a generic wrapper to an already deployed contract. +func bindDelayedWithdrawalRouter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := DelayedWithdrawalRouterMetaData.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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _DelayedWithdrawalRouter.Contract.DelayedWithdrawalRouterCaller.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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.DelayedWithdrawalRouterTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.DelayedWithdrawalRouterTransactor.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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _DelayedWithdrawalRouter.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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.contract.Transact(opts, method, params...) +} + +// MAXWITHDRAWALDELAYBLOCKS is a free data retrieval call binding the contract method 0xca661c04. +// +// Solidity: function MAX_WITHDRAWAL_DELAY_BLOCKS() view returns(uint256) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCaller) MAXWITHDRAWALDELAYBLOCKS(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _DelayedWithdrawalRouter.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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) MAXWITHDRAWALDELAYBLOCKS() (*big.Int, error) { + return _DelayedWithdrawalRouter.Contract.MAXWITHDRAWALDELAYBLOCKS(&_DelayedWithdrawalRouter.CallOpts) +} + +// MAXWITHDRAWALDELAYBLOCKS is a free data retrieval call binding the contract method 0xca661c04. +// +// Solidity: function MAX_WITHDRAWAL_DELAY_BLOCKS() view returns(uint256) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCallerSession) MAXWITHDRAWALDELAYBLOCKS() (*big.Int, error) { + return _DelayedWithdrawalRouter.Contract.MAXWITHDRAWALDELAYBLOCKS(&_DelayedWithdrawalRouter.CallOpts) +} + +// CanClaimDelayedWithdrawal is a free data retrieval call binding the contract method 0x75608896. +// +// Solidity: function canClaimDelayedWithdrawal(address user, uint256 index) view returns(bool) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCaller) CanClaimDelayedWithdrawal(opts *bind.CallOpts, user common.Address, index *big.Int) (bool, error) { + var out []interface{} + err := _DelayedWithdrawalRouter.contract.Call(opts, &out, "canClaimDelayedWithdrawal", user, index) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// CanClaimDelayedWithdrawal is a free data retrieval call binding the contract method 0x75608896. +// +// Solidity: function canClaimDelayedWithdrawal(address user, uint256 index) view returns(bool) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) CanClaimDelayedWithdrawal(user common.Address, index *big.Int) (bool, error) { + return _DelayedWithdrawalRouter.Contract.CanClaimDelayedWithdrawal(&_DelayedWithdrawalRouter.CallOpts, user, index) +} + +// CanClaimDelayedWithdrawal is a free data retrieval call binding the contract method 0x75608896. +// +// Solidity: function canClaimDelayedWithdrawal(address user, uint256 index) view returns(bool) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCallerSession) CanClaimDelayedWithdrawal(user common.Address, index *big.Int) (bool, error) { + return _DelayedWithdrawalRouter.Contract.CanClaimDelayedWithdrawal(&_DelayedWithdrawalRouter.CallOpts, user, index) +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCaller) EigenPodManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _DelayedWithdrawalRouter.contract.Call(opts, &out, "eigenPodManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) EigenPodManager() (common.Address, error) { + return _DelayedWithdrawalRouter.Contract.EigenPodManager(&_DelayedWithdrawalRouter.CallOpts) +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCallerSession) EigenPodManager() (common.Address, error) { + return _DelayedWithdrawalRouter.Contract.EigenPodManager(&_DelayedWithdrawalRouter.CallOpts) +} + +// GetClaimableUserDelayedWithdrawals is a free data retrieval call binding the contract method 0x1f39d87f. +// +// Solidity: function getClaimableUserDelayedWithdrawals(address user) view returns((uint224,uint32)[]) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCaller) GetClaimableUserDelayedWithdrawals(opts *bind.CallOpts, user common.Address) ([]IDelayedWithdrawalRouterDelayedWithdrawal, error) { + var out []interface{} + err := _DelayedWithdrawalRouter.contract.Call(opts, &out, "getClaimableUserDelayedWithdrawals", user) + + if err != nil { + return *new([]IDelayedWithdrawalRouterDelayedWithdrawal), err + } + + out0 := *abi.ConvertType(out[0], new([]IDelayedWithdrawalRouterDelayedWithdrawal)).(*[]IDelayedWithdrawalRouterDelayedWithdrawal) + + return out0, err + +} + +// GetClaimableUserDelayedWithdrawals is a free data retrieval call binding the contract method 0x1f39d87f. +// +// Solidity: function getClaimableUserDelayedWithdrawals(address user) view returns((uint224,uint32)[]) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) GetClaimableUserDelayedWithdrawals(user common.Address) ([]IDelayedWithdrawalRouterDelayedWithdrawal, error) { + return _DelayedWithdrawalRouter.Contract.GetClaimableUserDelayedWithdrawals(&_DelayedWithdrawalRouter.CallOpts, user) +} + +// GetClaimableUserDelayedWithdrawals is a free data retrieval call binding the contract method 0x1f39d87f. +// +// Solidity: function getClaimableUserDelayedWithdrawals(address user) view returns((uint224,uint32)[]) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCallerSession) GetClaimableUserDelayedWithdrawals(user common.Address) ([]IDelayedWithdrawalRouterDelayedWithdrawal, error) { + return _DelayedWithdrawalRouter.Contract.GetClaimableUserDelayedWithdrawals(&_DelayedWithdrawalRouter.CallOpts, user) +} + +// GetUserDelayedWithdrawals is a free data retrieval call binding the contract method 0x3e1de008. +// +// Solidity: function getUserDelayedWithdrawals(address user) view returns((uint224,uint32)[]) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCaller) GetUserDelayedWithdrawals(opts *bind.CallOpts, user common.Address) ([]IDelayedWithdrawalRouterDelayedWithdrawal, error) { + var out []interface{} + err := _DelayedWithdrawalRouter.contract.Call(opts, &out, "getUserDelayedWithdrawals", user) + + if err != nil { + return *new([]IDelayedWithdrawalRouterDelayedWithdrawal), err + } + + out0 := *abi.ConvertType(out[0], new([]IDelayedWithdrawalRouterDelayedWithdrawal)).(*[]IDelayedWithdrawalRouterDelayedWithdrawal) + + return out0, err + +} + +// GetUserDelayedWithdrawals is a free data retrieval call binding the contract method 0x3e1de008. +// +// Solidity: function getUserDelayedWithdrawals(address user) view returns((uint224,uint32)[]) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) GetUserDelayedWithdrawals(user common.Address) ([]IDelayedWithdrawalRouterDelayedWithdrawal, error) { + return _DelayedWithdrawalRouter.Contract.GetUserDelayedWithdrawals(&_DelayedWithdrawalRouter.CallOpts, user) +} + +// GetUserDelayedWithdrawals is a free data retrieval call binding the contract method 0x3e1de008. +// +// Solidity: function getUserDelayedWithdrawals(address user) view returns((uint224,uint32)[]) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCallerSession) GetUserDelayedWithdrawals(user common.Address) ([]IDelayedWithdrawalRouterDelayedWithdrawal, error) { + return _DelayedWithdrawalRouter.Contract.GetUserDelayedWithdrawals(&_DelayedWithdrawalRouter.CallOpts, user) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _DelayedWithdrawalRouter.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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) Owner() (common.Address, error) { + return _DelayedWithdrawalRouter.Contract.Owner(&_DelayedWithdrawalRouter.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCallerSession) Owner() (common.Address, error) { + return _DelayedWithdrawalRouter.Contract.Owner(&_DelayedWithdrawalRouter.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCaller) Paused(opts *bind.CallOpts, index uint8) (bool, error) { + var out []interface{} + err := _DelayedWithdrawalRouter.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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) Paused(index uint8) (bool, error) { + return _DelayedWithdrawalRouter.Contract.Paused(&_DelayedWithdrawalRouter.CallOpts, index) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCallerSession) Paused(index uint8) (bool, error) { + return _DelayedWithdrawalRouter.Contract.Paused(&_DelayedWithdrawalRouter.CallOpts, index) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCaller) Paused0(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _DelayedWithdrawalRouter.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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) Paused0() (*big.Int, error) { + return _DelayedWithdrawalRouter.Contract.Paused0(&_DelayedWithdrawalRouter.CallOpts) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCallerSession) Paused0() (*big.Int, error) { + return _DelayedWithdrawalRouter.Contract.Paused0(&_DelayedWithdrawalRouter.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCaller) PauserRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _DelayedWithdrawalRouter.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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) PauserRegistry() (common.Address, error) { + return _DelayedWithdrawalRouter.Contract.PauserRegistry(&_DelayedWithdrawalRouter.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCallerSession) PauserRegistry() (common.Address, error) { + return _DelayedWithdrawalRouter.Contract.PauserRegistry(&_DelayedWithdrawalRouter.CallOpts) +} + +// UserDelayedWithdrawalByIndex is a free data retrieval call binding the contract method 0x85594e58. +// +// Solidity: function userDelayedWithdrawalByIndex(address user, uint256 index) view returns((uint224,uint32)) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCaller) UserDelayedWithdrawalByIndex(opts *bind.CallOpts, user common.Address, index *big.Int) (IDelayedWithdrawalRouterDelayedWithdrawal, error) { + var out []interface{} + err := _DelayedWithdrawalRouter.contract.Call(opts, &out, "userDelayedWithdrawalByIndex", user, index) + + if err != nil { + return *new(IDelayedWithdrawalRouterDelayedWithdrawal), err + } + + out0 := *abi.ConvertType(out[0], new(IDelayedWithdrawalRouterDelayedWithdrawal)).(*IDelayedWithdrawalRouterDelayedWithdrawal) + + return out0, err + +} + +// UserDelayedWithdrawalByIndex is a free data retrieval call binding the contract method 0x85594e58. +// +// Solidity: function userDelayedWithdrawalByIndex(address user, uint256 index) view returns((uint224,uint32)) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) UserDelayedWithdrawalByIndex(user common.Address, index *big.Int) (IDelayedWithdrawalRouterDelayedWithdrawal, error) { + return _DelayedWithdrawalRouter.Contract.UserDelayedWithdrawalByIndex(&_DelayedWithdrawalRouter.CallOpts, user, index) +} + +// UserDelayedWithdrawalByIndex is a free data retrieval call binding the contract method 0x85594e58. +// +// Solidity: function userDelayedWithdrawalByIndex(address user, uint256 index) view returns((uint224,uint32)) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCallerSession) UserDelayedWithdrawalByIndex(user common.Address, index *big.Int) (IDelayedWithdrawalRouterDelayedWithdrawal, error) { + return _DelayedWithdrawalRouter.Contract.UserDelayedWithdrawalByIndex(&_DelayedWithdrawalRouter.CallOpts, user, index) +} + +// UserWithdrawals is a free data retrieval call binding the contract method 0xecb7cb1b. +// +// Solidity: function userWithdrawals(address user) view returns((uint256,(uint224,uint32)[])) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCaller) UserWithdrawals(opts *bind.CallOpts, user common.Address) (IDelayedWithdrawalRouterUserDelayedWithdrawals, error) { + var out []interface{} + err := _DelayedWithdrawalRouter.contract.Call(opts, &out, "userWithdrawals", user) + + if err != nil { + return *new(IDelayedWithdrawalRouterUserDelayedWithdrawals), err + } + + out0 := *abi.ConvertType(out[0], new(IDelayedWithdrawalRouterUserDelayedWithdrawals)).(*IDelayedWithdrawalRouterUserDelayedWithdrawals) + + return out0, err + +} + +// UserWithdrawals is a free data retrieval call binding the contract method 0xecb7cb1b. +// +// Solidity: function userWithdrawals(address user) view returns((uint256,(uint224,uint32)[])) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) UserWithdrawals(user common.Address) (IDelayedWithdrawalRouterUserDelayedWithdrawals, error) { + return _DelayedWithdrawalRouter.Contract.UserWithdrawals(&_DelayedWithdrawalRouter.CallOpts, user) +} + +// UserWithdrawals is a free data retrieval call binding the contract method 0xecb7cb1b. +// +// Solidity: function userWithdrawals(address user) view returns((uint256,(uint224,uint32)[])) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCallerSession) UserWithdrawals(user common.Address) (IDelayedWithdrawalRouterUserDelayedWithdrawals, error) { + return _DelayedWithdrawalRouter.Contract.UserWithdrawals(&_DelayedWithdrawalRouter.CallOpts, user) +} + +// UserWithdrawalsLength is a free data retrieval call binding the contract method 0xe4f4f887. +// +// Solidity: function userWithdrawalsLength(address user) view returns(uint256) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCaller) UserWithdrawalsLength(opts *bind.CallOpts, user common.Address) (*big.Int, error) { + var out []interface{} + err := _DelayedWithdrawalRouter.contract.Call(opts, &out, "userWithdrawalsLength", user) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UserWithdrawalsLength is a free data retrieval call binding the contract method 0xe4f4f887. +// +// Solidity: function userWithdrawalsLength(address user) view returns(uint256) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) UserWithdrawalsLength(user common.Address) (*big.Int, error) { + return _DelayedWithdrawalRouter.Contract.UserWithdrawalsLength(&_DelayedWithdrawalRouter.CallOpts, user) +} + +// UserWithdrawalsLength is a free data retrieval call binding the contract method 0xe4f4f887. +// +// Solidity: function userWithdrawalsLength(address user) view returns(uint256) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCallerSession) UserWithdrawalsLength(user common.Address) (*big.Int, error) { + return _DelayedWithdrawalRouter.Contract.UserWithdrawalsLength(&_DelayedWithdrawalRouter.CallOpts, user) +} + +// WithdrawalDelayBlocks is a free data retrieval call binding the contract method 0x50f73e7c. +// +// Solidity: function withdrawalDelayBlocks() view returns(uint256) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCaller) WithdrawalDelayBlocks(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _DelayedWithdrawalRouter.contract.Call(opts, &out, "withdrawalDelayBlocks") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// WithdrawalDelayBlocks is a free data retrieval call binding the contract method 0x50f73e7c. +// +// Solidity: function withdrawalDelayBlocks() view returns(uint256) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) WithdrawalDelayBlocks() (*big.Int, error) { + return _DelayedWithdrawalRouter.Contract.WithdrawalDelayBlocks(&_DelayedWithdrawalRouter.CallOpts) +} + +// WithdrawalDelayBlocks is a free data retrieval call binding the contract method 0x50f73e7c. +// +// Solidity: function withdrawalDelayBlocks() view returns(uint256) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterCallerSession) WithdrawalDelayBlocks() (*big.Int, error) { + return _DelayedWithdrawalRouter.Contract.WithdrawalDelayBlocks(&_DelayedWithdrawalRouter.CallOpts) +} + +// ClaimDelayedWithdrawals is a paid mutator transaction binding the contract method 0xd44e1b76. +// +// Solidity: function claimDelayedWithdrawals(uint256 maxNumberOfDelayedWithdrawalsToClaim) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactor) ClaimDelayedWithdrawals(opts *bind.TransactOpts, maxNumberOfDelayedWithdrawalsToClaim *big.Int) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.contract.Transact(opts, "claimDelayedWithdrawals", maxNumberOfDelayedWithdrawalsToClaim) +} + +// ClaimDelayedWithdrawals is a paid mutator transaction binding the contract method 0xd44e1b76. +// +// Solidity: function claimDelayedWithdrawals(uint256 maxNumberOfDelayedWithdrawalsToClaim) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) ClaimDelayedWithdrawals(maxNumberOfDelayedWithdrawalsToClaim *big.Int) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.ClaimDelayedWithdrawals(&_DelayedWithdrawalRouter.TransactOpts, maxNumberOfDelayedWithdrawalsToClaim) +} + +// ClaimDelayedWithdrawals is a paid mutator transaction binding the contract method 0xd44e1b76. +// +// Solidity: function claimDelayedWithdrawals(uint256 maxNumberOfDelayedWithdrawalsToClaim) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactorSession) ClaimDelayedWithdrawals(maxNumberOfDelayedWithdrawalsToClaim *big.Int) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.ClaimDelayedWithdrawals(&_DelayedWithdrawalRouter.TransactOpts, maxNumberOfDelayedWithdrawalsToClaim) +} + +// ClaimDelayedWithdrawals0 is a paid mutator transaction binding the contract method 0xe5db06c0. +// +// Solidity: function claimDelayedWithdrawals(address recipient, uint256 maxNumberOfDelayedWithdrawalsToClaim) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactor) ClaimDelayedWithdrawals0(opts *bind.TransactOpts, recipient common.Address, maxNumberOfDelayedWithdrawalsToClaim *big.Int) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.contract.Transact(opts, "claimDelayedWithdrawals0", recipient, maxNumberOfDelayedWithdrawalsToClaim) +} + +// ClaimDelayedWithdrawals0 is a paid mutator transaction binding the contract method 0xe5db06c0. +// +// Solidity: function claimDelayedWithdrawals(address recipient, uint256 maxNumberOfDelayedWithdrawalsToClaim) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) ClaimDelayedWithdrawals0(recipient common.Address, maxNumberOfDelayedWithdrawalsToClaim *big.Int) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.ClaimDelayedWithdrawals0(&_DelayedWithdrawalRouter.TransactOpts, recipient, maxNumberOfDelayedWithdrawalsToClaim) +} + +// ClaimDelayedWithdrawals0 is a paid mutator transaction binding the contract method 0xe5db06c0. +// +// Solidity: function claimDelayedWithdrawals(address recipient, uint256 maxNumberOfDelayedWithdrawalsToClaim) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactorSession) ClaimDelayedWithdrawals0(recipient common.Address, maxNumberOfDelayedWithdrawalsToClaim *big.Int) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.ClaimDelayedWithdrawals0(&_DelayedWithdrawalRouter.TransactOpts, recipient, maxNumberOfDelayedWithdrawalsToClaim) +} + +// CreateDelayedWithdrawal is a paid mutator transaction binding the contract method 0xc0db354c. +// +// Solidity: function createDelayedWithdrawal(address podOwner, address recipient) payable returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactor) CreateDelayedWithdrawal(opts *bind.TransactOpts, podOwner common.Address, recipient common.Address) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.contract.Transact(opts, "createDelayedWithdrawal", podOwner, recipient) +} + +// CreateDelayedWithdrawal is a paid mutator transaction binding the contract method 0xc0db354c. +// +// Solidity: function createDelayedWithdrawal(address podOwner, address recipient) payable returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) CreateDelayedWithdrawal(podOwner common.Address, recipient common.Address) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.CreateDelayedWithdrawal(&_DelayedWithdrawalRouter.TransactOpts, podOwner, recipient) +} + +// CreateDelayedWithdrawal is a paid mutator transaction binding the contract method 0xc0db354c. +// +// Solidity: function createDelayedWithdrawal(address podOwner, address recipient) payable returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactorSession) CreateDelayedWithdrawal(podOwner common.Address, recipient common.Address) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.CreateDelayedWithdrawal(&_DelayedWithdrawalRouter.TransactOpts, podOwner, recipient) +} + +// Initialize is a paid mutator transaction binding the contract method 0xeb990c59. +// +// Solidity: function initialize(address initOwner, address _pauserRegistry, uint256 initPausedStatus, uint256 _withdrawalDelayBlocks) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactor) Initialize(opts *bind.TransactOpts, initOwner common.Address, _pauserRegistry common.Address, initPausedStatus *big.Int, _withdrawalDelayBlocks *big.Int) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.contract.Transact(opts, "initialize", initOwner, _pauserRegistry, initPausedStatus, _withdrawalDelayBlocks) +} + +// Initialize is a paid mutator transaction binding the contract method 0xeb990c59. +// +// Solidity: function initialize(address initOwner, address _pauserRegistry, uint256 initPausedStatus, uint256 _withdrawalDelayBlocks) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) Initialize(initOwner common.Address, _pauserRegistry common.Address, initPausedStatus *big.Int, _withdrawalDelayBlocks *big.Int) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.Initialize(&_DelayedWithdrawalRouter.TransactOpts, initOwner, _pauserRegistry, initPausedStatus, _withdrawalDelayBlocks) +} + +// Initialize is a paid mutator transaction binding the contract method 0xeb990c59. +// +// Solidity: function initialize(address initOwner, address _pauserRegistry, uint256 initPausedStatus, uint256 _withdrawalDelayBlocks) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactorSession) Initialize(initOwner common.Address, _pauserRegistry common.Address, initPausedStatus *big.Int, _withdrawalDelayBlocks *big.Int) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.Initialize(&_DelayedWithdrawalRouter.TransactOpts, initOwner, _pauserRegistry, initPausedStatus, _withdrawalDelayBlocks) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactor) Pause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.contract.Transact(opts, "pause", newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.Pause(&_DelayedWithdrawalRouter.TransactOpts, newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactorSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.Pause(&_DelayedWithdrawalRouter.TransactOpts, newPausedStatus) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactor) PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.contract.Transact(opts, "pauseAll") +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) PauseAll() (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.PauseAll(&_DelayedWithdrawalRouter.TransactOpts) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactorSession) PauseAll() (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.PauseAll(&_DelayedWithdrawalRouter.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) RenounceOwnership() (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.RenounceOwnership(&_DelayedWithdrawalRouter.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.RenounceOwnership(&_DelayedWithdrawalRouter.TransactOpts) +} + +// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f. +// +// Solidity: function setPauserRegistry(address newPauserRegistry) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactor) SetPauserRegistry(opts *bind.TransactOpts, newPauserRegistry common.Address) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.contract.Transact(opts, "setPauserRegistry", newPauserRegistry) +} + +// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f. +// +// Solidity: function setPauserRegistry(address newPauserRegistry) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.SetPauserRegistry(&_DelayedWithdrawalRouter.TransactOpts, newPauserRegistry) +} + +// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f. +// +// Solidity: function setPauserRegistry(address newPauserRegistry) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactorSession) SetPauserRegistry(newPauserRegistry common.Address) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.SetPauserRegistry(&_DelayedWithdrawalRouter.TransactOpts, newPauserRegistry) +} + +// SetWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x4d50f9a4. +// +// Solidity: function setWithdrawalDelayBlocks(uint256 newValue) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactor) SetWithdrawalDelayBlocks(opts *bind.TransactOpts, newValue *big.Int) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.contract.Transact(opts, "setWithdrawalDelayBlocks", newValue) +} + +// SetWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x4d50f9a4. +// +// Solidity: function setWithdrawalDelayBlocks(uint256 newValue) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) SetWithdrawalDelayBlocks(newValue *big.Int) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.SetWithdrawalDelayBlocks(&_DelayedWithdrawalRouter.TransactOpts, newValue) +} + +// SetWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x4d50f9a4. +// +// Solidity: function setWithdrawalDelayBlocks(uint256 newValue) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactorSession) SetWithdrawalDelayBlocks(newValue *big.Int) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.SetWithdrawalDelayBlocks(&_DelayedWithdrawalRouter.TransactOpts, newValue) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.TransferOwnership(&_DelayedWithdrawalRouter.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.TransferOwnership(&_DelayedWithdrawalRouter.TransactOpts, newOwner) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactor) Unpause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.contract.Transact(opts, "unpause", newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.Unpause(&_DelayedWithdrawalRouter.TransactOpts, newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterTransactorSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _DelayedWithdrawalRouter.Contract.Unpause(&_DelayedWithdrawalRouter.TransactOpts, newPausedStatus) +} + +// DelayedWithdrawalRouterDelayedWithdrawalCreatedIterator is returned from FilterDelayedWithdrawalCreated and is used to iterate over the raw logs and unpacked data for DelayedWithdrawalCreated events raised by the DelayedWithdrawalRouter contract. +type DelayedWithdrawalRouterDelayedWithdrawalCreatedIterator struct { + Event *DelayedWithdrawalRouterDelayedWithdrawalCreated // Event containing the contract specifics 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 *DelayedWithdrawalRouterDelayedWithdrawalCreatedIterator) 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(DelayedWithdrawalRouterDelayedWithdrawalCreated) + 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(DelayedWithdrawalRouterDelayedWithdrawalCreated) + 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 *DelayedWithdrawalRouterDelayedWithdrawalCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelayedWithdrawalRouterDelayedWithdrawalCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DelayedWithdrawalRouterDelayedWithdrawalCreated represents a DelayedWithdrawalCreated event raised by the DelayedWithdrawalRouter contract. +type DelayedWithdrawalRouterDelayedWithdrawalCreated struct { + PodOwner common.Address + Recipient common.Address + Amount *big.Int + Index *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelayedWithdrawalCreated is a free log retrieval operation binding the contract event 0xb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f59. +// +// Solidity: event DelayedWithdrawalCreated(address podOwner, address recipient, uint256 amount, uint256 index) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) FilterDelayedWithdrawalCreated(opts *bind.FilterOpts) (*DelayedWithdrawalRouterDelayedWithdrawalCreatedIterator, error) { + + logs, sub, err := _DelayedWithdrawalRouter.contract.FilterLogs(opts, "DelayedWithdrawalCreated") + if err != nil { + return nil, err + } + return &DelayedWithdrawalRouterDelayedWithdrawalCreatedIterator{contract: _DelayedWithdrawalRouter.contract, event: "DelayedWithdrawalCreated", logs: logs, sub: sub}, nil +} + +// WatchDelayedWithdrawalCreated is a free log subscription operation binding the contract event 0xb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f59. +// +// Solidity: event DelayedWithdrawalCreated(address podOwner, address recipient, uint256 amount, uint256 index) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) WatchDelayedWithdrawalCreated(opts *bind.WatchOpts, sink chan<- *DelayedWithdrawalRouterDelayedWithdrawalCreated) (event.Subscription, error) { + + logs, sub, err := _DelayedWithdrawalRouter.contract.WatchLogs(opts, "DelayedWithdrawalCreated") + 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(DelayedWithdrawalRouterDelayedWithdrawalCreated) + if err := _DelayedWithdrawalRouter.contract.UnpackLog(event, "DelayedWithdrawalCreated", 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 +} + +// ParseDelayedWithdrawalCreated is a log parse operation binding the contract event 0xb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f59. +// +// Solidity: event DelayedWithdrawalCreated(address podOwner, address recipient, uint256 amount, uint256 index) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) ParseDelayedWithdrawalCreated(log types.Log) (*DelayedWithdrawalRouterDelayedWithdrawalCreated, error) { + event := new(DelayedWithdrawalRouterDelayedWithdrawalCreated) + if err := _DelayedWithdrawalRouter.contract.UnpackLog(event, "DelayedWithdrawalCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// DelayedWithdrawalRouterDelayedWithdrawalsClaimedIterator is returned from FilterDelayedWithdrawalsClaimed and is used to iterate over the raw logs and unpacked data for DelayedWithdrawalsClaimed events raised by the DelayedWithdrawalRouter contract. +type DelayedWithdrawalRouterDelayedWithdrawalsClaimedIterator struct { + Event *DelayedWithdrawalRouterDelayedWithdrawalsClaimed // Event containing the contract specifics 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 *DelayedWithdrawalRouterDelayedWithdrawalsClaimedIterator) 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(DelayedWithdrawalRouterDelayedWithdrawalsClaimed) + 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(DelayedWithdrawalRouterDelayedWithdrawalsClaimed) + 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 *DelayedWithdrawalRouterDelayedWithdrawalsClaimedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelayedWithdrawalRouterDelayedWithdrawalsClaimedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DelayedWithdrawalRouterDelayedWithdrawalsClaimed represents a DelayedWithdrawalsClaimed event raised by the DelayedWithdrawalRouter contract. +type DelayedWithdrawalRouterDelayedWithdrawalsClaimed struct { + Recipient common.Address + AmountClaimed *big.Int + DelayedWithdrawalsCompleted *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelayedWithdrawalsClaimed is a free log retrieval operation binding the contract event 0x6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb0943. +// +// Solidity: event DelayedWithdrawalsClaimed(address recipient, uint256 amountClaimed, uint256 delayedWithdrawalsCompleted) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) FilterDelayedWithdrawalsClaimed(opts *bind.FilterOpts) (*DelayedWithdrawalRouterDelayedWithdrawalsClaimedIterator, error) { + + logs, sub, err := _DelayedWithdrawalRouter.contract.FilterLogs(opts, "DelayedWithdrawalsClaimed") + if err != nil { + return nil, err + } + return &DelayedWithdrawalRouterDelayedWithdrawalsClaimedIterator{contract: _DelayedWithdrawalRouter.contract, event: "DelayedWithdrawalsClaimed", logs: logs, sub: sub}, nil +} + +// WatchDelayedWithdrawalsClaimed is a free log subscription operation binding the contract event 0x6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb0943. +// +// Solidity: event DelayedWithdrawalsClaimed(address recipient, uint256 amountClaimed, uint256 delayedWithdrawalsCompleted) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) WatchDelayedWithdrawalsClaimed(opts *bind.WatchOpts, sink chan<- *DelayedWithdrawalRouterDelayedWithdrawalsClaimed) (event.Subscription, error) { + + logs, sub, err := _DelayedWithdrawalRouter.contract.WatchLogs(opts, "DelayedWithdrawalsClaimed") + 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(DelayedWithdrawalRouterDelayedWithdrawalsClaimed) + if err := _DelayedWithdrawalRouter.contract.UnpackLog(event, "DelayedWithdrawalsClaimed", 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 +} + +// ParseDelayedWithdrawalsClaimed is a log parse operation binding the contract event 0x6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb0943. +// +// Solidity: event DelayedWithdrawalsClaimed(address recipient, uint256 amountClaimed, uint256 delayedWithdrawalsCompleted) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) ParseDelayedWithdrawalsClaimed(log types.Log) (*DelayedWithdrawalRouterDelayedWithdrawalsClaimed, error) { + event := new(DelayedWithdrawalRouterDelayedWithdrawalsClaimed) + if err := _DelayedWithdrawalRouter.contract.UnpackLog(event, "DelayedWithdrawalsClaimed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// DelayedWithdrawalRouterInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the DelayedWithdrawalRouter contract. +type DelayedWithdrawalRouterInitializedIterator struct { + Event *DelayedWithdrawalRouterInitialized // Event containing the contract specifics 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 *DelayedWithdrawalRouterInitializedIterator) 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(DelayedWithdrawalRouterInitialized) + 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(DelayedWithdrawalRouterInitialized) + 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 *DelayedWithdrawalRouterInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelayedWithdrawalRouterInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DelayedWithdrawalRouterInitialized represents a Initialized event raised by the DelayedWithdrawalRouter contract. +type DelayedWithdrawalRouterInitialized 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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) FilterInitialized(opts *bind.FilterOpts) (*DelayedWithdrawalRouterInitializedIterator, error) { + + logs, sub, err := _DelayedWithdrawalRouter.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &DelayedWithdrawalRouterInitializedIterator{contract: _DelayedWithdrawalRouter.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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *DelayedWithdrawalRouterInitialized) (event.Subscription, error) { + + logs, sub, err := _DelayedWithdrawalRouter.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(DelayedWithdrawalRouterInitialized) + if err := _DelayedWithdrawalRouter.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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) ParseInitialized(log types.Log) (*DelayedWithdrawalRouterInitialized, error) { + event := new(DelayedWithdrawalRouterInitialized) + if err := _DelayedWithdrawalRouter.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// DelayedWithdrawalRouterOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the DelayedWithdrawalRouter contract. +type DelayedWithdrawalRouterOwnershipTransferredIterator struct { + Event *DelayedWithdrawalRouterOwnershipTransferred // Event containing the contract specifics 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 *DelayedWithdrawalRouterOwnershipTransferredIterator) 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(DelayedWithdrawalRouterOwnershipTransferred) + 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(DelayedWithdrawalRouterOwnershipTransferred) + 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 *DelayedWithdrawalRouterOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelayedWithdrawalRouterOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DelayedWithdrawalRouterOwnershipTransferred represents a OwnershipTransferred event raised by the DelayedWithdrawalRouter contract. +type DelayedWithdrawalRouterOwnershipTransferred 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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*DelayedWithdrawalRouterOwnershipTransferredIterator, 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 := _DelayedWithdrawalRouter.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &DelayedWithdrawalRouterOwnershipTransferredIterator{contract: _DelayedWithdrawalRouter.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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *DelayedWithdrawalRouterOwnershipTransferred, 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 := _DelayedWithdrawalRouter.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(DelayedWithdrawalRouterOwnershipTransferred) + if err := _DelayedWithdrawalRouter.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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) ParseOwnershipTransferred(log types.Log) (*DelayedWithdrawalRouterOwnershipTransferred, error) { + event := new(DelayedWithdrawalRouterOwnershipTransferred) + if err := _DelayedWithdrawalRouter.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// DelayedWithdrawalRouterPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the DelayedWithdrawalRouter contract. +type DelayedWithdrawalRouterPausedIterator struct { + Event *DelayedWithdrawalRouterPaused // Event containing the contract specifics 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 *DelayedWithdrawalRouterPausedIterator) 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(DelayedWithdrawalRouterPaused) + 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(DelayedWithdrawalRouterPaused) + 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 *DelayedWithdrawalRouterPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelayedWithdrawalRouterPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DelayedWithdrawalRouterPaused represents a Paused event raised by the DelayedWithdrawalRouter contract. +type DelayedWithdrawalRouterPaused 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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) FilterPaused(opts *bind.FilterOpts, account []common.Address) (*DelayedWithdrawalRouterPausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DelayedWithdrawalRouter.contract.FilterLogs(opts, "Paused", accountRule) + if err != nil { + return nil, err + } + return &DelayedWithdrawalRouterPausedIterator{contract: _DelayedWithdrawalRouter.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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *DelayedWithdrawalRouterPaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DelayedWithdrawalRouter.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(DelayedWithdrawalRouterPaused) + if err := _DelayedWithdrawalRouter.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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) ParsePaused(log types.Log) (*DelayedWithdrawalRouterPaused, error) { + event := new(DelayedWithdrawalRouterPaused) + if err := _DelayedWithdrawalRouter.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// DelayedWithdrawalRouterPauserRegistrySetIterator is returned from FilterPauserRegistrySet and is used to iterate over the raw logs and unpacked data for PauserRegistrySet events raised by the DelayedWithdrawalRouter contract. +type DelayedWithdrawalRouterPauserRegistrySetIterator struct { + Event *DelayedWithdrawalRouterPauserRegistrySet // Event containing the contract specifics 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 *DelayedWithdrawalRouterPauserRegistrySetIterator) 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(DelayedWithdrawalRouterPauserRegistrySet) + 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(DelayedWithdrawalRouterPauserRegistrySet) + 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 *DelayedWithdrawalRouterPauserRegistrySetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelayedWithdrawalRouterPauserRegistrySetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DelayedWithdrawalRouterPauserRegistrySet represents a PauserRegistrySet event raised by the DelayedWithdrawalRouter contract. +type DelayedWithdrawalRouterPauserRegistrySet 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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) FilterPauserRegistrySet(opts *bind.FilterOpts) (*DelayedWithdrawalRouterPauserRegistrySetIterator, error) { + + logs, sub, err := _DelayedWithdrawalRouter.contract.FilterLogs(opts, "PauserRegistrySet") + if err != nil { + return nil, err + } + return &DelayedWithdrawalRouterPauserRegistrySetIterator{contract: _DelayedWithdrawalRouter.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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *DelayedWithdrawalRouterPauserRegistrySet) (event.Subscription, error) { + + logs, sub, err := _DelayedWithdrawalRouter.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(DelayedWithdrawalRouterPauserRegistrySet) + if err := _DelayedWithdrawalRouter.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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) ParsePauserRegistrySet(log types.Log) (*DelayedWithdrawalRouterPauserRegistrySet, error) { + event := new(DelayedWithdrawalRouterPauserRegistrySet) + if err := _DelayedWithdrawalRouter.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// DelayedWithdrawalRouterUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the DelayedWithdrawalRouter contract. +type DelayedWithdrawalRouterUnpausedIterator struct { + Event *DelayedWithdrawalRouterUnpaused // Event containing the contract specifics 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 *DelayedWithdrawalRouterUnpausedIterator) 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(DelayedWithdrawalRouterUnpaused) + 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(DelayedWithdrawalRouterUnpaused) + 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 *DelayedWithdrawalRouterUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelayedWithdrawalRouterUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DelayedWithdrawalRouterUnpaused represents a Unpaused event raised by the DelayedWithdrawalRouter contract. +type DelayedWithdrawalRouterUnpaused 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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) FilterUnpaused(opts *bind.FilterOpts, account []common.Address) (*DelayedWithdrawalRouterUnpausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DelayedWithdrawalRouter.contract.FilterLogs(opts, "Unpaused", accountRule) + if err != nil { + return nil, err + } + return &DelayedWithdrawalRouterUnpausedIterator{contract: _DelayedWithdrawalRouter.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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *DelayedWithdrawalRouterUnpaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DelayedWithdrawalRouter.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(DelayedWithdrawalRouterUnpaused) + if err := _DelayedWithdrawalRouter.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 (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) ParseUnpaused(log types.Log) (*DelayedWithdrawalRouterUnpaused, error) { + event := new(DelayedWithdrawalRouterUnpaused) + if err := _DelayedWithdrawalRouter.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// DelayedWithdrawalRouterWithdrawalDelayBlocksSetIterator is returned from FilterWithdrawalDelayBlocksSet and is used to iterate over the raw logs and unpacked data for WithdrawalDelayBlocksSet events raised by the DelayedWithdrawalRouter contract. +type DelayedWithdrawalRouterWithdrawalDelayBlocksSetIterator struct { + Event *DelayedWithdrawalRouterWithdrawalDelayBlocksSet // Event containing the contract specifics 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 *DelayedWithdrawalRouterWithdrawalDelayBlocksSetIterator) 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(DelayedWithdrawalRouterWithdrawalDelayBlocksSet) + 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(DelayedWithdrawalRouterWithdrawalDelayBlocksSet) + 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 *DelayedWithdrawalRouterWithdrawalDelayBlocksSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelayedWithdrawalRouterWithdrawalDelayBlocksSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DelayedWithdrawalRouterWithdrawalDelayBlocksSet represents a WithdrawalDelayBlocksSet event raised by the DelayedWithdrawalRouter contract. +type DelayedWithdrawalRouterWithdrawalDelayBlocksSet struct { + PreviousValue *big.Int + NewValue *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawalDelayBlocksSet is a free log retrieval operation binding the contract event 0x4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e. +// +// Solidity: event WithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) FilterWithdrawalDelayBlocksSet(opts *bind.FilterOpts) (*DelayedWithdrawalRouterWithdrawalDelayBlocksSetIterator, error) { + + logs, sub, err := _DelayedWithdrawalRouter.contract.FilterLogs(opts, "WithdrawalDelayBlocksSet") + if err != nil { + return nil, err + } + return &DelayedWithdrawalRouterWithdrawalDelayBlocksSetIterator{contract: _DelayedWithdrawalRouter.contract, event: "WithdrawalDelayBlocksSet", logs: logs, sub: sub}, nil +} + +// WatchWithdrawalDelayBlocksSet is a free log subscription operation binding the contract event 0x4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e. +// +// Solidity: event WithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) WatchWithdrawalDelayBlocksSet(opts *bind.WatchOpts, sink chan<- *DelayedWithdrawalRouterWithdrawalDelayBlocksSet) (event.Subscription, error) { + + logs, sub, err := _DelayedWithdrawalRouter.contract.WatchLogs(opts, "WithdrawalDelayBlocksSet") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DelayedWithdrawalRouterWithdrawalDelayBlocksSet) + if err := _DelayedWithdrawalRouter.contract.UnpackLog(event, "WithdrawalDelayBlocksSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawalDelayBlocksSet is a log parse operation binding the contract event 0x4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e. +// +// Solidity: event WithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue) +func (_DelayedWithdrawalRouter *DelayedWithdrawalRouterFilterer) ParseWithdrawalDelayBlocksSet(log types.Log) (*DelayedWithdrawalRouterWithdrawalDelayBlocksSet, error) { + event := new(DelayedWithdrawalRouterWithdrawalDelayBlocksSet) + if err := _DelayedWithdrawalRouter.contract.UnpackLog(event, "WithdrawalDelayBlocksSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/DelayedWithdrawalRouter/tmp.abi b/pkg/bindings/DelayedWithdrawalRouter/tmp.abi new file mode 100644 index 000000000..3b8b4251f --- /dev/null +++ b/pkg/bindings/DelayedWithdrawalRouter/tmp.abi @@ -0,0 +1,614 @@ +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_eigenPodManager", + "type": "address", + "internalType": "contract IEigenPodManager" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "MAX_WITHDRAWAL_DELAY_BLOCKS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "canClaimDelayedWithdrawal", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "claimDelayedWithdrawals", + "inputs": [ + { + "name": "maxNumberOfDelayedWithdrawalsToClaim", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "claimDelayedWithdrawals", + "inputs": [ + { + "name": "recipient", + "type": "address", + "internalType": "address" + }, + { + "name": "maxNumberOfDelayedWithdrawalsToClaim", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "createDelayedWithdrawal", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "eigenPodManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IEigenPodManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getClaimableUserDelayedWithdrawals", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple[]", + "internalType": "struct IDelayedWithdrawalRouter.DelayedWithdrawal[]", + "components": [ + { + "name": "amount", + "type": "uint224", + "internalType": "uint224" + }, + { + "name": "blockCreated", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getUserDelayedWithdrawals", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple[]", + "internalType": "struct IDelayedWithdrawalRouter.DelayedWithdrawal[]", + "components": [ + { + "name": "amount", + "type": "uint224", + "internalType": "uint224" + }, + { + "name": "blockCreated", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "initOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "_pauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + }, + { + "name": "initPausedStatus", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_withdrawalDelayBlocks", + "type": "uint256", + "internalType": "uint256" + } + ], + "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": "contract IPauserRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setWithdrawalDelayBlocks", + "inputs": [ + { + "name": "newValue", + "type": "uint256", + "internalType": "uint256" + } + ], + "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": "userDelayedWithdrawalByIndex", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IDelayedWithdrawalRouter.DelayedWithdrawal", + "components": [ + { + "name": "amount", + "type": "uint224", + "internalType": "uint224" + }, + { + "name": "blockCreated", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "userWithdrawals", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IDelayedWithdrawalRouter.UserDelayedWithdrawals", + "components": [ + { + "name": "delayedWithdrawalsCompleted", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "delayedWithdrawals", + "type": "tuple[]", + "internalType": "struct IDelayedWithdrawalRouter.DelayedWithdrawal[]", + "components": [ + { + "name": "amount", + "type": "uint224", + "internalType": "uint224" + }, + { + "name": "blockCreated", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "userWithdrawalsLength", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "withdrawalDelayBlocks", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "DelayedWithdrawalCreated", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "recipient", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "index", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DelayedWithdrawalsClaimed", + "inputs": [ + { + "name": "recipient", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "amountClaimed", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "delayedWithdrawalsCompleted", + "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": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "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": "WithdrawalDelayBlocksSet", + "inputs": [ + { + "name": "previousValue", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newValue", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] diff --git a/pkg/bindings/DelayedWithdrawalRouter/tmp.bin b/pkg/bindings/DelayedWithdrawalRouter/tmp.bin new file mode 100644 index 000000000..1b45ac336 --- /dev/null +++ b/pkg/bindings/DelayedWithdrawalRouter/tmp.bin @@ -0,0 +1 @@ +0x60a06040523480156200001157600080fd5b5060405162001f0e38038062001f0e8339810160408190526200003491620001a8565b6001600160a01b038116620000cb5760405162461bcd60e51b815260206004820152604c60248201527f44656c617965645769746864726177616c526f757465722e636f6e737472756360448201527f746f723a205f656967656e506f644d616e616765722063616e6e6f742062652060648201526b7a65726f206164647265737360a01b608482015260a4015b60405180910390fd5b6001600160a01b038116608052620000e2620000e9565b50620001da565b600054610100900460ff1615620001535760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401620000c2565b60005460ff9081161015620001a6576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b600060208284031215620001bb57600080fd5b81516001600160a01b0381168114620001d357600080fd5b9392505050565b608051611d11620001fd600039600081816101fa0152610c000152611d116000f3fe60806040526004361061014b5760003560e01c806385594e58116100b6578063e4f4f8871161006f578063e4f4f887146103cc578063e5db06c014610405578063eb990c5914610425578063ecb7cb1b14610445578063f2fde38b14610472578063fabc1cbc1461049257600080fd5b806385594e5814610317578063886f1195146103445780638da5cb5b14610364578063c0db354c14610382578063ca661c0414610395578063d44e1b76146103ac57600080fd5b806350f73e7c1161010857806350f73e7c14610254578063595c6a67146102785780635ac86ab71461028d5780635c975abb146102cd578063715018a6146102e257806375608896146102f757600080fd5b806310d67a2f14610150578063136439dd146101725780631f39d87f146101925780633e1de008146101c85780634665bcda146101e85780634d50f9a414610234575b600080fd5b34801561015c57600080fd5b5061017061016b36600461196d565b6104b2565b005b34801561017e57600080fd5b5061017061018d366004611991565b61056e565b34801561019e57600080fd5b506101b26101ad36600461196d565b6106ad565b6040516101bf91906119c8565b60405180910390f35b3480156101d457600080fd5b506101b26101e336600461196d565b6108a8565b3480156101f457600080fd5b5061021c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101bf565b34801561024057600080fd5b5061017061024f366004611991565b6109ee565b34801561026057600080fd5b5061026a60c95481565b6040519081526020016101bf565b34801561028457600080fd5b506101706109ff565b34801561029957600080fd5b506102bd6102a8366004611a15565b609854600160ff9092169190911b9081161490565b60405190151581526020016101bf565b3480156102d957600080fd5b5060985461026a565b3480156102ee57600080fd5b50610170610ac6565b34801561030357600080fd5b506102bd610312366004611a38565b610ada565b34801561032357600080fd5b50610337610332366004611a38565b610b5d565b6040516101bf9190611a64565b34801561035057600080fd5b5060975461021c906001600160a01b031681565b34801561037057600080fd5b506033546001600160a01b031661021c565b610170610390366004611a72565b610bdd565b3480156103a157600080fd5b5061026a62034bc081565b3480156103b857600080fd5b506101706103c7366004611991565b610e9d565b3480156103d857600080fd5b5061026a6103e736600461196d565b6001600160a01b0316600090815260ca602052604090206001015490565b34801561041157600080fd5b50610170610420366004611a38565b610f31565b34801561043157600080fd5b50610170610440366004611aab565b610fc6565b34801561045157600080fd5b5061046561046036600461196d565b6110ee565b6040516101bf9190611af1565b34801561047e57600080fd5b5061017061048d36600461196d565b6111a8565b34801561049e57600080fd5b506101706104ad366004611991565b61121e565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105299190611b47565b6001600160a01b0316336001600160a01b0316146105625760405162461bcd60e51b815260040161055990611b64565b60405180910390fd5b61056b8161137a565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da9190611bae565b6105f65760405162461bcd60e51b815260040161055990611bd0565b6098548181161461066f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926106da8383611c2e565b90508060005b82811015610786576001600160a01b038716600090815260ca6020526040812060010161070d8388611c45565b8154811061071d5761071d611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061076391611c45565b4310156107735781925050610786565b508061077e81611c73565b9150506106e0565b508060008167ffffffffffffffff8111156107a3576107a3611c8e565b6040519080825280602002602001820160405280156107e857816020015b60408051808201909152600080825260208201528152602001906001900390816107c15790505b509050811561089d5760005b8281101561089b576001600160a01b038916600090815260ca602052604090206001016108218289611c45565b8154811061083157610831611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810191909152825183908390811061087d5761087d611c5d565b6020026020010181905250808061089390611c73565b9150506107f4565b505b979650505050505050565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926108d58383611c2e565b905060008167ffffffffffffffff8111156108f2576108f2611c8e565b60405190808252806020026020018201604052801561093757816020015b60408051808201909152600080825260208201528152602001906001900390816109105790505b50905060005b828110156109e4576001600160a01b038716600090815260ca6020526040902060010161096a8287611c45565b8154811061097a5761097a611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff169181019190915282518390839081106109c6576109c6611c5d565b602002602001018190525080806109dc90611c73565b91505061093d565b5095945050505050565b6109f6611471565b61056b816114cb565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6b9190611bae565b610a875760405162461bcd60e51b815260040161055990611bd0565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610ace611471565b610ad86000611593565b565b6001600160a01b038216600090815260ca60205260408120548210801590610b54575060c9546001600160a01b038416600090815260ca60205260409020600101805484908110610b2d57610b2d611c5d565b600091825260209091200154610b509190600160e01b900463ffffffff16611c45565b4310155b90505b92915050565b60408051808201909152600080825260208201526001600160a01b038316600090815260ca60205260409020600101805483908110610b9e57610b9e611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff16918101919091529392505050565b60405163a38406a360e01b81526001600160a01b038084166004830152839133917f0000000000000000000000000000000000000000000000000000000000000000169063a38406a390602401602060405180830381865afa158015610c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6b9190611b47565b6001600160a01b031614610ce75760405162461bcd60e51b815260206004820152603d60248201527f44656c617965645769746864726177616c526f757465722e6f6e6c794569676560448201527f6e506f643a206e6f7420706f644f776e6572277320456967656e506f640000006064820152608401610559565b60985460009060019081161415610d105760405162461bcd60e51b815260040161055990611ca4565b6001600160a01b038316610da65760405162461bcd60e51b815260206004820152605160248201527f44656c617965645769746864726177616c526f757465722e637265617465446560448201527f6c617965645769746864726177616c3a20726563697069656e742063616e6e6f60648201527074206265207a65726f206164647265737360781b608482015260a401610559565b346001600160e01b03811615610e96576040805180820182526001600160e01b03808416825263ffffffff43811660208085019182526001600160a01b038a16600081815260ca8352968720600190810180548083018255818a5293892088519551909616600160e01b029490961693909317939091019290925593525490917fb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f5991889188918691610e5791611c2e565b604080516001600160a01b0395861681529490931660208501526001600160e01b039091169183019190915260608201526080015b60405180910390a1505b5050505050565b60026065541415610ef05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b600260655560985460009060019081161415610f1e5760405162461bcd60e51b815260040161055990611ca4565b610f2833836115e5565b50506001606555565b60026065541415610f845760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b600260655560985460009060019081161415610fb25760405162461bcd60e51b815260040161055990611ca4565b610fbc83836115e5565b5050600160655550565b600054610100900460ff1615808015610fe65750600054600160ff909116105b806110005750303b158015611000575060005460ff166001145b6110635760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610559565b6000805460ff191660011790558015611086576000805461ff0019166101001790555b61108f85611593565b6110998484611750565b6110a2826114cb565b8015610e96576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6040805180820190915260008152606060208201526001600160a01b038216600090815260ca6020908152604080832081518083018352815481526001820180548451818702810187019095528085529195929486810194939192919084015b8282101561119a57600084815260209081902060408051808201909152908401546001600160e01b0381168252600160e01b900463ffffffff168183015282526001909201910161114e565b505050915250909392505050565b6111b0611471565b6001600160a01b0381166112155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610559565b61056b81611593565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611271573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112959190611b47565b6001600160a01b0316336001600160a01b0316146112c55760405162461bcd60e51b815260040161055990611b64565b6098541981196098541916146113435760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016106a2565b6001600160a01b0381166114085760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610559565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314610ad85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610559565b62034bc08111156115525760405162461bcd60e51b815260206004820152604560248201527f44656c617965645769746864726177616c526f757465722e5f7365745769746860448201527f64726177616c44656c6179426c6f636b733a206e657756616c756520746f6f206064820152646c6172676560d81b608482015260a401610559565b60c95460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a160c955565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600090815260ca602052604081208054600190910154825b848110801561161e57508161161c8285611c45565b105b156116cb576001600160a01b038616600090815260ca602052604081206001016116488386611c45565b8154811061165857611658611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061169e91611c45565b4310156116ab57506116cb565b80516116c0906001600160e01b031686611c45565b945050600101611607565b6116d58184611c45565b6001600160a01b038716600090815260ca602052604090205583156116fe576116fe868561183a565b7f6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb0943868561172b8487611c45565b604080516001600160a01b039094168452602084019290925290820152606001610e8c565b6097546001600160a01b031615801561177157506001600160a01b03821615155b6117f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26118368261137a565b5050565b8047101561188a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610559565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118d7576040519150601f19603f3d011682016040523d82523d6000602084013e6118dc565b606091505b50509050806119535760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610559565b505050565b6001600160a01b038116811461056b57600080fd5b60006020828403121561197f57600080fd5b813561198a81611958565b9392505050565b6000602082840312156119a357600080fd5b5035919050565b80516001600160e01b0316825260209081015163ffffffff16910152565b602080825282518282018190526000919060409081850190868401855b82811015611a08576119f88483516119aa565b92840192908501906001016119e5565b5091979650505050505050565b600060208284031215611a2757600080fd5b813560ff8116811461198a57600080fd5b60008060408385031215611a4b57600080fd5b8235611a5681611958565b946020939093013593505050565b60408101610b5782846119aa565b60008060408385031215611a8557600080fd5b8235611a9081611958565b91506020830135611aa081611958565b809150509250929050565b60008060008060808587031215611ac157600080fd5b8435611acc81611958565b93506020850135611adc81611958565b93969395505050506040820135916060013590565b602080825282518282015282810151604080840181905281516060850181905260009392830191849160808701905b8084101561089b57611b338286516119aa565b938501936001939093019290820190611b20565b600060208284031215611b5957600080fd5b815161198a81611958565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611bc057600080fd5b8151801515811461198a57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082821015611c4057611c40611c18565b500390565b60008219821115611c5857611c58611c18565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415611c8757611c87611c18565b5060010190565b634e487b7160e01b600052604160045260246000fd5b60208082526019908201527f5061757361626c653a20696e646578206973207061757365640000000000000060408201526060019056fea26469706673582212204d034cf38e6f52eeeeee18bdeaaabb4e2c786993ce058ddff212f92f634d302a64736f6c634300080c0033 diff --git a/pkg/bindings/DelegationManager/binding.go b/pkg/bindings/DelegationManager/binding.go new file mode 100644 index 000000000..450a364e4 --- /dev/null +++ b/pkg/bindings/DelegationManager/binding.go @@ -0,0 +1,4352 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package DelegationManager + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IDelegationManagerOperatorDetails is an auto generated low-level Go binding around an user-defined struct. +type IDelegationManagerOperatorDetails struct { + EarningsReceiver common.Address + DelegationApprover common.Address + StakerOptOutWindowBlocks uint32 +} + +// IDelegationManagerQueuedWithdrawalParams is an auto generated low-level Go binding around an user-defined struct. +type IDelegationManagerQueuedWithdrawalParams struct { + Strategies []common.Address + Shares []*big.Int + Withdrawer common.Address +} + +// IDelegationManagerWithdrawal is an auto generated low-level Go binding around an user-defined struct. +type IDelegationManagerWithdrawal struct { + Staker common.Address + DelegatedTo common.Address + Withdrawer common.Address + Nonce *big.Int + StartBlock uint32 + Strategies []common.Address + Shares []*big.Int +} + +// ISignatureUtilsSignatureWithExpiry is an auto generated low-level Go binding around an user-defined struct. +type ISignatureUtilsSignatureWithExpiry struct { + Signature []byte + Expiry *big.Int +} + +// IStrategyManagerDeprecatedStructQueuedWithdrawal is an auto generated low-level Go binding around an user-defined struct. +type IStrategyManagerDeprecatedStructQueuedWithdrawal struct { + Strategies []common.Address + Shares []*big.Int + Staker common.Address + WithdrawerAndNonce IStrategyManagerDeprecatedStructWithdrawerAndNonce + WithdrawalStartBlock uint32 + DelegatedAddress common.Address +} + +// IStrategyManagerDeprecatedStructWithdrawerAndNonce is an auto generated low-level Go binding around an user-defined struct. +type IStrategyManagerDeprecatedStructWithdrawerAndNonce struct { + Withdrawer common.Address + Nonce *big.Int +} + +// 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\":\"earningsReceiver\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDelegatableShares\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"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\":\"migrateQueuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawalsToMigrate\",\"type\":\"tuple[]\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_QueuedWithdrawal[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"components\":[{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"minWithdrawalDelayBlocks\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyOperatorDetails\",\"inputs\":[{\"name\":\"newOperatorDetails\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorDetails\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorShares\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingWithdrawals\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"queueWithdrawals\",\"inputs\":[{\"name\":\"queuedWithdrawalParams\",\"type\":\"tuple[]\",\"internalType\":\"structIDelegationManager.QueuedWithdrawalParams[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerAsOperator\",\"inputs\":[{\"name\":\"registeringOperatorDetails\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"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\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorMetadataURIUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRegistered\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDetails\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSharesDecreased\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSharesIncreased\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerDelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerForceUndelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StakerUndelegated\",\"inputs\":[{\"name\":\"staker\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"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\":\"WithdrawalMigrated\",\"inputs\":[{\"name\":\"oldWithdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"newWithdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalQueued\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"withdrawal\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManager.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"anonymous\":false}]", + Bin: "0x6101006040523480156200001257600080fd5b506040516200618138038062006181833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615f516200023060003960006127790152600081816105e7015281816110ae0152818161142a01528181611e0d01528181612ad2015281816141390152614625015260006107d701526000818161052f0152818161107c015281816113f80152818161172001528181611ea101528181612b9f01528181612d220152818161425f01526146cb0152615f516000f3fe608060405234801561001057600080fd5b50600436106103785760003560e01c806360d7faed116101d3578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b01461097d578063f2fde38b14610990578063f698da25146109a3578063fabc1cbc146109ab57600080fd5b8063cf80873e14610936578063da8be86414610957578063eea9064b1461096a57600080fd5b8063c488375a116100de578063c488375a14610853578063c5e480db14610873578063c94b511114610919578063ca661c041461092c57600080fd5b8063b7f06ebe146107f9578063bb45fef21461081c578063c448feb81461084a57600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461078457806399be81c81461079f578063a1788484146107b2578063b1344271146107d257600080fd5b8063886f1195146107405780638da5cb5b14610753578063900413471461076457600080fd5b80636d70f7ae116101ad5780636d70f7ae146106e7578063715018a6146106fa578063778e55f3146107025780637f5480711461072d57600080fd5b806360d7faed14610698578063635bbd10146106ab57806365da1264146106be57600080fd5b806329c77d4f116102ad5780634fc40b611161024b5780635ac86ab7116102255780635ac86ab71461062e5780635c975abb146106515780635cfe8d2c146106595780635f966f141461066c57600080fd5b80634fc40b6114610609578063595c6a6714610613578063597b36da1461061b57600080fd5b80633cdeb5e0116102875780633cdeb5e0146105695780633e28391d1461059857806343377382146105bb5780634665bcda146105e257600080fd5b806329c77d4f146104f7578063334043961461051757806339b70e381461052a57600080fd5b8063136439dd1161031a5780631bbce091116102f45780631bbce0911461049757806320606b70146104aa57806322bf40e4146104d157806328a573ae146104e457600080fd5b8063136439dd146104385780631522bf021461044b578063169283651461045e57600080fd5b80630dd8dd02116103565780630dd8dd02146103dd5780630f589e59146103fd57806310d67a2f14610412578063132d49671461042557600080fd5b80630449ca391461037d57806304a4f979146103a35780630b9f487a146103ca575b600080fd5b61039061038b366004614adb565b6109be565b6040519081526020015b60405180910390f35b6103907f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6103906103d8366004614b41565b610a43565b6103f06103eb366004614adb565b610b05565b60405161039a9190614b9c565b61041061040b366004614c39565b610e6e565b005b610410610420366004614c8c565b610fbe565b610410610433366004614cb0565b611071565b610410610446366004614cf1565b611128565b610410610459366004614d0a565b611267565b61039061046c366004614c8c565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103906104a5366004614cb0565b61127b565b6103907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6104106104df366004614d75565b6112a9565b6104106104f2366004614cb0565b6113ed565b610390610505366004614c8c565b609b6020526000908152604090205481565b610410610525366004614e1c565b61149d565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161039a565b610551610577366004614c8c565b6001600160a01b039081166000908152609960205260409020600101541690565b6105ab6105a6366004614c8c565b6115da565b604051901515815260200161039a565b6103907f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6103906213c68081565b6104106115fa565b61039061062936600461513b565b6116c1565b6105ab61063c366004615177565b606654600160ff9092169190911b9081161490565b606654610390565b6104106106673660046151ed565b6116f1565b61055161067a366004614c8c565b6001600160a01b039081166000908152609960205260409020541690565b6104106106a636600461534d565b61199c565b6104106106b9366004614cf1565b611a37565b6105516106cc366004614c8c565b609a602052600090815260409020546001600160a01b031681565b6105ab6106f5366004614c8c565b611a48565b610410611a68565b6103906107103660046153dc565b609860209081526000928352604080842090915290825290205481565b61041061073b3660046154bd565b611a7c565b606554610551906001600160a01b031681565b6033546001600160a01b0316610551565b61077761077236600461554d565b611b81565b60405161039a91906155d7565b61055173beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6104106107ad3660046155ea565b611c5b565b6103906107c0366004614c8c565b609f6020526000908152604090205481565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6105ab610807366004614cf1565b609e6020526000908152604090205460ff1681565b6105ab61082a36600461561f565b609c60209081526000928352604080842090915290825290205460ff1681565b610390609d5481565b610390610861366004614c8c565b60a16020526000908152604090205481565b6108e3610881366004614c8c565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff169082015260600161039a565b61039061092736600461564b565b611d2d565b61039062034bc081565b610949610944366004614c8c565b611de6565b60405161039a9291906156cc565b6103f0610965366004614c8c565b61219e565b6104106109783660046156f1565b612662565b61041061098b366004615749565b61266e565b61041061099e366004614c8c565b6126ff565b610390612775565b6104106109b9366004614cf1565b6127b3565b609d54600090815b83811015610a3b57600060a160008787858181106109e6576109e6615765565b90506020020160208101906109fb9190614c8c565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905082811115610a2a578092505b50610a3481615791565b90506109c6565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610ac1612775565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b3a5760405162461bcd60e51b8152600401610b31906157ac565b60405180910390fd5b6000836001600160401b03811115610b5457610b54614ebe565b604051908082528060200260200182016040528015610b7d578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610e6357868682818110610bb857610bb8615765565b9050602002810190610bca91906157e3565b610bd8906020810190615803565b9050878783818110610bec57610bec615765565b9050602002810190610bfe91906157e3565b610c089080615803565b905014610c7d5760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b31565b33878783818110610c9057610c90615765565b9050602002810190610ca291906157e3565b610cb3906060810190604001614c8c565b6001600160a01b031614610d2f5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610b31565b610e343383898985818110610d4657610d46615765565b9050602002810190610d5891906157e3565b610d69906060810190604001614c8c565b8a8a86818110610d7b57610d7b615765565b9050602002810190610d8d91906157e3565b610d979080615803565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610ddd57610ddd615765565b9050602002810190610def91906157e3565b610dfd906020810190615803565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061290f92505050565b838281518110610e4657610e46615765565b602090810291909101015280610e5b81615791565b915050610b9e565b509095945050505050565b336000908152609960205260409020546001600160a01b031615610f085760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b31565b610f123384612ecf565b604080518082019091526060815260006020820152610f34338083600061316b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f6d919061584c565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fb092919061589e565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611011573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103591906158cd565b6001600160a01b0316336001600160a01b0316146110655760405162461bcd60e51b8152600401610b31906158ea565b61106e81613510565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110d05750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110ec5760405162461bcd60e51b8152600401610b3190615934565b6110f5836115da565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613607565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111949190615991565b6111b05760405162461bcd60e51b8152600401610b31906159ae565b606654818116146112295760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b61126f613682565b611121848484846136dc565b6001600160a01b0383166000908152609b60205260408120546112a085828686611d2d565b95945050505050565b600054610100900460ff16158080156112c95750600054600160ff909116105b806112e35750303b1580156112e3575060005460ff166001145b6113465760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b31565b6000805460ff191660011790558015611369576000805461ff0019166101001790555b6113738888613902565b61137b6139e8565b60975561138789613a7f565b61139086613ad1565b61139c858585856136dc565b80156113e2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061144c5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6114685760405162461bcd60e51b8152600401610b3190615934565b611471836115da565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613bcb565b606654600290600490811614156114c65760405162461bcd60e51b8152600401610b31906157ac565b600260c95414156115195760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b31565b600260c95560005b888110156115c9576115b98a8a8381811061153e5761153e615765565b905060200281019061155091906159f6565b89898481811061156257611562615765565b90506020028101906115749190615803565b89898681811061158657611586615765565b9050602002013588888781811061159f5761159f615765565b90506020020160208101906115b49190615a0c565b613c46565b6115c281615791565b9050611521565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116669190615991565b6116825760405162461bcd60e51b8152600401610b31906159ae565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116d49190615a9d565b604051602081830303815290604052805190602001209050919050565b60005b815181101561199857600082828151811061171157611711615765565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b815260040161176a9190615ab0565b60408051808303816000875af1158015611788573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ac9190615b5c565b91509150811561198a576040808401516001600160a01b0381166000908152609f602052918220805491928291906117e383615791565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff16815260200187600001518152602001876020015181525090506000611863826116c1565b6000818152609e602052604090205490915060ff16156118f95760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b31565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9906119449083908590615b8a565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b8360010193505050506116f4565b5050565b606654600290600490811614156119c55760405162461bcd60e51b8152600401610b31906157ac565b600260c9541415611a185760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b31565b600260c955611a2a8686868686613c46565b5050600160c95550505050565b611a3f613682565b61106e81613ad1565b6001600160a01b0390811660009081526099602052604090205416151590565b611a70613682565b611a7a6000613a7f565b565b4283602001511015611b005760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b31565b6000609b6000876001600160a01b03166001600160a01b031681526020019081526020016000205490506000611b3c8783888860200151611d2d565b6001600160a01b0388166000908152609b602052604090206001840190558551909150611b6c9088908390614430565b611b788787868661316b565b50505050505050565b6060600082516001600160401b03811115611b9e57611b9e614ebe565b604051908082528060200260200182016040528015611bc7578160200160208202803683370190505b50905060005b8351811015610a3b576001600160a01b03851660009081526098602052604081208551909190869084908110611c0557611c05615765565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611c4057611c40615765565b6020908102919091010152611c5481615791565b9050611bcd565b611c6433611a48565b611ce65760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b31565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d2192919061589e565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611da3612775565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611e56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7a9190615ba3565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611eea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f129190810190615c17565b9150915060008313611f2957909590945092505050565b606080835160001415611fe3576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611f9e57611f9e615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611fd257611fd2615765565b602002602001018181525050612191565b8351611ff0906001615cd1565b6001600160401b0381111561200757612007614ebe565b604051908082528060200260200182016040528015612030578160200160208202803683370190505b50915081516001600160401b0381111561204c5761204c614ebe565b604051908082528060200260200182016040528015612075578160200160208202803683370190505b50905060005b845181101561210f5784818151811061209657612096615765565b60200260200101518382815181106120b0576120b0615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106120e2576120e2615765565b60200260200101518282815181106120fc576120fc615765565b602090810291909101015260010161207b565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600184516121349190615ce9565b8151811061214457612144615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600184516121749190615ce9565b8151811061218457612184615765565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156121ca5760405162461bcd60e51b8152600401610b31906157ac565b6121d3836115da565b6122535760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b31565b61225c83611a48565b156122cf5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b31565b6001600160a01b03831661234b5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b31565b6001600160a01b038084166000818152609a60205260409020549091169033148061237e5750336001600160a01b038216145b806123a557506001600160a01b038181166000908152609960205260409020600101541633145b6124175760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b31565b60008061242386611de6565b9092509050336001600160a01b0387161461247957826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b031916905581516124fb576040805160008152602081019091529450612659565b81516001600160401b0381111561251457612514614ebe565b60405190808252806020026020018201604052801561253d578160200160208202803683370190505b50945060005b8251811015612657576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106125a3576125a3615765565b6020026020010151826000815181106125be576125be615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106125f0576125f0615765565b60200260200101518160008151811061260b5761260b615765565b60200260200101818152505061262489878b858561290f565b88848151811061263657612636615765565b6020026020010181815250505050808061264f90615791565b915050612543565b505b50505050919050565b6111233384848461316b565b61267733611a48565b6126f55760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b31565b61106e3382612ecf565b612707613682565b6001600160a01b03811661276c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b31565b61106e81613a7f565b60007f00000000000000000000000000000000000000000000000000000000000000004614156127a6575060975490565b6127ae6139e8565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282a91906158cd565b6001600160a01b0316336001600160a01b03161461285a5760405162461bcd60e51b8152600401610b31906158ea565b6066541981196066541916146128d85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161125c565b60006001600160a01b0386166129a65760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b31565b8251612a305760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b31565b60005b8351811015612ddd576001600160a01b03861615612a8957612a898688868481518110612a6257612a62615765565b6020026020010151868581518110612a7c57612a7c615765565b6020026020010151613607565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612ab957612ab9615765565b60200260200101516001600160a01b03161415612b82577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612b1257612b12615765565b60200260200101516040518363ffffffff1660e01b8152600401612b4b9291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612b6557600080fd5b505af1158015612b79573d6000803e3d6000fd5b50505050612dd5565b846001600160a01b0316876001600160a01b03161480612c5457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612bde57612bde615765565b60200260200101516040518263ffffffff1660e01b8152600401612c1191906001600160a01b0391909116815260200190565b602060405180830381865afa158015612c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c529190615991565b155b612d205760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610b31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612d6257612d62615765565b6020026020010151868581518110612d7c57612d7c615765565b60200260200101516040518463ffffffff1660e01b8152600401612da293929190615d00565b600060405180830381600087803b158015612dbc57600080fd5b505af1158015612dd0573d6000803e3d6000fd5b505050505b600101612a33565b506001600160a01b0386166000908152609f60205260408120805491829190612e0583615791565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612e6d826116c1565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612ebb9083908590615b8a565b60405180910390a198975050505050505050565b6000612ede6020830183614c8c565b6001600160a01b03161415612f785760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b31565b6213c680612f8c6060830160408401615d24565b63ffffffff1611156130415760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b31565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061307d9060608401908401615d24565b63ffffffff1610156131135760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b31565b6001600160a01b038216600090815260996020526040902081906131378282615d61565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d2190849061584c565b606654600090600190811614156131945760405162461bcd60e51b8152600401610b31906157ac565b61319d856115da565b1561321a5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b31565b61322384611a48565b6132a35760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b31565b6001600160a01b038085166000908152609960205260409020600101541680158015906132d95750336001600160a01b03821614155b80156132ee5750336001600160a01b03861614155b1561345b57428460200151101561336d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156134075760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff19166001179055850151613448908890889085908890610a43565b905061345982828760000151614430565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806134ba88611de6565b9150915060005b82518110156113e257613508888a8584815181106134e1576134e1615765565b60200260200101518585815181106134fb576134fb615765565b6020026020010151613bcb565b6001016134c1565b6001600160a01b03811661359e5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b31565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061363e908490615ce9565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fb093929190615d00565b6033546001600160a01b03163314611a7a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b31565b8281146137645760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610b31565b8260005b818110156138fa57600086868381811061378457613784615765565b90506020020160208101906137999190614c8c565b6001600160a01b038116600090815260a160205260408120549192508686858181106137c7576137c7615765565b90506020020135905062034bc081111561388b5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610b31565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806138f390615791565b9050613768565b505050505050565b6065546001600160a01b031615801561392357506001600160a01b03821615155b6139a55760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261199882613510565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc0811115613b8a5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610b31565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613c02908490615cd1565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fb093929190615d00565b6000613c5461062987615dc4565b6000818152609e602052604090205490915060ff16613cd55760405162461bcd60e51b81526020600482015260436024820152600080516020615efc83398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610b31565b609d544390613cea60a0890160808a01615d24565b63ffffffff16613cfa9190615cd1565b1115613d825760405162461bcd60e51b815260206004820152605f6024820152600080516020615efc83398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610b31565b613d926060870160408801614c8c565b6001600160a01b0316336001600160a01b031614613e1f5760405162461bcd60e51b81526020600482015260506024820152600080516020615efc83398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610b31565b8115613ea157613e3260a0870187615803565b85149050613ea15760405162461bcd60e51b81526020600482015260426024820152600080516020615efc83398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610b31565b6000818152609e60205260409020805460ff1916905581156140065760005b613ecd60a0880188615803565b9050811015614000574360a16000613ee860a08b018b615803565b85818110613ef857613ef8615765565b9050602002016020810190613f0d9190614c8c565b6001600160a01b03168152602081019190915260400160002054613f3760a08a0160808b01615d24565b63ffffffff16613f479190615cd1565b1115613f655760405162461bcd60e51b8152600401610b3190615dd6565b613ff8613f756020890189614c8c565b33613f8360a08b018b615803565b85818110613f9357613f93615765565b9050602002016020810190613fa89190614c8c565b613fb560c08c018c615803565b86818110613fc557613fc5615765565b905060200201358a8a87818110613fde57613fde615765565b9050602002016020810190613ff39190614c8c565b6145ea565b600101613ec0565b506143f5565b336000908152609a60205260408120546001600160a01b0316905b61402e60a0890189615803565b90508110156143f2574360a1600061404960a08c018c615803565b8581811061405957614059615765565b905060200201602081019061406e9190614c8c565b6001600160a01b0316815260208101919091526040016000205461409860a08b0160808c01615d24565b63ffffffff166140a89190615cd1565b11156140c65760405162461bcd60e51b8152600401610b3190615dd6565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06140e860a08a018a615803565b838181106140f8576140f8615765565b905060200201602081019061410d9190614c8c565b6001600160a01b0316141561425d57600061412b60208a018a614c8c565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c8361416c60c08e018e615803565b8781811061417c5761417c615765565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af11580156141d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f49190615ba3565b6001600160a01b038084166000908152609a602052604090205491925016801561425557614255818461422a60a08f018f615803565b8881811061423a5761423a615765565b905060200201602081019061424f9190614c8c565b85613bcb565b5050506143ea565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061429f5761429f615765565b90506020020160208101906142b49190614c8c565b6142c160a08d018d615803565b868181106142d1576142d1615765565b90506020020160208101906142e69190614c8c565b6142f360c08e018e615803565b8781811061430357614303615765565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561436357600080fd5b505af1158015614377573d6000803e3d6000fd5b505050506001600160a01b038216156143ea576143ea823361439c60a08c018c615803565b858181106143ac576143ac615765565b90506020020160208101906143c19190614c8c565b6143ce60c08d018d615803565b868181106143de576143de615765565b90506020020135613bcb565b600101614021565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b1561454a57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144709086908690600401615e5e565b602060405180830381865afa15801561448d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144b19190615ebb565b6001600160e01b031916146111235760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b31565b826001600160a01b031661455e838361472a565b6001600160a01b0316146111235760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b31565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156146955760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061465e90889088908790600401615d00565b600060405180830381600087803b15801561467857600080fd5b505af115801561468c573d6000803e3d6000fd5b50505050614723565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561470f57600080fd5b505af11580156113e2573d6000803e3d6000fd5b5050505050565b60008060006147398585614746565b91509150610a3b816147b6565b60008082516041141561477d5760208301516040840151606085015160001a61477187828585614971565b945094505050506147af565b8251604014156147a7576020830151604084015161479c868383614a5e565b9350935050506147af565b506000905060025b9250929050565b60008160048111156147ca576147ca615ee5565b14156147d35750565b60018160048111156147e7576147e7615ee5565b14156148355760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b31565b600281600481111561484957614849615ee5565b14156148975760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b31565b60038160048111156148ab576148ab615ee5565b14156149045760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b31565b600481600481111561491857614918615ee5565b141561106e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b31565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156149a85750600090506003614a55565b8460ff16601b141580156149c057508460ff16601c14155b156149d15750600090506004614a55565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614a25573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614a4e57600060019250925050614a55565b9150600090505b94509492505050565b6000806001600160ff1b03831681614a7b60ff86901c601b615cd1565b9050614a8987828885614971565b935093505050935093915050565b60008083601f840112614aa957600080fd5b5081356001600160401b03811115614ac057600080fd5b6020830191508360208260051b85010111156147af57600080fd5b60008060208385031215614aee57600080fd5b82356001600160401b03811115614b0457600080fd5b614b1085828601614a97565b90969095509350505050565b6001600160a01b038116811461106e57600080fd5b8035614b3c81614b1c565b919050565b600080600080600060a08688031215614b5957600080fd5b8535614b6481614b1c565b94506020860135614b7481614b1c565b93506040860135614b8481614b1c565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b81811015614bd457835183529284019291840191600101614bb8565b50909695505050505050565b600060608284031215614bf257600080fd5b50919050565b60008083601f840112614c0a57600080fd5b5081356001600160401b03811115614c2157600080fd5b6020830191508360208285010111156147af57600080fd5b600080600060808486031215614c4e57600080fd5b614c588585614be0565b925060608401356001600160401b03811115614c7357600080fd5b614c7f86828701614bf8565b9497909650939450505050565b600060208284031215614c9e57600080fd5b8135614ca981614b1c565b9392505050565b600080600060608486031215614cc557600080fd5b8335614cd081614b1c565b92506020840135614ce081614b1c565b929592945050506040919091013590565b600060208284031215614d0357600080fd5b5035919050565b60008060008060408587031215614d2057600080fd5b84356001600160401b0380821115614d3757600080fd5b614d4388838901614a97565b90965094506020870135915080821115614d5c57600080fd5b50614d6987828801614a97565b95989497509550505050565b60008060008060008060008060c0898b031215614d9157600080fd5b8835614d9c81614b1c565b97506020890135614dac81614b1c565b9650604089013595506060890135945060808901356001600160401b0380821115614dd657600080fd5b614de28c838d01614a97565b909650945060a08b0135915080821115614dfb57600080fd5b50614e088b828c01614a97565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614e3857600080fd5b88356001600160401b0380821115614e4f57600080fd5b614e5b8c838d01614a97565b909a50985060208b0135915080821115614e7457600080fd5b614e808c838d01614a97565b909850965060408b0135915080821115614e9957600080fd5b614ea58c838d01614a97565b909650945060608b0135915080821115614dfb57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614ef657614ef6614ebe565b60405290565b604080519081016001600160401b0381118282101715614ef657614ef6614ebe565b60405160c081016001600160401b0381118282101715614ef657614ef6614ebe565b604051601f8201601f191681016001600160401b0381118282101715614f6857614f68614ebe565b604052919050565b63ffffffff8116811461106e57600080fd5b8035614b3c81614f70565b60006001600160401b03821115614fa657614fa6614ebe565b5060051b60200190565b600082601f830112614fc157600080fd5b81356020614fd6614fd183614f8d565b614f40565b82815260059290921b84018101918181019086841115614ff557600080fd5b8286015b8481101561501957803561500c81614b1c565b8352918301918301614ff9565b509695505050505050565b600082601f83011261503557600080fd5b81356020615045614fd183614f8d565b82815260059290921b8401810191818101908684111561506457600080fd5b8286015b848110156150195780358352918301918301615068565b600060e0828403121561509157600080fd5b615099614ed4565b90506150a482614b31565b81526150b260208301614b31565b60208201526150c360408301614b31565b6040820152606082013560608201526150de60808301614f82565b608082015260a08201356001600160401b03808211156150fd57600080fd5b61510985838601614fb0565b60a084015260c084013591508082111561512257600080fd5b5061512f84828501615024565b60c08301525092915050565b60006020828403121561514d57600080fd5b81356001600160401b0381111561516357600080fd5b61516f8482850161507f565b949350505050565b60006020828403121561518957600080fd5b813560ff81168114614ca957600080fd5b6000604082840312156151ac57600080fd5b6151b4614efc565b905081356151c181614b1c565b815260208201356bffffffffffffffffffffffff811681146151e257600080fd5b602082015292915050565b6000602080838503121561520057600080fd5b82356001600160401b038082111561521757600080fd5b818501915085601f83011261522b57600080fd5b8135615239614fd182614f8d565b81815260059190911b8301840190848101908883111561525857600080fd5b8585015b83811015615332578035858111156152745760008081fd5b860160e0818c03601f190181131561528c5760008081fd5b615294614f1e565b89830135888111156152a65760008081fd5b6152b48e8c83870101614fb0565b825250604080840135898111156152cb5760008081fd5b6152d98f8d83880101615024565b8c8401525060606152eb818601614b31565b82840152608091506152ff8f83870161519a565b9083015261530f60c08501614f82565b9082015261531e838301614b31565b60a08201528552505091860191860161525c565b5098975050505050505050565b801515811461106e57600080fd5b60008060008060006080868803121561536557600080fd5b85356001600160401b038082111561537c57600080fd5b9087019060e0828a03121561539057600080fd5b909550602087013590808211156153a657600080fd5b506153b388828901614a97565b9095509350506040860135915060608601356153ce8161533f565b809150509295509295909350565b600080604083850312156153ef57600080fd5b82356153fa81614b1c565b9150602083013561540a81614b1c565b809150509250929050565b60006040828403121561542757600080fd5b61542f614efc565b905081356001600160401b038082111561544857600080fd5b818401915084601f83011261545c57600080fd5b813560208282111561547057615470614ebe565b615482601f8301601f19168201614f40565b9250818352868183860101111561549857600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a086880312156154d557600080fd5b85356154e081614b1c565b945060208601356154f081614b1c565b935060408601356001600160401b038082111561550c57600080fd5b61551889838a01615415565b9450606088013591508082111561552e57600080fd5b5061553b88828901615415565b95989497509295608001359392505050565b6000806040838503121561556057600080fd5b823561556b81614b1c565b915060208301356001600160401b0381111561558657600080fd5b61559285828601614fb0565b9150509250929050565b600081518084526020808501945080840160005b838110156155cc578151875295820195908201906001016155b0565b509495945050505050565b602081526000614ca9602083018461559c565b600080602083850312156155fd57600080fd5b82356001600160401b0381111561561357600080fd5b614b1085828601614bf8565b6000806040838503121561563257600080fd5b823561563d81614b1c565b946020939093013593505050565b6000806000806080858703121561566157600080fd5b843561566c81614b1c565b935060208501359250604085013561568381614b1c565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156155cc5781516001600160a01b0316875295820195908201906001016156a7565b6040815260006156df6040830185615693565b82810360208401526112a0818561559c565b60008060006060848603121561570657600080fd5b833561571181614b1c565b925060208401356001600160401b0381111561572c57600080fd5b61573886828701615415565b925050604084013590509250925092565b60006060828403121561575b57600080fd5b614ca98383614be0565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156157a5576157a561577b565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126157f957600080fd5b9190910192915050565b6000808335601e1984360301811261581a57600080fd5b8301803591506001600160401b0382111561583457600080fd5b6020019150600581901b36038213156147af57600080fd5b60608101823561585b81614b1c565b6001600160a01b03908116835260208401359061587782614b1c565b166020830152604083013561588b81614f70565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156158df57600080fd5b8151614ca981614b1c565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b6000602082840312156159a357600080fd5b8151614ca98161533f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126157f957600080fd5b600060208284031215615a1e57600080fd5b8135614ca98161533f565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a0850152615a8460e0850182615693565b905060c083015184820360c08601526112a0828261559c565b602081526000614ca96020830184615a29565b602081526000825160e06020840152615acd610100840182615693565b90506020840151601f19848303016040850152615aea828261559c565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a0850152506080840151615b4260c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152610a3b565b60008060408385031215615b6f57600080fd5b8251615b7a8161533f565b6020939093015192949293505050565b82815260406020820152600061516f6040830184615a29565b600060208284031215615bb557600080fd5b5051919050565b600082601f830112615bcd57600080fd5b81516020615bdd614fd183614f8d565b82815260059290921b84018101918181019086841115615bfc57600080fd5b8286015b848110156150195780518352918301918301615c00565b60008060408385031215615c2a57600080fd5b82516001600160401b0380821115615c4157600080fd5b818501915085601f830112615c5557600080fd5b81516020615c65614fd183614f8d565b82815260059290921b84018101918181019089841115615c8457600080fd5b948201945b83861015615cab578551615c9c81614b1c565b82529482019490820190615c89565b91880151919650909350505080821115615cc457600080fd5b5061559285828601615bbc565b60008219821115615ce457615ce461577b565b500190565b600082821015615cfb57615cfb61577b565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615d3657600080fd5b8135614ca981614f70565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615d6c81614b1c565b615d768183615d41565b50600181016020830135615d8981614b1c565b615d938183615d41565b506040830135615da281614f70565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615dd0368361507f565b92915050565b6020808252606e90820152600080516020615efc83398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b81811015615e9257858101830151858201606001528201615e76565b81811115615ea4576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615ecd57600080fd5b81516001600160e01b031981168114614ca957600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122057f5a81866086e44b0f7f934571107d1950fe9f87198361955f29ecceeaaa5eb64736f6c634300080c0033", +} + +// DelegationManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use DelegationManagerMetaData.ABI instead. +var DelegationManagerABI = DelegationManagerMetaData.ABI + +// DelegationManagerBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use DelegationManagerMetaData.Bin instead. +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) { + parsed, err := DelegationManagerMetaData.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(DelegationManagerBin), backend, _strategyManager, _slasher, _eigenPodManager) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &DelegationManager{DelegationManagerCaller: DelegationManagerCaller{contract: contract}, DelegationManagerTransactor: DelegationManagerTransactor{contract: contract}, DelegationManagerFilterer: DelegationManagerFilterer{contract: contract}}, nil +} + +// DelegationManager is an auto generated Go binding around an Ethereum contract. +type DelegationManager struct { + DelegationManagerCaller // Read-only binding to the contract + DelegationManagerTransactor // Write-only binding to the contract + DelegationManagerFilterer // Log filterer for contract events +} + +// DelegationManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type DelegationManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DelegationManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type DelegationManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DelegationManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type DelegationManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DelegationManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type DelegationManagerSession struct { + Contract *DelegationManager // 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 +} + +// DelegationManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type DelegationManagerCallerSession struct { + Contract *DelegationManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// DelegationManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type DelegationManagerTransactorSession struct { + Contract *DelegationManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// DelegationManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type DelegationManagerRaw struct { + Contract *DelegationManager // Generic contract binding to access the raw methods on +} + +// DelegationManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type DelegationManagerCallerRaw struct { + Contract *DelegationManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// DelegationManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type DelegationManagerTransactorRaw struct { + Contract *DelegationManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewDelegationManager creates a new instance of DelegationManager, bound to a specific deployed contract. +func NewDelegationManager(address common.Address, backend bind.ContractBackend) (*DelegationManager, error) { + contract, err := bindDelegationManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &DelegationManager{DelegationManagerCaller: DelegationManagerCaller{contract: contract}, DelegationManagerTransactor: DelegationManagerTransactor{contract: contract}, DelegationManagerFilterer: DelegationManagerFilterer{contract: contract}}, nil +} + +// NewDelegationManagerCaller creates a new read-only instance of DelegationManager, bound to a specific deployed contract. +func NewDelegationManagerCaller(address common.Address, caller bind.ContractCaller) (*DelegationManagerCaller, error) { + contract, err := bindDelegationManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &DelegationManagerCaller{contract: contract}, nil +} + +// NewDelegationManagerTransactor creates a new write-only instance of DelegationManager, bound to a specific deployed contract. +func NewDelegationManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*DelegationManagerTransactor, error) { + contract, err := bindDelegationManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &DelegationManagerTransactor{contract: contract}, nil +} + +// NewDelegationManagerFilterer creates a new log filterer instance of DelegationManager, bound to a specific deployed contract. +func NewDelegationManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*DelegationManagerFilterer, error) { + contract, err := bindDelegationManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &DelegationManagerFilterer{contract: contract}, nil +} + +// bindDelegationManager binds a generic wrapper to an already deployed contract. +func bindDelegationManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := DelegationManagerMetaData.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 (_DelegationManager *DelegationManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _DelegationManager.Contract.DelegationManagerCaller.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 (_DelegationManager *DelegationManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DelegationManager.Contract.DelegationManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_DelegationManager *DelegationManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _DelegationManager.Contract.DelegationManagerTransactor.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 (_DelegationManager *DelegationManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _DelegationManager.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 (_DelegationManager *DelegationManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DelegationManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_DelegationManager *DelegationManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _DelegationManager.Contract.contract.Transact(opts, method, params...) +} + +// DELEGATIONAPPROVALTYPEHASH is a free data retrieval call binding the contract method 0x04a4f979. +// +// Solidity: function DELEGATION_APPROVAL_TYPEHASH() view returns(bytes32) +func (_DelegationManager *DelegationManagerCaller) DELEGATIONAPPROVALTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "DELEGATION_APPROVAL_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DELEGATIONAPPROVALTYPEHASH is a free data retrieval call binding the contract method 0x04a4f979. +// +// Solidity: function DELEGATION_APPROVAL_TYPEHASH() view returns(bytes32) +func (_DelegationManager *DelegationManagerSession) DELEGATIONAPPROVALTYPEHASH() ([32]byte, error) { + return _DelegationManager.Contract.DELEGATIONAPPROVALTYPEHASH(&_DelegationManager.CallOpts) +} + +// DELEGATIONAPPROVALTYPEHASH is a free data retrieval call binding the contract method 0x04a4f979. +// +// Solidity: function DELEGATION_APPROVAL_TYPEHASH() view returns(bytes32) +func (_DelegationManager *DelegationManagerCallerSession) DELEGATIONAPPROVALTYPEHASH() ([32]byte, error) { + 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. +// +// 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) { + var out []interface{} + err := _DelegationManager.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 (_DelegationManager *DelegationManagerSession) STAKERDELEGATIONTYPEHASH() ([32]byte, error) { + return _DelegationManager.Contract.STAKERDELEGATIONTYPEHASH(&_DelegationManager.CallOpts) +} + +// STAKERDELEGATIONTYPEHASH is a free data retrieval call binding the contract method 0x43377382. +// +// Solidity: function STAKER_DELEGATION_TYPEHASH() view returns(bytes32) +func (_DelegationManager *DelegationManagerCallerSession) STAKERDELEGATIONTYPEHASH() ([32]byte, error) { + return _DelegationManager.Contract.STAKERDELEGATIONTYPEHASH(&_DelegationManager.CallOpts) +} + +// BeaconChainETHStrategy is a free data retrieval call binding the contract method 0x9104c319. +// +// Solidity: function beaconChainETHStrategy() view returns(address) +func (_DelegationManager *DelegationManagerCaller) BeaconChainETHStrategy(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _DelegationManager.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 (_DelegationManager *DelegationManagerSession) BeaconChainETHStrategy() (common.Address, error) { + return _DelegationManager.Contract.BeaconChainETHStrategy(&_DelegationManager.CallOpts) +} + +// BeaconChainETHStrategy is a free data retrieval call binding the contract method 0x9104c319. +// +// Solidity: function beaconChainETHStrategy() view returns(address) +func (_DelegationManager *DelegationManagerCallerSession) BeaconChainETHStrategy() (common.Address, error) { + 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) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "calculateDelegationApprovalDigestHash", staker, operator, _delegationApprover, approverSalt, expiry) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateDelegationApprovalDigestHash is a free data retrieval call binding the contract method 0x0b9f487a. +// +// Solidity: function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) view returns(bytes32) +func (_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) +} + +// 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) +} + +// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111. +// +// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32) +func (_DelegationManager *DelegationManagerCaller) CalculateStakerDelegationDigestHash(opts *bind.CallOpts, staker common.Address, _stakerNonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "calculateStakerDelegationDigestHash", staker, _stakerNonce, operator, expiry) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111. +// +// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32) +func (_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) +} + +// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111. +// +// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32) +func (_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) +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da. +// +// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32) +func (_DelegationManager *DelegationManagerCaller) CalculateWithdrawalRoot(opts *bind.CallOpts, withdrawal IDelegationManagerWithdrawal) ([32]byte, error) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "calculateWithdrawalRoot", withdrawal) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da. +// +// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32) +func (_DelegationManager *DelegationManagerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerWithdrawal) ([32]byte, error) { + return _DelegationManager.Contract.CalculateWithdrawalRoot(&_DelegationManager.CallOpts, withdrawal) +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da. +// +// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32) +func (_DelegationManager *DelegationManagerCallerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerWithdrawal) ([32]byte, error) { + return _DelegationManager.Contract.CalculateWithdrawalRoot(&_DelegationManager.CallOpts, withdrawal) +} + +// 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) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "cumulativeWithdrawalsQueued", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CumulativeWithdrawalsQueued is a free data retrieval call binding the contract method 0xa1788484. +// +// Solidity: function cumulativeWithdrawalsQueued(address ) view returns(uint256) +func (_DelegationManager *DelegationManagerSession) CumulativeWithdrawalsQueued(arg0 common.Address) (*big.Int, error) { + return _DelegationManager.Contract.CumulativeWithdrawalsQueued(&_DelegationManager.CallOpts, arg0) +} + +// 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) +} + +// 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) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "delegatedTo", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// DelegatedTo is a free data retrieval call binding the contract method 0x65da1264. +// +// Solidity: function delegatedTo(address ) view returns(address) +func (_DelegationManager *DelegationManagerSession) DelegatedTo(arg0 common.Address) (common.Address, error) { + return _DelegationManager.Contract.DelegatedTo(&_DelegationManager.CallOpts, arg0) +} + +// 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) +} + +// DelegationApprover is a free data retrieval call binding the contract method 0x3cdeb5e0. +// +// Solidity: function delegationApprover(address operator) view returns(address) +func (_DelegationManager *DelegationManagerCaller) DelegationApprover(opts *bind.CallOpts, operator common.Address) (common.Address, error) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "delegationApprover", operator) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// DelegationApprover is a free data retrieval call binding the contract method 0x3cdeb5e0. +// +// Solidity: function delegationApprover(address operator) view returns(address) +func (_DelegationManager *DelegationManagerSession) DelegationApprover(operator common.Address) (common.Address, error) { + return _DelegationManager.Contract.DelegationApprover(&_DelegationManager.CallOpts, operator) +} + +// DelegationApprover is a free data retrieval call binding the contract method 0x3cdeb5e0. +// +// Solidity: function delegationApprover(address operator) view returns(address) +func (_DelegationManager *DelegationManagerCallerSession) DelegationApprover(operator common.Address) (common.Address, error) { + return _DelegationManager.Contract.DelegationApprover(&_DelegationManager.CallOpts, operator) +} + +// 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) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "delegationApproverSaltIsSpent", arg0, arg1) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// DelegationApproverSaltIsSpent is a free data retrieval call binding the contract method 0xbb45fef2. +// +// Solidity: function delegationApproverSaltIsSpent(address , bytes32 ) view returns(bool) +func (_DelegationManager *DelegationManagerSession) DelegationApproverSaltIsSpent(arg0 common.Address, arg1 [32]byte) (bool, error) { + return _DelegationManager.Contract.DelegationApproverSaltIsSpent(&_DelegationManager.CallOpts, arg0, arg1) +} + +// 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) +} + +// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25. +// +// Solidity: function domainSeparator() view returns(bytes32) +func (_DelegationManager *DelegationManagerCaller) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _DelegationManager.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 (_DelegationManager *DelegationManagerSession) DomainSeparator() ([32]byte, error) { + return _DelegationManager.Contract.DomainSeparator(&_DelegationManager.CallOpts) +} + +// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25. +// +// Solidity: function domainSeparator() view returns(bytes32) +func (_DelegationManager *DelegationManagerCallerSession) DomainSeparator() ([32]byte, error) { + return _DelegationManager.Contract.DomainSeparator(&_DelegationManager.CallOpts) +} + +// EarningsReceiver is a free data retrieval call binding the contract method 0x5f966f14. +// +// Solidity: function earningsReceiver(address operator) view returns(address) +func (_DelegationManager *DelegationManagerCaller) EarningsReceiver(opts *bind.CallOpts, operator common.Address) (common.Address, error) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "earningsReceiver", operator) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EarningsReceiver is a free data retrieval call binding the contract method 0x5f966f14. +// +// Solidity: function earningsReceiver(address operator) view returns(address) +func (_DelegationManager *DelegationManagerSession) EarningsReceiver(operator common.Address) (common.Address, error) { + return _DelegationManager.Contract.EarningsReceiver(&_DelegationManager.CallOpts, operator) +} + +// EarningsReceiver is a free data retrieval call binding the contract method 0x5f966f14. +// +// Solidity: function earningsReceiver(address operator) view returns(address) +func (_DelegationManager *DelegationManagerCallerSession) EarningsReceiver(operator common.Address) (common.Address, error) { + return _DelegationManager.Contract.EarningsReceiver(&_DelegationManager.CallOpts, operator) +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_DelegationManager *DelegationManagerCaller) EigenPodManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "eigenPodManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_DelegationManager *DelegationManagerSession) EigenPodManager() (common.Address, error) { + return _DelegationManager.Contract.EigenPodManager(&_DelegationManager.CallOpts) +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_DelegationManager *DelegationManagerCallerSession) EigenPodManager() (common.Address, error) { + return _DelegationManager.Contract.EigenPodManager(&_DelegationManager.CallOpts) +} + +// GetDelegatableShares is a free data retrieval call binding the contract method 0xcf80873e. +// +// Solidity: function getDelegatableShares(address staker) view returns(address[], uint256[]) +func (_DelegationManager *DelegationManagerCaller) GetDelegatableShares(opts *bind.CallOpts, staker common.Address) ([]common.Address, []*big.Int, error) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "getDelegatableShares", staker) + + if err != nil { + return *new([]common.Address), *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + out1 := *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int) + + return out0, out1, err + +} + +// GetDelegatableShares is a free data retrieval call binding the contract method 0xcf80873e. +// +// Solidity: function getDelegatableShares(address staker) view returns(address[], uint256[]) +func (_DelegationManager *DelegationManagerSession) GetDelegatableShares(staker common.Address) ([]common.Address, []*big.Int, error) { + return _DelegationManager.Contract.GetDelegatableShares(&_DelegationManager.CallOpts, staker) +} + +// GetDelegatableShares is a free data retrieval call binding the contract method 0xcf80873e. +// +// 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) +} + +// GetOperatorShares is a free data retrieval call binding the contract method 0x90041347. +// +// Solidity: function getOperatorShares(address operator, address[] strategies) view returns(uint256[]) +func (_DelegationManager *DelegationManagerCaller) GetOperatorShares(opts *bind.CallOpts, operator common.Address, strategies []common.Address) ([]*big.Int, error) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "getOperatorShares", operator, strategies) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// GetOperatorShares is a free data retrieval call binding the contract method 0x90041347. +// +// Solidity: function getOperatorShares(address operator, address[] strategies) view returns(uint256[]) +func (_DelegationManager *DelegationManagerSession) GetOperatorShares(operator common.Address, strategies []common.Address) ([]*big.Int, error) { + return _DelegationManager.Contract.GetOperatorShares(&_DelegationManager.CallOpts, operator, strategies) +} + +// GetOperatorShares is a free data retrieval call binding the contract method 0x90041347. +// +// Solidity: function getOperatorShares(address operator, address[] strategies) view returns(uint256[]) +func (_DelegationManager *DelegationManagerCallerSession) GetOperatorShares(operator common.Address, strategies []common.Address) ([]*big.Int, error) { + return _DelegationManager.Contract.GetOperatorShares(&_DelegationManager.CallOpts, operator, strategies) +} + +// GetWithdrawalDelay is a free data retrieval call binding the contract method 0x0449ca39. +// +// Solidity: function getWithdrawalDelay(address[] strategies) view returns(uint256) +func (_DelegationManager *DelegationManagerCaller) GetWithdrawalDelay(opts *bind.CallOpts, strategies []common.Address) (*big.Int, error) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "getWithdrawalDelay", strategies) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetWithdrawalDelay is a free data retrieval call binding the contract method 0x0449ca39. +// +// 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) +} + +// GetWithdrawalDelay is a free data retrieval call binding the contract method 0x0449ca39. +// +// 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) +} + +// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d. +// +// Solidity: function isDelegated(address staker) view returns(bool) +func (_DelegationManager *DelegationManagerCaller) IsDelegated(opts *bind.CallOpts, staker common.Address) (bool, error) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "isDelegated", staker) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d. +// +// Solidity: function isDelegated(address staker) view returns(bool) +func (_DelegationManager *DelegationManagerSession) IsDelegated(staker common.Address) (bool, error) { + return _DelegationManager.Contract.IsDelegated(&_DelegationManager.CallOpts, staker) +} + +// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d. +// +// Solidity: function isDelegated(address staker) view returns(bool) +func (_DelegationManager *DelegationManagerCallerSession) IsDelegated(staker common.Address) (bool, error) { + return _DelegationManager.Contract.IsDelegated(&_DelegationManager.CallOpts, staker) +} + +// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae. +// +// Solidity: function isOperator(address operator) view returns(bool) +func (_DelegationManager *DelegationManagerCaller) IsOperator(opts *bind.CallOpts, operator common.Address) (bool, error) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "isOperator", operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae. +// +// Solidity: function isOperator(address operator) view returns(bool) +func (_DelegationManager *DelegationManagerSession) IsOperator(operator common.Address) (bool, error) { + return _DelegationManager.Contract.IsOperator(&_DelegationManager.CallOpts, operator) +} + +// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae. +// +// Solidity: function isOperator(address operator) view returns(bool) +func (_DelegationManager *DelegationManagerCallerSession) IsOperator(operator common.Address) (bool, error) { + return _DelegationManager.Contract.IsOperator(&_DelegationManager.CallOpts, operator) +} + +// 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) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "minWithdrawalDelayBlocks") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8. +// +// Solidity: function minWithdrawalDelayBlocks() view returns(uint256) +func (_DelegationManager *DelegationManagerSession) MinWithdrawalDelayBlocks() (*big.Int, 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) { + 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) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "operatorShares", arg0, arg1) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3. +// +// Solidity: function operatorShares(address , address ) view returns(uint256) +func (_DelegationManager *DelegationManagerSession) OperatorShares(arg0 common.Address, arg1 common.Address) (*big.Int, error) { + return _DelegationManager.Contract.OperatorShares(&_DelegationManager.CallOpts, arg0, arg1) +} + +// 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) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_DelegationManager *DelegationManagerCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _DelegationManager.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 (_DelegationManager *DelegationManagerSession) Owner() (common.Address, error) { + return _DelegationManager.Contract.Owner(&_DelegationManager.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_DelegationManager *DelegationManagerCallerSession) Owner() (common.Address, error) { + return _DelegationManager.Contract.Owner(&_DelegationManager.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_DelegationManager *DelegationManagerCaller) Paused(opts *bind.CallOpts, index uint8) (bool, error) { + var out []interface{} + err := _DelegationManager.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 (_DelegationManager *DelegationManagerSession) Paused(index uint8) (bool, error) { + return _DelegationManager.Contract.Paused(&_DelegationManager.CallOpts, index) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_DelegationManager *DelegationManagerCallerSession) Paused(index uint8) (bool, error) { + return _DelegationManager.Contract.Paused(&_DelegationManager.CallOpts, index) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_DelegationManager *DelegationManagerCaller) Paused0(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _DelegationManager.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 (_DelegationManager *DelegationManagerSession) Paused0() (*big.Int, error) { + return _DelegationManager.Contract.Paused0(&_DelegationManager.CallOpts) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_DelegationManager *DelegationManagerCallerSession) Paused0() (*big.Int, error) { + return _DelegationManager.Contract.Paused0(&_DelegationManager.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_DelegationManager *DelegationManagerCaller) PauserRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _DelegationManager.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 (_DelegationManager *DelegationManagerSession) PauserRegistry() (common.Address, error) { + return _DelegationManager.Contract.PauserRegistry(&_DelegationManager.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_DelegationManager *DelegationManagerCallerSession) PauserRegistry() (common.Address, error) { + return _DelegationManager.Contract.PauserRegistry(&_DelegationManager.CallOpts) +} + +// 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) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "pendingWithdrawals", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// PendingWithdrawals is a free data retrieval call binding the contract method 0xb7f06ebe. +// +// Solidity: function pendingWithdrawals(bytes32 ) view returns(bool) +func (_DelegationManager *DelegationManagerSession) PendingWithdrawals(arg0 [32]byte) (bool, error) { + return _DelegationManager.Contract.PendingWithdrawals(&_DelegationManager.CallOpts, arg0) +} + +// 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) +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_DelegationManager *DelegationManagerCaller) Slasher(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "slasher") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_DelegationManager *DelegationManagerSession) Slasher() (common.Address, error) { + return _DelegationManager.Contract.Slasher(&_DelegationManager.CallOpts) +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_DelegationManager *DelegationManagerCallerSession) Slasher() (common.Address, error) { + return _DelegationManager.Contract.Slasher(&_DelegationManager.CallOpts) +} + +// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f. +// +// Solidity: function stakerNonce(address ) view returns(uint256) +func (_DelegationManager *DelegationManagerCaller) StakerNonce(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _DelegationManager.contract.Call(opts, &out, "stakerNonce", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f. +// +// Solidity: function stakerNonce(address ) view returns(uint256) +func (_DelegationManager *DelegationManagerSession) StakerNonce(arg0 common.Address) (*big.Int, error) { + return _DelegationManager.Contract.StakerNonce(&_DelegationManager.CallOpts, arg0) +} + +// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f. +// +// Solidity: function stakerNonce(address ) view returns(uint256) +func (_DelegationManager *DelegationManagerCallerSession) StakerNonce(arg0 common.Address) (*big.Int, error) { + return _DelegationManager.Contract.StakerNonce(&_DelegationManager.CallOpts, arg0) +} + +// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365. +// +// 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) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365. +// +// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256) +func (_DelegationManager *DelegationManagerSession) StakerOptOutWindowBlocks(operator common.Address) (*big.Int, error) { + return _DelegationManager.Contract.StakerOptOutWindowBlocks(&_DelegationManager.CallOpts, operator) +} + +// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365. +// +// 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) +} + +// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. +// +// 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) +} + +// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967. +// +// 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) +} + +// DelegateTo is a paid mutator transaction binding the contract method 0xeea9064b. +// +// Solidity: function delegateTo(address operator, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns() +func (_DelegationManager *DelegationManagerTransactor) DelegateTo(opts *bind.TransactOpts, operator common.Address, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) { + return _DelegationManager.contract.Transact(opts, "delegateTo", operator, approverSignatureAndExpiry, approverSalt) +} + +// DelegateTo is a paid mutator transaction binding the contract method 0xeea9064b. +// +// Solidity: function delegateTo(address operator, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns() +func (_DelegationManager *DelegationManagerSession) DelegateTo(operator common.Address, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) { + return _DelegationManager.Contract.DelegateTo(&_DelegationManager.TransactOpts, operator, approverSignatureAndExpiry, approverSalt) +} + +// DelegateTo is a paid mutator transaction binding the contract method 0xeea9064b. +// +// Solidity: function delegateTo(address operator, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns() +func (_DelegationManager *DelegationManagerTransactorSession) DelegateTo(operator common.Address, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) { + 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. +// +// 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) +} + +// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae. +// +// 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) +} + +// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae. +// +// 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) +} + +// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae. +// +// 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) +} + +// Initialize is a paid mutator transaction binding the contract method 0x22bf40e4. +// +// 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) +} + +// Initialize is a paid mutator transaction binding the contract method 0x22bf40e4. +// +// 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) +} + +// Initialize is a paid mutator transaction binding the contract method 0x22bf40e4. +// +// 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) +} + +// MigrateQueuedWithdrawals is a paid mutator transaction binding the contract method 0x5cfe8d2c. +// +// Solidity: function migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[] withdrawalsToMigrate) returns() +func (_DelegationManager *DelegationManagerTransactor) MigrateQueuedWithdrawals(opts *bind.TransactOpts, withdrawalsToMigrate []IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _DelegationManager.contract.Transact(opts, "migrateQueuedWithdrawals", withdrawalsToMigrate) +} + +// MigrateQueuedWithdrawals is a paid mutator transaction binding the contract method 0x5cfe8d2c. +// +// Solidity: function migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[] withdrawalsToMigrate) returns() +func (_DelegationManager *DelegationManagerSession) MigrateQueuedWithdrawals(withdrawalsToMigrate []IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _DelegationManager.Contract.MigrateQueuedWithdrawals(&_DelegationManager.TransactOpts, withdrawalsToMigrate) +} + +// MigrateQueuedWithdrawals is a paid mutator transaction binding the contract method 0x5cfe8d2c. +// +// Solidity: function migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[] withdrawalsToMigrate) returns() +func (_DelegationManager *DelegationManagerTransactorSession) MigrateQueuedWithdrawals(withdrawalsToMigrate []IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _DelegationManager.Contract.MigrateQueuedWithdrawals(&_DelegationManager.TransactOpts, withdrawalsToMigrate) +} + +// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0. +// +// 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) +} + +// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0. +// +// 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) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_DelegationManager *DelegationManagerTransactor) Pause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _DelegationManager.contract.Transact(opts, "pause", newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_DelegationManager *DelegationManagerSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _DelegationManager.Contract.Pause(&_DelegationManager.TransactOpts, newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_DelegationManager *DelegationManagerTransactorSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _DelegationManager.Contract.Pause(&_DelegationManager.TransactOpts, newPausedStatus) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_DelegationManager *DelegationManagerTransactor) PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DelegationManager.contract.Transact(opts, "pauseAll") +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_DelegationManager *DelegationManagerSession) PauseAll() (*types.Transaction, error) { + return _DelegationManager.Contract.PauseAll(&_DelegationManager.TransactOpts) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_DelegationManager *DelegationManagerTransactorSession) PauseAll() (*types.Transaction, error) { + return _DelegationManager.Contract.PauseAll(&_DelegationManager.TransactOpts) +} + +// 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) +} + +// 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) +} + +// 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) +} + +// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59. +// +// 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) +} + +// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59. +// +// 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) +} + +// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59. +// +// 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) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_DelegationManager *DelegationManagerTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DelegationManager.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_DelegationManager *DelegationManagerSession) RenounceOwnership() (*types.Transaction, error) { + return _DelegationManager.Contract.RenounceOwnership(&_DelegationManager.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_DelegationManager *DelegationManagerTransactorSession) RenounceOwnership() (*types.Transaction, error) { + 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. +// +// 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) +} + +// SetStrategyWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x1522bf02. +// +// 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) +} + +// SetStrategyWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x1522bf02. +// +// 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) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_DelegationManager *DelegationManagerTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _DelegationManager.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_DelegationManager *DelegationManagerSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _DelegationManager.Contract.TransferOwnership(&_DelegationManager.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_DelegationManager *DelegationManagerTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _DelegationManager.Contract.TransferOwnership(&_DelegationManager.TransactOpts, newOwner) +} + +// Undelegate is a paid mutator transaction binding the contract method 0xda8be864. +// +// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoots) +func (_DelegationManager *DelegationManagerTransactor) Undelegate(opts *bind.TransactOpts, staker common.Address) (*types.Transaction, error) { + return _DelegationManager.contract.Transact(opts, "undelegate", staker) +} + +// Undelegate is a paid mutator transaction binding the contract method 0xda8be864. +// +// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoots) +func (_DelegationManager *DelegationManagerSession) Undelegate(staker common.Address) (*types.Transaction, error) { + return _DelegationManager.Contract.Undelegate(&_DelegationManager.TransactOpts, staker) +} + +// Undelegate is a paid mutator transaction binding the contract method 0xda8be864. +// +// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoots) +func (_DelegationManager *DelegationManagerTransactorSession) Undelegate(staker common.Address) (*types.Transaction, error) { + return _DelegationManager.Contract.Undelegate(&_DelegationManager.TransactOpts, staker) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_DelegationManager *DelegationManagerTransactor) Unpause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _DelegationManager.contract.Transact(opts, "unpause", newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_DelegationManager *DelegationManagerSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _DelegationManager.Contract.Unpause(&_DelegationManager.TransactOpts, newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_DelegationManager *DelegationManagerTransactorSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _DelegationManager.Contract.Unpause(&_DelegationManager.TransactOpts, newPausedStatus) +} + +// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8. +// +// 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) +} + +// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8. +// +// Solidity: function updateOperatorMetadataURI(string metadataURI) returns() +func (_DelegationManager *DelegationManagerSession) UpdateOperatorMetadataURI(metadataURI string) (*types.Transaction, error) { + return _DelegationManager.Contract.UpdateOperatorMetadataURI(&_DelegationManager.TransactOpts, metadataURI) +} + +// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8. +// +// Solidity: function updateOperatorMetadataURI(string metadataURI) returns() +func (_DelegationManager *DelegationManagerTransactorSession) UpdateOperatorMetadataURI(metadataURI string) (*types.Transaction, error) { + return _DelegationManager.Contract.UpdateOperatorMetadataURI(&_DelegationManager.TransactOpts, 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 + + 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 *DelegationManagerInitializedIterator) 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(DelegationManagerInitialized) + 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(DelegationManagerInitialized) + 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 *DelegationManagerInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerInitializedIterator) 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 +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_DelegationManager *DelegationManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*DelegationManagerInitializedIterator, error) { + + logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &DelegationManagerInitializedIterator{contract: _DelegationManager.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 (_DelegationManager *DelegationManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *DelegationManagerInitialized) (event.Subscription, error) { + + logs, sub, err := _DelegationManager.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(DelegationManagerInitialized) + if err := _DelegationManager.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 (_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 + 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 + + 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 *DelegationManagerMinWithdrawalDelayBlocksSetIterator) 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(DelegationManagerMinWithdrawalDelayBlocksSet) + 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(DelegationManagerMinWithdrawalDelayBlocksSet) + 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 *DelegationManagerMinWithdrawalDelayBlocksSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerMinWithdrawalDelayBlocksSetIterator) 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 +} + +// FilterMinWithdrawalDelayBlocksSet is a free log retrieval operation binding the contract event 0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69. +// +// Solidity: event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue) +func (_DelegationManager *DelegationManagerFilterer) FilterMinWithdrawalDelayBlocksSet(opts *bind.FilterOpts) (*DelegationManagerMinWithdrawalDelayBlocksSetIterator, error) { + + logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "MinWithdrawalDelayBlocksSet") + if err != nil { + return nil, err + } + return &DelegationManagerMinWithdrawalDelayBlocksSetIterator{contract: _DelegationManager.contract, event: "MinWithdrawalDelayBlocksSet", logs: logs, sub: sub}, nil +} + +// WatchMinWithdrawalDelayBlocksSet is a free log subscription operation binding the contract event 0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69. +// +// Solidity: event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue) +func (_DelegationManager *DelegationManagerFilterer) WatchMinWithdrawalDelayBlocksSet(opts *bind.WatchOpts, sink chan<- *DelegationManagerMinWithdrawalDelayBlocksSet) (event.Subscription, error) { + + logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "MinWithdrawalDelayBlocksSet") + 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(DelegationManagerMinWithdrawalDelayBlocksSet) + if err := _DelegationManager.contract.UnpackLog(event, "MinWithdrawalDelayBlocksSet", 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 +} + +// ParseMinWithdrawalDelayBlocksSet is a log parse operation binding the contract event 0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69. +// +// 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 { + 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 + + 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 *DelegationManagerOperatorDetailsModifiedIterator) 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(DelegationManagerOperatorDetailsModified) + 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(DelegationManagerOperatorDetailsModified) + 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 *DelegationManagerOperatorDetailsModifiedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerOperatorDetailsModifiedIterator) 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 +} + +// FilterOperatorDetailsModified is a free log retrieval operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac. +// +// 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) + } + + logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "OperatorDetailsModified", operatorRule) + if err != nil { + return nil, err + } + return &DelegationManagerOperatorDetailsModifiedIterator{contract: _DelegationManager.contract, event: "OperatorDetailsModified", logs: logs, sub: sub}, nil +} + +// WatchOperatorDetailsModified is a free log subscription operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac. +// +// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails) +func (_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) + } + + logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "OperatorDetailsModified", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DelegationManagerOperatorDetailsModified) + if err := _DelegationManager.contract.UnpackLog(event, "OperatorDetailsModified", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorDetailsModified is a log parse operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac. +// +// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails) +func (_DelegationManager *DelegationManagerFilterer) ParseOperatorDetailsModified(log types.Log) (*DelegationManagerOperatorDetailsModified, error) { + event := new(DelegationManagerOperatorDetailsModified) + if err := _DelegationManager.contract.UnpackLog(event, "OperatorDetailsModified", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// DelegationManagerOperatorMetadataURIUpdatedIterator is returned from FilterOperatorMetadataURIUpdated and is used to iterate over the raw logs and unpacked data for OperatorMetadataURIUpdated events raised by the DelegationManager contract. +type DelegationManagerOperatorMetadataURIUpdatedIterator struct { + Event *DelegationManagerOperatorMetadataURIUpdated // Event containing the contract specifics 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 *DelegationManagerOperatorMetadataURIUpdatedIterator) 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(DelegationManagerOperatorMetadataURIUpdated) + 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(DelegationManagerOperatorMetadataURIUpdated) + 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 *DelegationManagerOperatorMetadataURIUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerOperatorMetadataURIUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DelegationManagerOperatorMetadataURIUpdated represents a OperatorMetadataURIUpdated event raised by the DelegationManager contract. +type DelegationManagerOperatorMetadataURIUpdated struct { + Operator common.Address + MetadataURI string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorMetadataURIUpdated is a free log retrieval operation binding the contract event 0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090. +// +// Solidity: event OperatorMetadataURIUpdated(address indexed operator, string metadataURI) +func (_DelegationManager *DelegationManagerFilterer) FilterOperatorMetadataURIUpdated(opts *bind.FilterOpts, operator []common.Address) (*DelegationManagerOperatorMetadataURIUpdatedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "OperatorMetadataURIUpdated", operatorRule) + if err != nil { + return nil, err + } + return &DelegationManagerOperatorMetadataURIUpdatedIterator{contract: _DelegationManager.contract, event: "OperatorMetadataURIUpdated", logs: logs, sub: sub}, nil +} + +// WatchOperatorMetadataURIUpdated is a free log subscription operation binding the contract event 0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090. +// +// Solidity: event OperatorMetadataURIUpdated(address indexed operator, string metadataURI) +func (_DelegationManager *DelegationManagerFilterer) WatchOperatorMetadataURIUpdated(opts *bind.WatchOpts, sink chan<- *DelegationManagerOperatorMetadataURIUpdated, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "OperatorMetadataURIUpdated", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DelegationManagerOperatorMetadataURIUpdated) + if err := _DelegationManager.contract.UnpackLog(event, "OperatorMetadataURIUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorMetadataURIUpdated is a log parse operation binding the contract event 0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090. +// +// Solidity: event OperatorMetadataURIUpdated(address indexed operator, string metadataURI) +func (_DelegationManager *DelegationManagerFilterer) ParseOperatorMetadataURIUpdated(log types.Log) (*DelegationManagerOperatorMetadataURIUpdated, error) { + event := new(DelegationManagerOperatorMetadataURIUpdated) + if err := _DelegationManager.contract.UnpackLog(event, "OperatorMetadataURIUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// DelegationManagerOperatorRegisteredIterator is returned from FilterOperatorRegistered and is used to iterate over the raw logs and unpacked data for OperatorRegistered events raised by the DelegationManager contract. +type DelegationManagerOperatorRegisteredIterator struct { + Event *DelegationManagerOperatorRegistered // Event containing the contract specifics 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 *DelegationManagerOperatorRegisteredIterator) 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(DelegationManagerOperatorRegistered) + 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(DelegationManagerOperatorRegistered) + 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 *DelegationManagerOperatorRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerOperatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// 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 +} + +// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2. +// +// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails) +func (_DelegationManager *DelegationManagerFilterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address) (*DelegationManagerOperatorRegisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "OperatorRegistered", operatorRule) + if err != nil { + return nil, err + } + return &DelegationManagerOperatorRegisteredIterator{contract: _DelegationManager.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil +} + +// WatchOperatorRegistered is a free log subscription operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2. +// +// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails) +func (_DelegationManager *DelegationManagerFilterer) WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *DelegationManagerOperatorRegistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "OperatorRegistered", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DelegationManagerOperatorRegistered) + if err := _DelegationManager.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorRegistered is a log parse operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2. +// +// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails) +func (_DelegationManager *DelegationManagerFilterer) ParseOperatorRegistered(log types.Log) (*DelegationManagerOperatorRegistered, error) { + event := new(DelegationManagerOperatorRegistered) + if err := _DelegationManager.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// DelegationManagerOperatorSharesDecreasedIterator is returned from FilterOperatorSharesDecreased and is used to iterate over the raw logs and unpacked data for OperatorSharesDecreased events raised by the DelegationManager contract. +type DelegationManagerOperatorSharesDecreasedIterator struct { + Event *DelegationManagerOperatorSharesDecreased // Event containing the contract specifics 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 *DelegationManagerOperatorSharesDecreasedIterator) 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(DelegationManagerOperatorSharesDecreased) + 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(DelegationManagerOperatorSharesDecreased) + 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 *DelegationManagerOperatorSharesDecreasedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerOperatorSharesDecreasedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DelegationManagerOperatorSharesDecreased represents a OperatorSharesDecreased event raised by the DelegationManager contract. +type DelegationManagerOperatorSharesDecreased struct { + Operator common.Address + Staker common.Address + Strategy common.Address + Shares *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSharesDecreased is a free log retrieval operation binding the contract event 0x6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd. +// +// Solidity: event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_DelegationManager *DelegationManagerFilterer) FilterOperatorSharesDecreased(opts *bind.FilterOpts, operator []common.Address) (*DelegationManagerOperatorSharesDecreasedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "OperatorSharesDecreased", operatorRule) + if err != nil { + return nil, err + } + return &DelegationManagerOperatorSharesDecreasedIterator{contract: _DelegationManager.contract, event: "OperatorSharesDecreased", logs: logs, sub: sub}, nil +} + +// WatchOperatorSharesDecreased is a free log subscription operation binding the contract event 0x6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd. +// +// Solidity: event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_DelegationManager *DelegationManagerFilterer) WatchOperatorSharesDecreased(opts *bind.WatchOpts, sink chan<- *DelegationManagerOperatorSharesDecreased, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "OperatorSharesDecreased", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DelegationManagerOperatorSharesDecreased) + if err := _DelegationManager.contract.UnpackLog(event, "OperatorSharesDecreased", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorSharesDecreased is a log parse operation binding the contract event 0x6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd. +// +// Solidity: event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_DelegationManager *DelegationManagerFilterer) ParseOperatorSharesDecreased(log types.Log) (*DelegationManagerOperatorSharesDecreased, error) { + event := new(DelegationManagerOperatorSharesDecreased) + if err := _DelegationManager.contract.UnpackLog(event, "OperatorSharesDecreased", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// DelegationManagerOperatorSharesIncreasedIterator is returned from FilterOperatorSharesIncreased and is used to iterate over the raw logs and unpacked data for OperatorSharesIncreased events raised by the DelegationManager contract. +type DelegationManagerOperatorSharesIncreasedIterator struct { + Event *DelegationManagerOperatorSharesIncreased // Event containing the contract specifics 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 *DelegationManagerOperatorSharesIncreasedIterator) 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(DelegationManagerOperatorSharesIncreased) + 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(DelegationManagerOperatorSharesIncreased) + 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 *DelegationManagerOperatorSharesIncreasedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerOperatorSharesIncreasedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DelegationManagerOperatorSharesIncreased represents a OperatorSharesIncreased event raised by the DelegationManager contract. +type DelegationManagerOperatorSharesIncreased struct { + Operator common.Address + Staker common.Address + Strategy common.Address + Shares *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSharesIncreased is a free log retrieval operation binding the contract event 0x1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c. +// +// Solidity: event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_DelegationManager *DelegationManagerFilterer) FilterOperatorSharesIncreased(opts *bind.FilterOpts, operator []common.Address) (*DelegationManagerOperatorSharesIncreasedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "OperatorSharesIncreased", operatorRule) + if err != nil { + return nil, err + } + return &DelegationManagerOperatorSharesIncreasedIterator{contract: _DelegationManager.contract, event: "OperatorSharesIncreased", logs: logs, sub: sub}, nil +} + +// WatchOperatorSharesIncreased is a free log subscription operation binding the contract event 0x1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c. +// +// Solidity: event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_DelegationManager *DelegationManagerFilterer) WatchOperatorSharesIncreased(opts *bind.WatchOpts, sink chan<- *DelegationManagerOperatorSharesIncreased, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "OperatorSharesIncreased", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DelegationManagerOperatorSharesIncreased) + if err := _DelegationManager.contract.UnpackLog(event, "OperatorSharesIncreased", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorSharesIncreased is a log parse operation binding the contract event 0x1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c. +// +// Solidity: event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_DelegationManager *DelegationManagerFilterer) ParseOperatorSharesIncreased(log types.Log) (*DelegationManagerOperatorSharesIncreased, error) { + event := new(DelegationManagerOperatorSharesIncreased) + if err := _DelegationManager.contract.UnpackLog(event, "OperatorSharesIncreased", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// DelegationManagerOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the DelegationManager contract. +type DelegationManagerOwnershipTransferredIterator struct { + Event *DelegationManagerOwnershipTransferred // Event containing the contract specifics 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 *DelegationManagerOwnershipTransferredIterator) 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(DelegationManagerOwnershipTransferred) + 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(DelegationManagerOwnershipTransferred) + 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 *DelegationManagerOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DelegationManagerOwnershipTransferred represents a OwnershipTransferred event raised by the DelegationManager contract. +type DelegationManagerOwnershipTransferred 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 (_DelegationManager *DelegationManagerFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*DelegationManagerOwnershipTransferredIterator, 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 := _DelegationManager.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &DelegationManagerOwnershipTransferredIterator{contract: _DelegationManager.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 (_DelegationManager *DelegationManagerFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *DelegationManagerOwnershipTransferred, 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 := _DelegationManager.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(DelegationManagerOwnershipTransferred) + if err := _DelegationManager.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 (_DelegationManager *DelegationManagerFilterer) ParseOwnershipTransferred(log types.Log) (*DelegationManagerOwnershipTransferred, error) { + event := new(DelegationManagerOwnershipTransferred) + if err := _DelegationManager.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// DelegationManagerPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the DelegationManager contract. +type DelegationManagerPausedIterator struct { + Event *DelegationManagerPaused // Event containing the contract specifics 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 *DelegationManagerPausedIterator) 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(DelegationManagerPaused) + 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(DelegationManagerPaused) + 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 *DelegationManagerPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DelegationManagerPaused represents a Paused event raised by the DelegationManager contract. +type DelegationManagerPaused 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 (_DelegationManager *DelegationManagerFilterer) FilterPaused(opts *bind.FilterOpts, account []common.Address) (*DelegationManagerPausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "Paused", accountRule) + if err != nil { + return nil, err + } + return &DelegationManagerPausedIterator{contract: _DelegationManager.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 (_DelegationManager *DelegationManagerFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *DelegationManagerPaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DelegationManager.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(DelegationManagerPaused) + if err := _DelegationManager.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 (_DelegationManager *DelegationManagerFilterer) ParsePaused(log types.Log) (*DelegationManagerPaused, error) { + event := new(DelegationManagerPaused) + if err := _DelegationManager.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = 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 + + 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 *DelegationManagerPauserRegistrySetIterator) 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(DelegationManagerPauserRegistrySet) + 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(DelegationManagerPauserRegistrySet) + 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 *DelegationManagerPauserRegistrySetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerPauserRegistrySetIterator) 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 +} + +// FilterPauserRegistrySet is a free log retrieval operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6. +// +// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry) +func (_DelegationManager *DelegationManagerFilterer) FilterPauserRegistrySet(opts *bind.FilterOpts) (*DelegationManagerPauserRegistrySetIterator, error) { + + logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "PauserRegistrySet") + if err != nil { + return nil, err + } + return &DelegationManagerPauserRegistrySetIterator{contract: _DelegationManager.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 (_DelegationManager *DelegationManagerFilterer) WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *DelegationManagerPauserRegistrySet) (event.Subscription, error) { + + logs, sub, err := _DelegationManager.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(DelegationManagerPauserRegistrySet) + if err := _DelegationManager.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 (_DelegationManager *DelegationManagerFilterer) ParsePauserRegistrySet(log types.Log) (*DelegationManagerPauserRegistrySet, error) { + event := new(DelegationManagerPauserRegistrySet) + if err := _DelegationManager.contract.UnpackLog(event, "PauserRegistrySet", 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 + + 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 *DelegationManagerStakerDelegatedIterator) 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(DelegationManagerStakerDelegated) + 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(DelegationManagerStakerDelegated) + 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 *DelegationManagerStakerDelegatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerStakerDelegatedIterator) 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 +} + +// FilterStakerDelegated is a free log retrieval operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304. +// +// 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) + } + + logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "StakerDelegated", stakerRule, operatorRule) + if err != nil { + return nil, err + } + return &DelegationManagerStakerDelegatedIterator{contract: _DelegationManager.contract, event: "StakerDelegated", logs: logs, sub: sub}, nil +} + +// WatchStakerDelegated is a free log subscription operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304. +// +// Solidity: event StakerDelegated(address indexed staker, address indexed operator) +func (_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) + } + + logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "StakerDelegated", stakerRule, operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DelegationManagerStakerDelegated) + if err := _DelegationManager.contract.UnpackLog(event, "StakerDelegated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseStakerDelegated is a log parse operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304. +// +// Solidity: event StakerDelegated(address indexed staker, address indexed operator) +func (_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 +} + +// 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 + + 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 *DelegationManagerStakerForceUndelegatedIterator) 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(DelegationManagerStakerForceUndelegated) + 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(DelegationManagerStakerForceUndelegated) + 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 *DelegationManagerStakerForceUndelegatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerStakerForceUndelegatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// 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 +} + +// FilterStakerForceUndelegated is a free log retrieval operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a. +// +// 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 { + stakerRule = append(stakerRule, stakerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule) + if err != nil { + return nil, err + } + return &DelegationManagerStakerForceUndelegatedIterator{contract: _DelegationManager.contract, event: "StakerForceUndelegated", logs: logs, sub: sub}, nil +} + +// WatchStakerForceUndelegated is a free log subscription operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a. +// +// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator) +func (_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 { + stakerRule = append(stakerRule, stakerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DelegationManagerStakerForceUndelegated) + if err := _DelegationManager.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseStakerForceUndelegated is a log parse operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a. +// +// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator) +func (_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 +} + +// 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 + + 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 *DelegationManagerStakerUndelegatedIterator) 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(DelegationManagerStakerUndelegated) + 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(DelegationManagerStakerUndelegated) + 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 *DelegationManagerStakerUndelegatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerStakerUndelegatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// 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 +} + +// FilterStakerUndelegated is a free log retrieval operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676. +// +// 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, "StakerUndelegated", stakerRule, operatorRule) + if err != nil { + return nil, err + } + return &DelegationManagerStakerUndelegatedIterator{contract: _DelegationManager.contract, event: "StakerUndelegated", logs: logs, sub: sub}, nil +} + +// WatchStakerUndelegated is a free log subscription operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676. +// +// Solidity: event StakerUndelegated(address indexed staker, address indexed operator) +func (_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, "StakerUndelegated", stakerRule, operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DelegationManagerStakerUndelegated) + if err := _DelegationManager.contract.UnpackLog(event, "StakerUndelegated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseStakerUndelegated is a log parse operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676. +// +// Solidity: event StakerUndelegated(address indexed staker, address indexed operator) +func (_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 + 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 + + 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 *DelegationManagerStrategyWithdrawalDelayBlocksSetIterator) 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(DelegationManagerStrategyWithdrawalDelayBlocksSet) + 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(DelegationManagerStrategyWithdrawalDelayBlocksSet) + 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 *DelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerStrategyWithdrawalDelayBlocksSetIterator) 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 +} + +// FilterStrategyWithdrawalDelayBlocksSet is a free log retrieval operation binding the contract event 0x0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d. +// +// Solidity: event StrategyWithdrawalDelayBlocksSet(address strategy, uint256 previousValue, uint256 newValue) +func (_DelegationManager *DelegationManagerFilterer) FilterStrategyWithdrawalDelayBlocksSet(opts *bind.FilterOpts) (*DelegationManagerStrategyWithdrawalDelayBlocksSetIterator, error) { + + logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "StrategyWithdrawalDelayBlocksSet") + if err != nil { + return nil, err + } + return &DelegationManagerStrategyWithdrawalDelayBlocksSetIterator{contract: _DelegationManager.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 (_DelegationManager *DelegationManagerFilterer) WatchStrategyWithdrawalDelayBlocksSet(opts *bind.WatchOpts, sink chan<- *DelegationManagerStrategyWithdrawalDelayBlocksSet) (event.Subscription, error) { + + logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "StrategyWithdrawalDelayBlocksSet") + 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(DelegationManagerStrategyWithdrawalDelayBlocksSet) + if err := _DelegationManager.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 +} + +// ParseStrategyWithdrawalDelayBlocksSet is a log parse operation binding the contract event 0x0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d. +// +// 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 { + return nil, err + } + event.Raw = log + return event, nil +} + +// DelegationManagerUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the DelegationManager contract. +type DelegationManagerUnpausedIterator struct { + Event *DelegationManagerUnpaused // Event containing the contract specifics 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 *DelegationManagerUnpausedIterator) 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(DelegationManagerUnpaused) + 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(DelegationManagerUnpaused) + 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 *DelegationManagerUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DelegationManagerUnpaused represents a Unpaused event raised by the DelegationManager contract. +type DelegationManagerUnpaused 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 (_DelegationManager *DelegationManagerFilterer) FilterUnpaused(opts *bind.FilterOpts, account []common.Address) (*DelegationManagerUnpausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "Unpaused", accountRule) + if err != nil { + return nil, err + } + return &DelegationManagerUnpausedIterator{contract: _DelegationManager.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 (_DelegationManager *DelegationManagerFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *DelegationManagerUnpaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _DelegationManager.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(DelegationManagerUnpaused) + if err := _DelegationManager.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 (_DelegationManager *DelegationManagerFilterer) ParseUnpaused(log types.Log) (*DelegationManagerUnpaused, error) { + event := new(DelegationManagerUnpaused) + if err := _DelegationManager.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + 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 +} + +// DelegationManagerWithdrawalMigratedIterator is returned from FilterWithdrawalMigrated and is used to iterate over the raw logs and unpacked data for WithdrawalMigrated events raised by the DelegationManager contract. +type DelegationManagerWithdrawalMigratedIterator struct { + Event *DelegationManagerWithdrawalMigrated // Event containing the contract specifics 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 *DelegationManagerWithdrawalMigratedIterator) 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(DelegationManagerWithdrawalMigrated) + 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(DelegationManagerWithdrawalMigrated) + 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 *DelegationManagerWithdrawalMigratedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerWithdrawalMigratedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DelegationManagerWithdrawalMigrated represents a WithdrawalMigrated event raised by the DelegationManager contract. +type DelegationManagerWithdrawalMigrated struct { + OldWithdrawalRoot [32]byte + NewWithdrawalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawalMigrated is a free log retrieval operation binding the contract event 0xdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630. +// +// Solidity: event WithdrawalMigrated(bytes32 oldWithdrawalRoot, bytes32 newWithdrawalRoot) +func (_DelegationManager *DelegationManagerFilterer) FilterWithdrawalMigrated(opts *bind.FilterOpts) (*DelegationManagerWithdrawalMigratedIterator, error) { + + logs, sub, err := _DelegationManager.contract.FilterLogs(opts, "WithdrawalMigrated") + if err != nil { + return nil, err + } + return &DelegationManagerWithdrawalMigratedIterator{contract: _DelegationManager.contract, event: "WithdrawalMigrated", logs: logs, sub: sub}, nil +} + +// WatchWithdrawalMigrated is a free log subscription operation binding the contract event 0xdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630. +// +// Solidity: event WithdrawalMigrated(bytes32 oldWithdrawalRoot, bytes32 newWithdrawalRoot) +func (_DelegationManager *DelegationManagerFilterer) WatchWithdrawalMigrated(opts *bind.WatchOpts, sink chan<- *DelegationManagerWithdrawalMigrated) (event.Subscription, error) { + + logs, sub, err := _DelegationManager.contract.WatchLogs(opts, "WithdrawalMigrated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DelegationManagerWithdrawalMigrated) + if err := _DelegationManager.contract.UnpackLog(event, "WithdrawalMigrated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawalMigrated is a log parse operation binding the contract event 0xdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630. +// +// Solidity: event WithdrawalMigrated(bytes32 oldWithdrawalRoot, bytes32 newWithdrawalRoot) +func (_DelegationManager *DelegationManagerFilterer) ParseWithdrawalMigrated(log types.Log) (*DelegationManagerWithdrawalMigrated, error) { + event := new(DelegationManagerWithdrawalMigrated) + if err := _DelegationManager.contract.UnpackLog(event, "WithdrawalMigrated", 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/DelegationManager/tmp.abi b/pkg/bindings/DelegationManager/tmp.abi new file mode 100644 index 000000000..fadc35073 --- /dev/null +++ b/pkg/bindings/DelegationManager/tmp.abi @@ -0,0 +1,1747 @@ +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_strategyManager", + "type": "address", + "internalType": "contract IStrategyManager" + }, + { + "name": "_slasher", + "type": "address", + "internalType": "contract ISlasher" + }, + { + "name": "_eigenPodManager", + "type": "address", + "internalType": "contract IEigenPodManager" + } + ], + "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": "contract IStrategy" + } + ], + "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": "struct IDelegationManager.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": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "completeQueuedWithdrawal", + "inputs": [ + { + "name": "withdrawal", + "type": "tuple", + "internalType": "struct IDelegationManager.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": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + }, + { + "name": "tokens", + "type": "address[]", + "internalType": "contract IERC20[]" + }, + { + "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": "struct IDelegationManager.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": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + }, + { + "name": "tokens", + "type": "address[][]", + "internalType": "contract IERC20[][]" + }, + { + "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": "contract IStrategy" + }, + { + "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": "struct ISignatureUtils.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": "struct ISignatureUtils.SignatureWithExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "approverSignatureAndExpiry", + "type": "tuple", + "internalType": "struct ISignatureUtils.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": "earningsReceiver", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "eigenPodManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IEigenPodManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getDelegatableShares", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorShares", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getWithdrawalDelay", + "inputs": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "increaseDelegatedShares", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "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": "contract IPauserRegistry" + }, + { + "name": "initialPausedStatus", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_minWithdrawalDelayBlocks", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "_withdrawalDelayBlocks", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isDelegated", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isOperator", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "migrateQueuedWithdrawals", + "inputs": [ + { + "name": "withdrawalsToMigrate", + "type": "tuple[]", + "internalType": "struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]", + "components": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "withdrawerAndNonce", + "type": "tuple", + "internalType": "struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce", + "components": [ + { + "name": "withdrawer", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "name": "withdrawalStartBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "delegatedAddress", + "type": "address", + "internalType": "address" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "minWithdrawalDelayBlocks", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "modifyOperatorDetails", + "inputs": [ + { + "name": "newOperatorDetails", + "type": "tuple", + "internalType": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "operatorDetails", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorShares", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "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": "contract IPauserRegistry" + } + ], + "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": "struct IDelegationManager.QueuedWithdrawalParams[]", + "components": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "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": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "name": "metadataURI", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "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": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setStrategyWithdrawalDelayBlocks", + "inputs": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "withdrawalDelayBlocks", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "slasher", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ISlasher" + } + ], + "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": "contract IStrategyManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyWithdrawalDelayBlocks", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "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": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorMetadataURIUpdated", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "metadataURI", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorRegistered", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "operatorDetails", + "type": "tuple", + "indexed": false, + "internalType": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorSharesDecreased", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "staker", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + }, + { + "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": "contract IStrategy" + }, + { + "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": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "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": "contract IStrategy" + }, + { + "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": "WithdrawalMigrated", + "inputs": [ + { + "name": "oldWithdrawalRoot", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "newWithdrawalRoot", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "WithdrawalQueued", + "inputs": [ + { + "name": "withdrawalRoot", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "withdrawal", + "type": "tuple", + "indexed": false, + "internalType": "struct IDelegationManager.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": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + } + ], + "anonymous": false + } +] diff --git a/pkg/bindings/DelegationManager/tmp.bin b/pkg/bindings/DelegationManager/tmp.bin new file mode 100644 index 000000000..7cae452f0 --- /dev/null +++ b/pkg/bindings/DelegationManager/tmp.bin @@ -0,0 +1 @@ +0x6101006040523480156200001257600080fd5b506040516200618138038062006181833981016040819052620000359162000140565b6001600160a01b0380841660805280821660c052821660a0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051615f516200023060003960006127790152600081816105e7015281816110ae0152818161142a01528181611e0d01528181612ad2015281816141390152614625015260006107d701526000818161052f0152818161107c015281816113f80152818161172001528181611ea101528181612b9f01528181612d220152818161425f01526146cb0152615f516000f3fe608060405234801561001057600080fd5b50600436106103785760003560e01c806360d7faed116101d3578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b01461097d578063f2fde38b14610990578063f698da25146109a3578063fabc1cbc146109ab57600080fd5b8063cf80873e14610936578063da8be86414610957578063eea9064b1461096a57600080fd5b8063c488375a116100de578063c488375a14610853578063c5e480db14610873578063c94b511114610919578063ca661c041461092c57600080fd5b8063b7f06ebe146107f9578063bb45fef21461081c578063c448feb81461084a57600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461078457806399be81c81461079f578063a1788484146107b2578063b1344271146107d257600080fd5b8063886f1195146107405780638da5cb5b14610753578063900413471461076457600080fd5b80636d70f7ae116101ad5780636d70f7ae146106e7578063715018a6146106fa578063778e55f3146107025780637f5480711461072d57600080fd5b806360d7faed14610698578063635bbd10146106ab57806365da1264146106be57600080fd5b806329c77d4f116102ad5780634fc40b611161024b5780635ac86ab7116102255780635ac86ab71461062e5780635c975abb146106515780635cfe8d2c146106595780635f966f141461066c57600080fd5b80634fc40b6114610609578063595c6a6714610613578063597b36da1461061b57600080fd5b80633cdeb5e0116102875780633cdeb5e0146105695780633e28391d1461059857806343377382146105bb5780634665bcda146105e257600080fd5b806329c77d4f146104f7578063334043961461051757806339b70e381461052a57600080fd5b8063136439dd1161031a5780631bbce091116102f45780631bbce0911461049757806320606b70146104aa57806322bf40e4146104d157806328a573ae146104e457600080fd5b8063136439dd146104385780631522bf021461044b578063169283651461045e57600080fd5b80630dd8dd02116103565780630dd8dd02146103dd5780630f589e59146103fd57806310d67a2f14610412578063132d49671461042557600080fd5b80630449ca391461037d57806304a4f979146103a35780630b9f487a146103ca575b600080fd5b61039061038b366004614adb565b6109be565b6040519081526020015b60405180910390f35b6103907f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6103906103d8366004614b41565b610a43565b6103f06103eb366004614adb565b610b05565b60405161039a9190614b9c565b61041061040b366004614c39565b610e6e565b005b610410610420366004614c8c565b610fbe565b610410610433366004614cb0565b611071565b610410610446366004614cf1565b611128565b610410610459366004614d0a565b611267565b61039061046c366004614c8c565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103906104a5366004614cb0565b61127b565b6103907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6104106104df366004614d75565b6112a9565b6104106104f2366004614cb0565b6113ed565b610390610505366004614c8c565b609b6020526000908152604090205481565b610410610525366004614e1c565b61149d565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161039a565b610551610577366004614c8c565b6001600160a01b039081166000908152609960205260409020600101541690565b6105ab6105a6366004614c8c565b6115da565b604051901515815260200161039a565b6103907f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6103906213c68081565b6104106115fa565b61039061062936600461513b565b6116c1565b6105ab61063c366004615177565b606654600160ff9092169190911b9081161490565b606654610390565b6104106106673660046151ed565b6116f1565b61055161067a366004614c8c565b6001600160a01b039081166000908152609960205260409020541690565b6104106106a636600461534d565b61199c565b6104106106b9366004614cf1565b611a37565b6105516106cc366004614c8c565b609a602052600090815260409020546001600160a01b031681565b6105ab6106f5366004614c8c565b611a48565b610410611a68565b6103906107103660046153dc565b609860209081526000928352604080842090915290825290205481565b61041061073b3660046154bd565b611a7c565b606554610551906001600160a01b031681565b6033546001600160a01b0316610551565b61077761077236600461554d565b611b81565b60405161039a91906155d7565b61055173beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6104106107ad3660046155ea565b611c5b565b6103906107c0366004614c8c565b609f6020526000908152604090205481565b6105517f000000000000000000000000000000000000000000000000000000000000000081565b6105ab610807366004614cf1565b609e6020526000908152604090205460ff1681565b6105ab61082a36600461561f565b609c60209081526000928352604080842090915290825290205460ff1681565b610390609d5481565b610390610861366004614c8c565b60a16020526000908152604090205481565b6108e3610881366004614c8c565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff169082015260600161039a565b61039061092736600461564b565b611d2d565b61039062034bc081565b610949610944366004614c8c565b611de6565b60405161039a9291906156cc565b6103f0610965366004614c8c565b61219e565b6104106109783660046156f1565b612662565b61041061098b366004615749565b61266e565b61041061099e366004614c8c565b6126ff565b610390612775565b6104106109b9366004614cf1565b6127b3565b609d54600090815b83811015610a3b57600060a160008787858181106109e6576109e6615765565b90506020020160208101906109fb9190614c8c565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905082811115610a2a578092505b50610a3481615791565b90506109c6565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610ac1612775565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b3a5760405162461bcd60e51b8152600401610b31906157ac565b60405180910390fd5b6000836001600160401b03811115610b5457610b54614ebe565b604051908082528060200260200182016040528015610b7d578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610e6357868682818110610bb857610bb8615765565b9050602002810190610bca91906157e3565b610bd8906020810190615803565b9050878783818110610bec57610bec615765565b9050602002810190610bfe91906157e3565b610c089080615803565b905014610c7d5760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b31565b33878783818110610c9057610c90615765565b9050602002810190610ca291906157e3565b610cb3906060810190604001614c8c565b6001600160a01b031614610d2f5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610b31565b610e343383898985818110610d4657610d46615765565b9050602002810190610d5891906157e3565b610d69906060810190604001614c8c565b8a8a86818110610d7b57610d7b615765565b9050602002810190610d8d91906157e3565b610d979080615803565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610ddd57610ddd615765565b9050602002810190610def91906157e3565b610dfd906020810190615803565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061290f92505050565b838281518110610e4657610e46615765565b602090810291909101015280610e5b81615791565b915050610b9e565b509095945050505050565b336000908152609960205260409020546001600160a01b031615610f085760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b31565b610f123384612ecf565b604080518082019091526060815260006020820152610f34338083600061316b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f6d919061584c565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fb092919061589e565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611011573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103591906158cd565b6001600160a01b0316336001600160a01b0316146110655760405162461bcd60e51b8152600401610b31906158ea565b61106e81613510565b50565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110d05750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6110ec5760405162461bcd60e51b8152600401610b3190615934565b6110f5836115da565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613607565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111949190615991565b6111b05760405162461bcd60e51b8152600401610b31906159ae565b606654818116146112295760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b61126f613682565b611121848484846136dc565b6001600160a01b0383166000908152609b60205260408120546112a085828686611d2d565b95945050505050565b600054610100900460ff16158080156112c95750600054600160ff909116105b806112e35750303b1580156112e3575060005460ff166001145b6113465760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b31565b6000805460ff191660011790558015611369576000805461ff0019166101001790555b6113738888613902565b61137b6139e8565b60975561138789613a7f565b61139086613ad1565b61139c858585856136dc565b80156113e2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061144c5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6114685760405162461bcd60e51b8152600401610b3190615934565b611471836115da565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613bcb565b606654600290600490811614156114c65760405162461bcd60e51b8152600401610b31906157ac565b600260c95414156115195760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b31565b600260c95560005b888110156115c9576115b98a8a8381811061153e5761153e615765565b905060200281019061155091906159f6565b89898481811061156257611562615765565b90506020028101906115749190615803565b89898681811061158657611586615765565b9050602002013588888781811061159f5761159f615765565b90506020020160208101906115b49190615a0c565b613c46565b6115c281615791565b9050611521565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116669190615991565b6116825760405162461bcd60e51b8152600401610b31906159ae565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116d49190615a9d565b604051602081830303815290604052805190602001209050919050565b60005b815181101561199857600082828151811061171157611711615765565b602002602001015190506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd293f6f846040518263ffffffff1660e01b815260040161176a9190615ab0565b60408051808303816000875af1158015611788573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ac9190615b5c565b91509150811561198a576040808401516001600160a01b0381166000908152609f602052918220805491928291906117e383615791565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff16815260200187600001518152602001876020015181525090506000611863826116c1565b6000818152609e602052604090205490915060ff16156118f95760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b31565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9906119449083908590615b8a565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b8360010193505050506116f4565b5050565b606654600290600490811614156119c55760405162461bcd60e51b8152600401610b31906157ac565b600260c9541415611a185760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b31565b600260c955611a2a8686868686613c46565b5050600160c95550505050565b611a3f613682565b61106e81613ad1565b6001600160a01b0390811660009081526099602052604090205416151590565b611a70613682565b611a7a6000613a7f565b565b4283602001511015611b005760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b31565b6000609b6000876001600160a01b03166001600160a01b031681526020019081526020016000205490506000611b3c8783888860200151611d2d565b6001600160a01b0388166000908152609b602052604090206001840190558551909150611b6c9088908390614430565b611b788787868661316b565b50505050505050565b6060600082516001600160401b03811115611b9e57611b9e614ebe565b604051908082528060200260200182016040528015611bc7578160200160208202803683370190505b50905060005b8351811015610a3b576001600160a01b03851660009081526098602052604081208551909190869084908110611c0557611c05615765565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611c4057611c40615765565b6020908102919091010152611c5481615791565b9050611bcd565b611c6433611a48565b611ce65760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b31565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d2192919061589e565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611da3612775565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611e56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7a9190615ba3565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611eea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f129190810190615c17565b9150915060008313611f2957909590945092505050565b606080835160001415611fe3576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611f9e57611f9e615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611fd257611fd2615765565b602002602001018181525050612191565b8351611ff0906001615cd1565b6001600160401b0381111561200757612007614ebe565b604051908082528060200260200182016040528015612030578160200160208202803683370190505b50915081516001600160401b0381111561204c5761204c614ebe565b604051908082528060200260200182016040528015612075578160200160208202803683370190505b50905060005b845181101561210f5784818151811061209657612096615765565b60200260200101518382815181106120b0576120b0615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106120e2576120e2615765565b60200260200101518282815181106120fc576120fc615765565b602090810291909101015260010161207b565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600184516121349190615ce9565b8151811061214457612144615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600184516121749190615ce9565b8151811061218457612184615765565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156121ca5760405162461bcd60e51b8152600401610b31906157ac565b6121d3836115da565b6122535760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b31565b61225c83611a48565b156122cf5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b31565b6001600160a01b03831661234b5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b31565b6001600160a01b038084166000818152609a60205260409020549091169033148061237e5750336001600160a01b038216145b806123a557506001600160a01b038181166000908152609960205260409020600101541633145b6124175760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b31565b60008061242386611de6565b9092509050336001600160a01b0387161461247957826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b031916905581516124fb576040805160008152602081019091529450612659565b81516001600160401b0381111561251457612514614ebe565b60405190808252806020026020018201604052801561253d578160200160208202803683370190505b50945060005b8251811015612657576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106125a3576125a3615765565b6020026020010151826000815181106125be576125be615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106125f0576125f0615765565b60200260200101518160008151811061260b5761260b615765565b60200260200101818152505061262489878b858561290f565b88848151811061263657612636615765565b6020026020010181815250505050808061264f90615791565b915050612543565b505b50505050919050565b6111233384848461316b565b61267733611a48565b6126f55760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b31565b61106e3382612ecf565b612707613682565b6001600160a01b03811661276c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b31565b61106e81613a7f565b60007f00000000000000000000000000000000000000000000000000000000000000004614156127a6575060975490565b6127ae6139e8565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282a91906158cd565b6001600160a01b0316336001600160a01b03161461285a5760405162461bcd60e51b8152600401610b31906158ea565b6066541981196066541916146128d85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161125c565b60006001600160a01b0386166129a65760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b31565b8251612a305760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b31565b60005b8351811015612ddd576001600160a01b03861615612a8957612a898688868481518110612a6257612a62615765565b6020026020010151868581518110612a7c57612a7c615765565b6020026020010151613607565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612ab957612ab9615765565b60200260200101516001600160a01b03161415612b82577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb8988858481518110612b1257612b12615765565b60200260200101516040518363ffffffff1660e01b8152600401612b4b9291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612b6557600080fd5b505af1158015612b79573d6000803e3d6000fd5b50505050612dd5565b846001600160a01b0316876001600160a01b03161480612c5457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612bde57612bde615765565b60200260200101516040518263ffffffff1660e01b8152600401612c1191906001600160a01b0391909116815260200190565b602060405180830381865afa158015612c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c529190615991565b155b612d205760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610b31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612d6257612d62615765565b6020026020010151868581518110612d7c57612d7c615765565b60200260200101516040518463ffffffff1660e01b8152600401612da293929190615d00565b600060405180830381600087803b158015612dbc57600080fd5b505af1158015612dd0573d6000803e3d6000fd5b505050505b600101612a33565b506001600160a01b0386166000908152609f60205260408120805491829190612e0583615791565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612e6d826116c1565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612ebb9083908590615b8a565b60405180910390a198975050505050505050565b6000612ede6020830183614c8c565b6001600160a01b03161415612f785760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b31565b6213c680612f8c6060830160408401615d24565b63ffffffff1611156130415760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b31565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061307d9060608401908401615d24565b63ffffffff1610156131135760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b31565b6001600160a01b038216600090815260996020526040902081906131378282615d61565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d2190849061584c565b606654600090600190811614156131945760405162461bcd60e51b8152600401610b31906157ac565b61319d856115da565b1561321a5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b31565b61322384611a48565b6132a35760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b31565b6001600160a01b038085166000908152609960205260409020600101541680158015906132d95750336001600160a01b03821614155b80156132ee5750336001600160a01b03861614155b1561345b57428460200151101561336d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156134075760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff19166001179055850151613448908890889085908890610a43565b905061345982828760000151614430565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806134ba88611de6565b9150915060005b82518110156113e257613508888a8584815181106134e1576134e1615765565b60200260200101518585815181106134fb576134fb615765565b6020026020010151613bcb565b6001016134c1565b6001600160a01b03811661359e5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b31565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061363e908490615ce9565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fb093929190615d00565b6033546001600160a01b03163314611a7a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b31565b8281146137645760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610b31565b8260005b818110156138fa57600086868381811061378457613784615765565b90506020020160208101906137999190614c8c565b6001600160a01b038116600090815260a160205260408120549192508686858181106137c7576137c7615765565b90506020020135905062034bc081111561388b5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610b31565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806138f390615791565b9050613768565b505050505050565b6065546001600160a01b031615801561392357506001600160a01b03821615155b6139a55760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261199882613510565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc0811115613b8a5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610b31565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613c02908490615cd1565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fb093929190615d00565b6000613c5461062987615dc4565b6000818152609e602052604090205490915060ff16613cd55760405162461bcd60e51b81526020600482015260436024820152600080516020615efc83398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610b31565b609d544390613cea60a0890160808a01615d24565b63ffffffff16613cfa9190615cd1565b1115613d825760405162461bcd60e51b815260206004820152605f6024820152600080516020615efc83398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610b31565b613d926060870160408801614c8c565b6001600160a01b0316336001600160a01b031614613e1f5760405162461bcd60e51b81526020600482015260506024820152600080516020615efc83398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610b31565b8115613ea157613e3260a0870187615803565b85149050613ea15760405162461bcd60e51b81526020600482015260426024820152600080516020615efc83398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610b31565b6000818152609e60205260409020805460ff1916905581156140065760005b613ecd60a0880188615803565b9050811015614000574360a16000613ee860a08b018b615803565b85818110613ef857613ef8615765565b9050602002016020810190613f0d9190614c8c565b6001600160a01b03168152602081019190915260400160002054613f3760a08a0160808b01615d24565b63ffffffff16613f479190615cd1565b1115613f655760405162461bcd60e51b8152600401610b3190615dd6565b613ff8613f756020890189614c8c565b33613f8360a08b018b615803565b85818110613f9357613f93615765565b9050602002016020810190613fa89190614c8c565b613fb560c08c018c615803565b86818110613fc557613fc5615765565b905060200201358a8a87818110613fde57613fde615765565b9050602002016020810190613ff39190614c8c565b6145ea565b600101613ec0565b506143f5565b336000908152609a60205260408120546001600160a01b0316905b61402e60a0890189615803565b90508110156143f2574360a1600061404960a08c018c615803565b8581811061405957614059615765565b905060200201602081019061406e9190614c8c565b6001600160a01b0316815260208101919091526040016000205461409860a08b0160808c01615d24565b63ffffffff166140a89190615cd1565b11156140c65760405162461bcd60e51b8152600401610b3190615dd6565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06140e860a08a018a615803565b838181106140f8576140f8615765565b905060200201602081019061410d9190614c8c565b6001600160a01b0316141561425d57600061412b60208a018a614c8c565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c8361416c60c08e018e615803565b8781811061417c5761417c615765565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af11580156141d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f49190615ba3565b6001600160a01b038084166000908152609a602052604090205491925016801561425557614255818461422a60a08f018f615803565b8881811061423a5761423a615765565b905060200201602081019061424f9190614c8c565b85613bcb565b5050506143ea565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea13389898581811061429f5761429f615765565b90506020020160208101906142b49190614c8c565b6142c160a08d018d615803565b868181106142d1576142d1615765565b90506020020160208101906142e69190614c8c565b6142f360c08e018e615803565b8781811061430357614303615765565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561436357600080fd5b505af1158015614377573d6000803e3d6000fd5b505050506001600160a01b038216156143ea576143ea823361439c60a08c018c615803565b858181106143ac576143ac615765565b90506020020160208101906143c19190614c8c565b6143ce60c08d018d615803565b868181106143de576143de615765565b90506020020135613bcb565b600101614021565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b1561454a57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144709086908690600401615e5e565b602060405180830381865afa15801561448d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144b19190615ebb565b6001600160e01b031916146111235760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b31565b826001600160a01b031661455e838361472a565b6001600160a01b0316146111235760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b31565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156146955760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061465e90889088908790600401615d00565b600060405180830381600087803b15801561467857600080fd5b505af115801561468c573d6000803e3d6000fd5b50505050614723565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561470f57600080fd5b505af11580156113e2573d6000803e3d6000fd5b5050505050565b60008060006147398585614746565b91509150610a3b816147b6565b60008082516041141561477d5760208301516040840151606085015160001a61477187828585614971565b945094505050506147af565b8251604014156147a7576020830151604084015161479c868383614a5e565b9350935050506147af565b506000905060025b9250929050565b60008160048111156147ca576147ca615ee5565b14156147d35750565b60018160048111156147e7576147e7615ee5565b14156148355760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b31565b600281600481111561484957614849615ee5565b14156148975760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b31565b60038160048111156148ab576148ab615ee5565b14156149045760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b31565b600481600481111561491857614918615ee5565b141561106e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b31565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156149a85750600090506003614a55565b8460ff16601b141580156149c057508460ff16601c14155b156149d15750600090506004614a55565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614a25573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614a4e57600060019250925050614a55565b9150600090505b94509492505050565b6000806001600160ff1b03831681614a7b60ff86901c601b615cd1565b9050614a8987828885614971565b935093505050935093915050565b60008083601f840112614aa957600080fd5b5081356001600160401b03811115614ac057600080fd5b6020830191508360208260051b85010111156147af57600080fd5b60008060208385031215614aee57600080fd5b82356001600160401b03811115614b0457600080fd5b614b1085828601614a97565b90969095509350505050565b6001600160a01b038116811461106e57600080fd5b8035614b3c81614b1c565b919050565b600080600080600060a08688031215614b5957600080fd5b8535614b6481614b1c565b94506020860135614b7481614b1c565b93506040860135614b8481614b1c565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b81811015614bd457835183529284019291840191600101614bb8565b50909695505050505050565b600060608284031215614bf257600080fd5b50919050565b60008083601f840112614c0a57600080fd5b5081356001600160401b03811115614c2157600080fd5b6020830191508360208285010111156147af57600080fd5b600080600060808486031215614c4e57600080fd5b614c588585614be0565b925060608401356001600160401b03811115614c7357600080fd5b614c7f86828701614bf8565b9497909650939450505050565b600060208284031215614c9e57600080fd5b8135614ca981614b1c565b9392505050565b600080600060608486031215614cc557600080fd5b8335614cd081614b1c565b92506020840135614ce081614b1c565b929592945050506040919091013590565b600060208284031215614d0357600080fd5b5035919050565b60008060008060408587031215614d2057600080fd5b84356001600160401b0380821115614d3757600080fd5b614d4388838901614a97565b90965094506020870135915080821115614d5c57600080fd5b50614d6987828801614a97565b95989497509550505050565b60008060008060008060008060c0898b031215614d9157600080fd5b8835614d9c81614b1c565b97506020890135614dac81614b1c565b9650604089013595506060890135945060808901356001600160401b0380821115614dd657600080fd5b614de28c838d01614a97565b909650945060a08b0135915080821115614dfb57600080fd5b50614e088b828c01614a97565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614e3857600080fd5b88356001600160401b0380821115614e4f57600080fd5b614e5b8c838d01614a97565b909a50985060208b0135915080821115614e7457600080fd5b614e808c838d01614a97565b909850965060408b0135915080821115614e9957600080fd5b614ea58c838d01614a97565b909650945060608b0135915080821115614dfb57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614ef657614ef6614ebe565b60405290565b604080519081016001600160401b0381118282101715614ef657614ef6614ebe565b60405160c081016001600160401b0381118282101715614ef657614ef6614ebe565b604051601f8201601f191681016001600160401b0381118282101715614f6857614f68614ebe565b604052919050565b63ffffffff8116811461106e57600080fd5b8035614b3c81614f70565b60006001600160401b03821115614fa657614fa6614ebe565b5060051b60200190565b600082601f830112614fc157600080fd5b81356020614fd6614fd183614f8d565b614f40565b82815260059290921b84018101918181019086841115614ff557600080fd5b8286015b8481101561501957803561500c81614b1c565b8352918301918301614ff9565b509695505050505050565b600082601f83011261503557600080fd5b81356020615045614fd183614f8d565b82815260059290921b8401810191818101908684111561506457600080fd5b8286015b848110156150195780358352918301918301615068565b600060e0828403121561509157600080fd5b615099614ed4565b90506150a482614b31565b81526150b260208301614b31565b60208201526150c360408301614b31565b6040820152606082013560608201526150de60808301614f82565b608082015260a08201356001600160401b03808211156150fd57600080fd5b61510985838601614fb0565b60a084015260c084013591508082111561512257600080fd5b5061512f84828501615024565b60c08301525092915050565b60006020828403121561514d57600080fd5b81356001600160401b0381111561516357600080fd5b61516f8482850161507f565b949350505050565b60006020828403121561518957600080fd5b813560ff81168114614ca957600080fd5b6000604082840312156151ac57600080fd5b6151b4614efc565b905081356151c181614b1c565b815260208201356bffffffffffffffffffffffff811681146151e257600080fd5b602082015292915050565b6000602080838503121561520057600080fd5b82356001600160401b038082111561521757600080fd5b818501915085601f83011261522b57600080fd5b8135615239614fd182614f8d565b81815260059190911b8301840190848101908883111561525857600080fd5b8585015b83811015615332578035858111156152745760008081fd5b860160e0818c03601f190181131561528c5760008081fd5b615294614f1e565b89830135888111156152a65760008081fd5b6152b48e8c83870101614fb0565b825250604080840135898111156152cb5760008081fd5b6152d98f8d83880101615024565b8c8401525060606152eb818601614b31565b82840152608091506152ff8f83870161519a565b9083015261530f60c08501614f82565b9082015261531e838301614b31565b60a08201528552505091860191860161525c565b5098975050505050505050565b801515811461106e57600080fd5b60008060008060006080868803121561536557600080fd5b85356001600160401b038082111561537c57600080fd5b9087019060e0828a03121561539057600080fd5b909550602087013590808211156153a657600080fd5b506153b388828901614a97565b9095509350506040860135915060608601356153ce8161533f565b809150509295509295909350565b600080604083850312156153ef57600080fd5b82356153fa81614b1c565b9150602083013561540a81614b1c565b809150509250929050565b60006040828403121561542757600080fd5b61542f614efc565b905081356001600160401b038082111561544857600080fd5b818401915084601f83011261545c57600080fd5b813560208282111561547057615470614ebe565b615482601f8301601f19168201614f40565b9250818352868183860101111561549857600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a086880312156154d557600080fd5b85356154e081614b1c565b945060208601356154f081614b1c565b935060408601356001600160401b038082111561550c57600080fd5b61551889838a01615415565b9450606088013591508082111561552e57600080fd5b5061553b88828901615415565b95989497509295608001359392505050565b6000806040838503121561556057600080fd5b823561556b81614b1c565b915060208301356001600160401b0381111561558657600080fd5b61559285828601614fb0565b9150509250929050565b600081518084526020808501945080840160005b838110156155cc578151875295820195908201906001016155b0565b509495945050505050565b602081526000614ca9602083018461559c565b600080602083850312156155fd57600080fd5b82356001600160401b0381111561561357600080fd5b614b1085828601614bf8565b6000806040838503121561563257600080fd5b823561563d81614b1c565b946020939093013593505050565b6000806000806080858703121561566157600080fd5b843561566c81614b1c565b935060208501359250604085013561568381614b1c565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156155cc5781516001600160a01b0316875295820195908201906001016156a7565b6040815260006156df6040830185615693565b82810360208401526112a0818561559c565b60008060006060848603121561570657600080fd5b833561571181614b1c565b925060208401356001600160401b0381111561572c57600080fd5b61573886828701615415565b925050604084013590509250925092565b60006060828403121561575b57600080fd5b614ca98383614be0565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156157a5576157a561577b565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126157f957600080fd5b9190910192915050565b6000808335601e1984360301811261581a57600080fd5b8301803591506001600160401b0382111561583457600080fd5b6020019150600581901b36038213156147af57600080fd5b60608101823561585b81614b1c565b6001600160a01b03908116835260208401359061587782614b1c565b166020830152604083013561588b81614f70565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156158df57600080fd5b8151614ca981614b1c565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b6000602082840312156159a357600080fd5b8151614ca98161533f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126157f957600080fd5b600060208284031215615a1e57600080fd5b8135614ca98161533f565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a0850152615a8460e0850182615693565b905060c083015184820360c08601526112a0828261559c565b602081526000614ca96020830184615a29565b602081526000825160e06020840152615acd610100840182615693565b90506020840151601f19848303016040850152615aea828261559c565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a0850152506080840151615b4260c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152610a3b565b60008060408385031215615b6f57600080fd5b8251615b7a8161533f565b6020939093015192949293505050565b82815260406020820152600061516f6040830184615a29565b600060208284031215615bb557600080fd5b5051919050565b600082601f830112615bcd57600080fd5b81516020615bdd614fd183614f8d565b82815260059290921b84018101918181019086841115615bfc57600080fd5b8286015b848110156150195780518352918301918301615c00565b60008060408385031215615c2a57600080fd5b82516001600160401b0380821115615c4157600080fd5b818501915085601f830112615c5557600080fd5b81516020615c65614fd183614f8d565b82815260059290921b84018101918181019089841115615c8457600080fd5b948201945b83861015615cab578551615c9c81614b1c565b82529482019490820190615c89565b91880151919650909350505080821115615cc457600080fd5b5061559285828601615bbc565b60008219821115615ce457615ce461577b565b500190565b600082821015615cfb57615cfb61577b565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615d3657600080fd5b8135614ca981614f70565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615d6c81614b1c565b615d768183615d41565b50600181016020830135615d8981614b1c565b615d938183615d41565b506040830135615da281614f70565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615dd0368361507f565b92915050565b6020808252606e90820152600080516020615efc83398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b81811015615e9257858101830151858201606001528201615e76565b81811115615ea4576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615ecd57600080fd5b81516001600160e01b031981168114614ca957600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a264697066735822122057f5a81866086e44b0f7f934571107d1950fe9f87198361955f29ecceeaaa5eb64736f6c634300080c0033 diff --git a/pkg/bindings/DelegationManagerStorage/binding.go b/pkg/bindings/DelegationManagerStorage/binding.go new file mode 100644 index 000000000..d342ab6c8 --- /dev/null +++ b/pkg/bindings/DelegationManagerStorage/binding.go @@ -0,0 +1,3211 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package DelegationManagerStorage + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IDelegationManagerOperatorDetails is an auto generated low-level Go binding around an user-defined struct. +type IDelegationManagerOperatorDetails struct { + EarningsReceiver common.Address + DelegationApprover common.Address + StakerOptOutWindowBlocks uint32 +} + +// IDelegationManagerQueuedWithdrawalParams is an auto generated low-level Go binding around an user-defined struct. +type IDelegationManagerQueuedWithdrawalParams struct { + Strategies []common.Address + Shares []*big.Int + Withdrawer common.Address +} + +// IDelegationManagerWithdrawal is an auto generated low-level Go binding around an user-defined struct. +type IDelegationManagerWithdrawal struct { + Staker common.Address + DelegatedTo common.Address + Withdrawer common.Address + Nonce *big.Int + StartBlock uint32 + Strategies []common.Address + Shares []*big.Int +} + +// ISignatureUtilsSignatureWithExpiry is an auto generated low-level Go binding around an user-defined struct. +type ISignatureUtilsSignatureWithExpiry struct { + Signature []byte + Expiry *big.Int +} + +// IStrategyManagerDeprecatedStructQueuedWithdrawal is an auto generated low-level Go binding around an user-defined struct. +type IStrategyManagerDeprecatedStructQueuedWithdrawal struct { + Strategies []common.Address + Shares []*big.Int + Staker common.Address + WithdrawerAndNonce IStrategyManagerDeprecatedStructWithdrawerAndNonce + WithdrawalStartBlock uint32 + DelegatedAddress common.Address +} + +// IStrategyManagerDeprecatedStructWithdrawerAndNonce is an auto generated low-level Go binding around an user-defined struct. +type IStrategyManagerDeprecatedStructWithdrawerAndNonce struct { + Withdrawer common.Address + Nonce *big.Int +} + +// 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\":\"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\":\"earningsReceiver\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"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\":\"migrateQueuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawalsToQueue\",\"type\":\"tuple[]\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_QueuedWithdrawal[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"components\":[{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"minWithdrawalDelayBlocks\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyOperatorDetails\",\"inputs\":[{\"name\":\"newOperatorDetails\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorDetails\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"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\":\"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\":\"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\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorMetadataURIUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRegistered\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDetails\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSharesDecreased\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSharesIncreased\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"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\":\"WithdrawalMigrated\",\"inputs\":[{\"name\":\"oldWithdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"newWithdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalQueued\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"withdrawal\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManager.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"anonymous\":false}]", +} + +// DelegationManagerStorageABI is the input ABI used to generate the binding from. +// Deprecated: Use DelegationManagerStorageMetaData.ABI instead. +var DelegationManagerStorageABI = DelegationManagerStorageMetaData.ABI + +// DelegationManagerStorage is an auto generated Go binding around an Ethereum contract. +type DelegationManagerStorage struct { + DelegationManagerStorageCaller // Read-only binding to the contract + DelegationManagerStorageTransactor // Write-only binding to the contract + DelegationManagerStorageFilterer // Log filterer for contract events +} + +// DelegationManagerStorageCaller is an auto generated read-only Go binding around an Ethereum contract. +type DelegationManagerStorageCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DelegationManagerStorageTransactor is an auto generated write-only Go binding around an Ethereum contract. +type DelegationManagerStorageTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DelegationManagerStorageFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type DelegationManagerStorageFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DelegationManagerStorageSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type DelegationManagerStorageSession struct { + Contract *DelegationManagerStorage // 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 +} + +// DelegationManagerStorageCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type DelegationManagerStorageCallerSession struct { + Contract *DelegationManagerStorageCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// DelegationManagerStorageTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type DelegationManagerStorageTransactorSession struct { + Contract *DelegationManagerStorageTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// DelegationManagerStorageRaw is an auto generated low-level Go binding around an Ethereum contract. +type DelegationManagerStorageRaw struct { + Contract *DelegationManagerStorage // Generic contract binding to access the raw methods on +} + +// DelegationManagerStorageCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type DelegationManagerStorageCallerRaw struct { + Contract *DelegationManagerStorageCaller // Generic read-only contract binding to access the raw methods on +} + +// DelegationManagerStorageTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type DelegationManagerStorageTransactorRaw struct { + Contract *DelegationManagerStorageTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewDelegationManagerStorage creates a new instance of DelegationManagerStorage, bound to a specific deployed contract. +func NewDelegationManagerStorage(address common.Address, backend bind.ContractBackend) (*DelegationManagerStorage, error) { + contract, err := bindDelegationManagerStorage(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &DelegationManagerStorage{DelegationManagerStorageCaller: DelegationManagerStorageCaller{contract: contract}, DelegationManagerStorageTransactor: DelegationManagerStorageTransactor{contract: contract}, DelegationManagerStorageFilterer: DelegationManagerStorageFilterer{contract: contract}}, nil +} + +// NewDelegationManagerStorageCaller creates a new read-only instance of DelegationManagerStorage, bound to a specific deployed contract. +func NewDelegationManagerStorageCaller(address common.Address, caller bind.ContractCaller) (*DelegationManagerStorageCaller, error) { + contract, err := bindDelegationManagerStorage(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &DelegationManagerStorageCaller{contract: contract}, nil +} + +// NewDelegationManagerStorageTransactor creates a new write-only instance of DelegationManagerStorage, bound to a specific deployed contract. +func NewDelegationManagerStorageTransactor(address common.Address, transactor bind.ContractTransactor) (*DelegationManagerStorageTransactor, error) { + contract, err := bindDelegationManagerStorage(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &DelegationManagerStorageTransactor{contract: contract}, nil +} + +// NewDelegationManagerStorageFilterer creates a new log filterer instance of DelegationManagerStorage, bound to a specific deployed contract. +func NewDelegationManagerStorageFilterer(address common.Address, filterer bind.ContractFilterer) (*DelegationManagerStorageFilterer, error) { + contract, err := bindDelegationManagerStorage(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &DelegationManagerStorageFilterer{contract: contract}, nil +} + +// bindDelegationManagerStorage binds a generic wrapper to an already deployed contract. +func bindDelegationManagerStorage(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := DelegationManagerStorageMetaData.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 (_DelegationManagerStorage *DelegationManagerStorageRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _DelegationManagerStorage.Contract.DelegationManagerStorageCaller.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 (_DelegationManagerStorage *DelegationManagerStorageRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DelegationManagerStorage.Contract.DelegationManagerStorageTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_DelegationManagerStorage *DelegationManagerStorageRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _DelegationManagerStorage.Contract.DelegationManagerStorageTransactor.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 (_DelegationManagerStorage *DelegationManagerStorageCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _DelegationManagerStorage.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 (_DelegationManagerStorage *DelegationManagerStorageTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _DelegationManagerStorage.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_DelegationManagerStorage *DelegationManagerStorageTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _DelegationManagerStorage.Contract.contract.Transact(opts, method, params...) +} + +// DELEGATIONAPPROVALTYPEHASH is a free data retrieval call binding the contract method 0x04a4f979. +// +// Solidity: function DELEGATION_APPROVAL_TYPEHASH() view returns(bytes32) +func (_DelegationManagerStorage *DelegationManagerStorageCaller) DELEGATIONAPPROVALTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _DelegationManagerStorage.contract.Call(opts, &out, "DELEGATION_APPROVAL_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DELEGATIONAPPROVALTYPEHASH is a free data retrieval call binding the contract method 0x04a4f979. +// +// Solidity: function DELEGATION_APPROVAL_TYPEHASH() view returns(bytes32) +func (_DelegationManagerStorage *DelegationManagerStorageSession) DELEGATIONAPPROVALTYPEHASH() ([32]byte, error) { + return _DelegationManagerStorage.Contract.DELEGATIONAPPROVALTYPEHASH(&_DelegationManagerStorage.CallOpts) +} + +// DELEGATIONAPPROVALTYPEHASH is a free data retrieval call binding the contract method 0x04a4f979. +// +// Solidity: function DELEGATION_APPROVAL_TYPEHASH() view returns(bytes32) +func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) DELEGATIONAPPROVALTYPEHASH() ([32]byte, error) { + 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. +// +// Solidity: function STAKER_DELEGATION_TYPEHASH() view returns(bytes32) +func (_DelegationManagerStorage *DelegationManagerStorageCaller) STAKERDELEGATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _DelegationManagerStorage.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 (_DelegationManagerStorage *DelegationManagerStorageSession) STAKERDELEGATIONTYPEHASH() ([32]byte, error) { + return _DelegationManagerStorage.Contract.STAKERDELEGATIONTYPEHASH(&_DelegationManagerStorage.CallOpts) +} + +// STAKERDELEGATIONTYPEHASH is a free data retrieval call binding the contract method 0x43377382. +// +// Solidity: function STAKER_DELEGATION_TYPEHASH() view returns(bytes32) +func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) STAKERDELEGATIONTYPEHASH() ([32]byte, error) { + return _DelegationManagerStorage.Contract.STAKERDELEGATIONTYPEHASH(&_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) +func (_DelegationManagerStorage *DelegationManagerStorageCaller) CalculateDelegationApprovalDigestHash(opts *bind.CallOpts, staker common.Address, operator common.Address, _delegationApprover common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) { + var out []interface{} + err := _DelegationManagerStorage.contract.Call(opts, &out, "calculateDelegationApprovalDigestHash", staker, operator, _delegationApprover, approverSalt, expiry) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateDelegationApprovalDigestHash is a free data retrieval call binding the contract method 0x0b9f487a. +// +// Solidity: function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) view returns(bytes32) +func (_DelegationManagerStorage *DelegationManagerStorageSession) CalculateDelegationApprovalDigestHash(staker common.Address, operator common.Address, _delegationApprover common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) { + return _DelegationManagerStorage.Contract.CalculateDelegationApprovalDigestHash(&_DelegationManagerStorage.CallOpts, staker, operator, _delegationApprover, approverSalt, expiry) +} + +// CalculateDelegationApprovalDigestHash is a free data retrieval call binding the contract method 0x0b9f487a. +// +// Solidity: function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) view returns(bytes32) +func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) CalculateDelegationApprovalDigestHash(staker common.Address, operator common.Address, _delegationApprover common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) { + return _DelegationManagerStorage.Contract.CalculateDelegationApprovalDigestHash(&_DelegationManagerStorage.CallOpts, staker, operator, _delegationApprover, approverSalt, expiry) +} + +// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111. +// +// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32) +func (_DelegationManagerStorage *DelegationManagerStorageCaller) CalculateStakerDelegationDigestHash(opts *bind.CallOpts, staker common.Address, _stakerNonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) { + var out []interface{} + err := _DelegationManagerStorage.contract.Call(opts, &out, "calculateStakerDelegationDigestHash", staker, _stakerNonce, operator, expiry) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111. +// +// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32) +func (_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) +} + +// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111. +// +// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32) +func (_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) +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da. +// +// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32) +func (_DelegationManagerStorage *DelegationManagerStorageCaller) CalculateWithdrawalRoot(opts *bind.CallOpts, withdrawal IDelegationManagerWithdrawal) ([32]byte, error) { + var out []interface{} + err := _DelegationManagerStorage.contract.Call(opts, &out, "calculateWithdrawalRoot", withdrawal) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da. +// +// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32) +func (_DelegationManagerStorage *DelegationManagerStorageSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerWithdrawal) ([32]byte, error) { + return _DelegationManagerStorage.Contract.CalculateWithdrawalRoot(&_DelegationManagerStorage.CallOpts, withdrawal) +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da. +// +// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32) +func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerWithdrawal) ([32]byte, error) { + return _DelegationManagerStorage.Contract.CalculateWithdrawalRoot(&_DelegationManagerStorage.CallOpts, withdrawal) +} + +// 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) { + var out []interface{} + err := _DelegationManagerStorage.contract.Call(opts, &out, "cumulativeWithdrawalsQueued", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CumulativeWithdrawalsQueued is a free data retrieval call binding the contract method 0xa1788484. +// +// Solidity: function cumulativeWithdrawalsQueued(address ) view returns(uint256) +func (_DelegationManagerStorage *DelegationManagerStorageSession) CumulativeWithdrawalsQueued(arg0 common.Address) (*big.Int, error) { + return _DelegationManagerStorage.Contract.CumulativeWithdrawalsQueued(&_DelegationManagerStorage.CallOpts, arg0) +} + +// 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) +} + +// 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) { + var out []interface{} + err := _DelegationManagerStorage.contract.Call(opts, &out, "delegatedTo", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// DelegatedTo is a free data retrieval call binding the contract method 0x65da1264. +// +// Solidity: function delegatedTo(address ) view returns(address) +func (_DelegationManagerStorage *DelegationManagerStorageSession) DelegatedTo(arg0 common.Address) (common.Address, error) { + return _DelegationManagerStorage.Contract.DelegatedTo(&_DelegationManagerStorage.CallOpts, arg0) +} + +// 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) +} + +// DelegationApprover is a free data retrieval call binding the contract method 0x3cdeb5e0. +// +// Solidity: function delegationApprover(address operator) view returns(address) +func (_DelegationManagerStorage *DelegationManagerStorageCaller) DelegationApprover(opts *bind.CallOpts, operator common.Address) (common.Address, error) { + var out []interface{} + err := _DelegationManagerStorage.contract.Call(opts, &out, "delegationApprover", operator) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// DelegationApprover is a free data retrieval call binding the contract method 0x3cdeb5e0. +// +// Solidity: function delegationApprover(address operator) view returns(address) +func (_DelegationManagerStorage *DelegationManagerStorageSession) DelegationApprover(operator common.Address) (common.Address, error) { + return _DelegationManagerStorage.Contract.DelegationApprover(&_DelegationManagerStorage.CallOpts, operator) +} + +// DelegationApprover is a free data retrieval call binding the contract method 0x3cdeb5e0. +// +// Solidity: function delegationApprover(address operator) view returns(address) +func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) DelegationApprover(operator common.Address) (common.Address, error) { + return _DelegationManagerStorage.Contract.DelegationApprover(&_DelegationManagerStorage.CallOpts, operator) +} + +// 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) { + var out []interface{} + err := _DelegationManagerStorage.contract.Call(opts, &out, "delegationApproverSaltIsSpent", arg0, arg1) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// DelegationApproverSaltIsSpent is a free data retrieval call binding the contract method 0xbb45fef2. +// +// Solidity: function delegationApproverSaltIsSpent(address , bytes32 ) view returns(bool) +func (_DelegationManagerStorage *DelegationManagerStorageSession) DelegationApproverSaltIsSpent(arg0 common.Address, arg1 [32]byte) (bool, error) { + return _DelegationManagerStorage.Contract.DelegationApproverSaltIsSpent(&_DelegationManagerStorage.CallOpts, arg0, arg1) +} + +// 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) +} + +// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25. +// +// Solidity: function domainSeparator() view returns(bytes32) +func (_DelegationManagerStorage *DelegationManagerStorageCaller) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _DelegationManagerStorage.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 (_DelegationManagerStorage *DelegationManagerStorageSession) DomainSeparator() ([32]byte, error) { + return _DelegationManagerStorage.Contract.DomainSeparator(&_DelegationManagerStorage.CallOpts) +} + +// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25. +// +// Solidity: function domainSeparator() view returns(bytes32) +func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) DomainSeparator() ([32]byte, error) { + return _DelegationManagerStorage.Contract.DomainSeparator(&_DelegationManagerStorage.CallOpts) +} + +// EarningsReceiver is a free data retrieval call binding the contract method 0x5f966f14. +// +// Solidity: function earningsReceiver(address operator) view returns(address) +func (_DelegationManagerStorage *DelegationManagerStorageCaller) EarningsReceiver(opts *bind.CallOpts, operator common.Address) (common.Address, error) { + var out []interface{} + err := _DelegationManagerStorage.contract.Call(opts, &out, "earningsReceiver", operator) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EarningsReceiver is a free data retrieval call binding the contract method 0x5f966f14. +// +// Solidity: function earningsReceiver(address operator) view returns(address) +func (_DelegationManagerStorage *DelegationManagerStorageSession) EarningsReceiver(operator common.Address) (common.Address, error) { + return _DelegationManagerStorage.Contract.EarningsReceiver(&_DelegationManagerStorage.CallOpts, operator) +} + +// EarningsReceiver is a free data retrieval call binding the contract method 0x5f966f14. +// +// Solidity: function earningsReceiver(address operator) view returns(address) +func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) EarningsReceiver(operator common.Address) (common.Address, error) { + return _DelegationManagerStorage.Contract.EarningsReceiver(&_DelegationManagerStorage.CallOpts, operator) +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_DelegationManagerStorage *DelegationManagerStorageCaller) EigenPodManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _DelegationManagerStorage.contract.Call(opts, &out, "eigenPodManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_DelegationManagerStorage *DelegationManagerStorageSession) EigenPodManager() (common.Address, error) { + return _DelegationManagerStorage.Contract.EigenPodManager(&_DelegationManagerStorage.CallOpts) +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) EigenPodManager() (common.Address, error) { + return _DelegationManagerStorage.Contract.EigenPodManager(&_DelegationManagerStorage.CallOpts) +} + +// GetOperatorShares is a free data retrieval call binding the contract method 0x90041347. +// +// Solidity: function getOperatorShares(address operator, address[] strategies) view returns(uint256[]) +func (_DelegationManagerStorage *DelegationManagerStorageCaller) GetOperatorShares(opts *bind.CallOpts, operator common.Address, strategies []common.Address) ([]*big.Int, error) { + var out []interface{} + err := _DelegationManagerStorage.contract.Call(opts, &out, "getOperatorShares", operator, strategies) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// GetOperatorShares is a free data retrieval call binding the contract method 0x90041347. +// +// Solidity: function getOperatorShares(address operator, address[] strategies) view returns(uint256[]) +func (_DelegationManagerStorage *DelegationManagerStorageSession) GetOperatorShares(operator common.Address, strategies []common.Address) ([]*big.Int, error) { + return _DelegationManagerStorage.Contract.GetOperatorShares(&_DelegationManagerStorage.CallOpts, operator, strategies) +} + +// GetOperatorShares is a free data retrieval call binding the contract method 0x90041347. +// +// Solidity: function getOperatorShares(address operator, address[] strategies) view returns(uint256[]) +func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) GetOperatorShares(operator common.Address, strategies []common.Address) ([]*big.Int, error) { + return _DelegationManagerStorage.Contract.GetOperatorShares(&_DelegationManagerStorage.CallOpts, operator, strategies) +} + +// GetWithdrawalDelay is a free data retrieval call binding the contract method 0x0449ca39. +// +// Solidity: function getWithdrawalDelay(address[] strategies) view returns(uint256) +func (_DelegationManagerStorage *DelegationManagerStorageCaller) GetWithdrawalDelay(opts *bind.CallOpts, strategies []common.Address) (*big.Int, error) { + var out []interface{} + err := _DelegationManagerStorage.contract.Call(opts, &out, "getWithdrawalDelay", strategies) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetWithdrawalDelay is a free data retrieval call binding the contract method 0x0449ca39. +// +// 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) +} + +// GetWithdrawalDelay is a free data retrieval call binding the contract method 0x0449ca39. +// +// 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) +} + +// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d. +// +// 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, "isDelegated", staker) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d. +// +// Solidity: function isDelegated(address staker) view returns(bool) +func (_DelegationManagerStorage *DelegationManagerStorageSession) IsDelegated(staker common.Address) (bool, error) { + return _DelegationManagerStorage.Contract.IsDelegated(&_DelegationManagerStorage.CallOpts, staker) +} + +// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d. +// +// Solidity: function isDelegated(address staker) view returns(bool) +func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) IsDelegated(staker common.Address) (bool, error) { + return _DelegationManagerStorage.Contract.IsDelegated(&_DelegationManagerStorage.CallOpts, staker) +} + +// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae. +// +// 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, "isOperator", operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae. +// +// Solidity: function isOperator(address operator) view returns(bool) +func (_DelegationManagerStorage *DelegationManagerStorageSession) IsOperator(operator common.Address) (bool, error) { + return _DelegationManagerStorage.Contract.IsOperator(&_DelegationManagerStorage.CallOpts, operator) +} + +// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae. +// +// Solidity: function isOperator(address operator) view returns(bool) +func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) IsOperator(operator common.Address) (bool, error) { + return _DelegationManagerStorage.Contract.IsOperator(&_DelegationManagerStorage.CallOpts, operator) +} + +// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8. +// +// Solidity: function minWithdrawalDelayBlocks() view returns(uint256) +func (_DelegationManagerStorage *DelegationManagerStorageCaller) MinWithdrawalDelayBlocks(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _DelegationManagerStorage.contract.Call(opts, &out, "minWithdrawalDelayBlocks") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8. +// +// Solidity: function minWithdrawalDelayBlocks() view returns(uint256) +func (_DelegationManagerStorage *DelegationManagerStorageSession) MinWithdrawalDelayBlocks() (*big.Int, error) { + return _DelegationManagerStorage.Contract.MinWithdrawalDelayBlocks(&_DelegationManagerStorage.CallOpts) +} + +// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8. +// +// Solidity: function minWithdrawalDelayBlocks() view returns(uint256) +func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) MinWithdrawalDelayBlocks() (*big.Int, error) { + return _DelegationManagerStorage.Contract.MinWithdrawalDelayBlocks(&_DelegationManagerStorage.CallOpts) +} + +// OperatorDetails is a free data retrieval call binding the contract method 0xc5e480db. +// +// Solidity: function operatorDetails(address operator) view returns((address,address,uint32)) +func (_DelegationManagerStorage *DelegationManagerStorageCaller) OperatorDetails(opts *bind.CallOpts, operator common.Address) (IDelegationManagerOperatorDetails, error) { + var out []interface{} + err := _DelegationManagerStorage.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 (_DelegationManagerStorage *DelegationManagerStorageSession) OperatorDetails(operator common.Address) (IDelegationManagerOperatorDetails, error) { + return _DelegationManagerStorage.Contract.OperatorDetails(&_DelegationManagerStorage.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 (_DelegationManagerStorage *DelegationManagerStorageCallerSession) OperatorDetails(operator common.Address) (IDelegationManagerOperatorDetails, error) { + return _DelegationManagerStorage.Contract.OperatorDetails(&_DelegationManagerStorage.CallOpts, operator) +} + +// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3. +// +// Solidity: function operatorShares(address , address ) view returns(uint256) +func (_DelegationManagerStorage *DelegationManagerStorageCaller) OperatorShares(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) { + var out []interface{} + err := _DelegationManagerStorage.contract.Call(opts, &out, "operatorShares", arg0, arg1) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3. +// +// Solidity: function operatorShares(address , address ) view returns(uint256) +func (_DelegationManagerStorage *DelegationManagerStorageSession) OperatorShares(arg0 common.Address, arg1 common.Address) (*big.Int, error) { + return _DelegationManagerStorage.Contract.OperatorShares(&_DelegationManagerStorage.CallOpts, arg0, arg1) +} + +// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3. +// +// 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) +} + +// PendingWithdrawals is a free data retrieval call binding the contract method 0xb7f06ebe. +// +// Solidity: function pendingWithdrawals(bytes32 ) view returns(bool) +func (_DelegationManagerStorage *DelegationManagerStorageCaller) PendingWithdrawals(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { + var out []interface{} + err := _DelegationManagerStorage.contract.Call(opts, &out, "pendingWithdrawals", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// PendingWithdrawals is a free data retrieval call binding the contract method 0xb7f06ebe. +// +// Solidity: function pendingWithdrawals(bytes32 ) view returns(bool) +func (_DelegationManagerStorage *DelegationManagerStorageSession) PendingWithdrawals(arg0 [32]byte) (bool, error) { + return _DelegationManagerStorage.Contract.PendingWithdrawals(&_DelegationManagerStorage.CallOpts, arg0) +} + +// PendingWithdrawals is a free data retrieval call binding the contract method 0xb7f06ebe. +// +// Solidity: function pendingWithdrawals(bytes32 ) view returns(bool) +func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) PendingWithdrawals(arg0 [32]byte) (bool, error) { + return _DelegationManagerStorage.Contract.PendingWithdrawals(&_DelegationManagerStorage.CallOpts, arg0) +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_DelegationManagerStorage *DelegationManagerStorageCaller) Slasher(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _DelegationManagerStorage.contract.Call(opts, &out, "slasher") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_DelegationManagerStorage *DelegationManagerStorageSession) Slasher() (common.Address, error) { + return _DelegationManagerStorage.Contract.Slasher(&_DelegationManagerStorage.CallOpts) +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) Slasher() (common.Address, error) { + return _DelegationManagerStorage.Contract.Slasher(&_DelegationManagerStorage.CallOpts) +} + +// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f. +// +// Solidity: function stakerNonce(address ) view returns(uint256) +func (_DelegationManagerStorage *DelegationManagerStorageCaller) StakerNonce(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _DelegationManagerStorage.contract.Call(opts, &out, "stakerNonce", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f. +// +// Solidity: function stakerNonce(address ) view returns(uint256) +func (_DelegationManagerStorage *DelegationManagerStorageSession) StakerNonce(arg0 common.Address) (*big.Int, error) { + return _DelegationManagerStorage.Contract.StakerNonce(&_DelegationManagerStorage.CallOpts, arg0) +} + +// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f. +// +// Solidity: function stakerNonce(address ) view returns(uint256) +func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) StakerNonce(arg0 common.Address) (*big.Int, error) { + return _DelegationManagerStorage.Contract.StakerNonce(&_DelegationManagerStorage.CallOpts, arg0) +} + +// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365. +// +// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256) +func (_DelegationManagerStorage *DelegationManagerStorageCaller) StakerOptOutWindowBlocks(opts *bind.CallOpts, operator common.Address) (*big.Int, error) { + var out []interface{} + err := _DelegationManagerStorage.contract.Call(opts, &out, "stakerOptOutWindowBlocks", operator) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365. +// +// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256) +func (_DelegationManagerStorage *DelegationManagerStorageSession) StakerOptOutWindowBlocks(operator common.Address) (*big.Int, error) { + return _DelegationManagerStorage.Contract.StakerOptOutWindowBlocks(&_DelegationManagerStorage.CallOpts, operator) +} + +// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365. +// +// 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) +} + +// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. +// +// 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, "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 (_DelegationManagerStorage *DelegationManagerStorageSession) StrategyManager() (common.Address, error) { + return _DelegationManagerStorage.Contract.StrategyManager(&_DelegationManagerStorage.CallOpts) +} + +// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. +// +// Solidity: function strategyManager() view returns(address) +func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) StrategyManager() (common.Address, error) { + return _DelegationManagerStorage.Contract.StrategyManager(&_DelegationManagerStorage.CallOpts) +} + +// StrategyWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc488375a. +// +// Solidity: function strategyWithdrawalDelayBlocks(address ) view returns(uint256) +func (_DelegationManagerStorage *DelegationManagerStorageCaller) StrategyWithdrawalDelayBlocks(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _DelegationManagerStorage.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 (_DelegationManagerStorage *DelegationManagerStorageSession) StrategyWithdrawalDelayBlocks(arg0 common.Address) (*big.Int, error) { + return _DelegationManagerStorage.Contract.StrategyWithdrawalDelayBlocks(&_DelegationManagerStorage.CallOpts, arg0) +} + +// StrategyWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc488375a. +// +// Solidity: function strategyWithdrawalDelayBlocks(address ) view returns(uint256) +func (_DelegationManagerStorage *DelegationManagerStorageCallerSession) StrategyWithdrawalDelayBlocks(arg0 common.Address) (*big.Int, error) { + return _DelegationManagerStorage.Contract.StrategyWithdrawalDelayBlocks(&_DelegationManagerStorage.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 (_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) +} + +// 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 (_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) +} + +// 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 (_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) +} + +// 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 (_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) +} + +// 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 (_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) +} + +// 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 (_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) +} + +// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967. +// +// 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) +} + +// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967. +// +// 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) +} + +// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967. +// +// 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) +} + +// DelegateTo is a paid mutator transaction binding the contract method 0xeea9064b. +// +// Solidity: function delegateTo(address operator, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns() +func (_DelegationManagerStorage *DelegationManagerStorageTransactor) DelegateTo(opts *bind.TransactOpts, operator common.Address, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) { + return _DelegationManagerStorage.contract.Transact(opts, "delegateTo", operator, approverSignatureAndExpiry, approverSalt) +} + +// DelegateTo is a paid mutator transaction binding the contract method 0xeea9064b. +// +// Solidity: function delegateTo(address operator, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns() +func (_DelegationManagerStorage *DelegationManagerStorageSession) DelegateTo(operator common.Address, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) { + return _DelegationManagerStorage.Contract.DelegateTo(&_DelegationManagerStorage.TransactOpts, operator, approverSignatureAndExpiry, approverSalt) +} + +// DelegateTo is a paid mutator transaction binding the contract method 0xeea9064b. +// +// Solidity: function delegateTo(address operator, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns() +func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) DelegateTo(operator common.Address, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) { + return _DelegationManagerStorage.Contract.DelegateTo(&_DelegationManagerStorage.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 (_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) +} + +// 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 (_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) +} + +// 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 (_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) +} + +// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae. +// +// 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) +} + +// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae. +// +// 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) +} + +// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae. +// +// 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) +} + +// MigrateQueuedWithdrawals is a paid mutator transaction binding the contract method 0x5cfe8d2c. +// +// Solidity: function migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[] withdrawalsToQueue) returns() +func (_DelegationManagerStorage *DelegationManagerStorageTransactor) MigrateQueuedWithdrawals(opts *bind.TransactOpts, withdrawalsToQueue []IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _DelegationManagerStorage.contract.Transact(opts, "migrateQueuedWithdrawals", withdrawalsToQueue) +} + +// MigrateQueuedWithdrawals is a paid mutator transaction binding the contract method 0x5cfe8d2c. +// +// Solidity: function migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[] withdrawalsToQueue) returns() +func (_DelegationManagerStorage *DelegationManagerStorageSession) MigrateQueuedWithdrawals(withdrawalsToQueue []IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _DelegationManagerStorage.Contract.MigrateQueuedWithdrawals(&_DelegationManagerStorage.TransactOpts, withdrawalsToQueue) +} + +// MigrateQueuedWithdrawals is a paid mutator transaction binding the contract method 0x5cfe8d2c. +// +// Solidity: function migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[] withdrawalsToQueue) returns() +func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) MigrateQueuedWithdrawals(withdrawalsToQueue []IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _DelegationManagerStorage.Contract.MigrateQueuedWithdrawals(&_DelegationManagerStorage.TransactOpts, withdrawalsToQueue) +} + +// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0. +// +// 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) +} + +// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0. +// +// Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns() +func (_DelegationManagerStorage *DelegationManagerStorageSession) ModifyOperatorDetails(newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) { + return _DelegationManagerStorage.Contract.ModifyOperatorDetails(&_DelegationManagerStorage.TransactOpts, newOperatorDetails) +} + +// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0. +// +// Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns() +func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) ModifyOperatorDetails(newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) { + return _DelegationManagerStorage.Contract.ModifyOperatorDetails(&_DelegationManagerStorage.TransactOpts, newOperatorDetails) +} + +// 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) +} + +// 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) +} + +// 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) +} + +// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59. +// +// 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) +} + +// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59. +// +// 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) +} + +// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59. +// +// 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) +} + +// Undelegate is a paid mutator transaction binding the contract method 0xda8be864. +// +// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoot) +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) +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) +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. +// +// 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) +} + +// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8. +// +// Solidity: function updateOperatorMetadataURI(string metadataURI) returns() +func (_DelegationManagerStorage *DelegationManagerStorageSession) UpdateOperatorMetadataURI(metadataURI string) (*types.Transaction, error) { + return _DelegationManagerStorage.Contract.UpdateOperatorMetadataURI(&_DelegationManagerStorage.TransactOpts, metadataURI) +} + +// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8. +// +// Solidity: function updateOperatorMetadataURI(string metadataURI) returns() +func (_DelegationManagerStorage *DelegationManagerStorageTransactorSession) UpdateOperatorMetadataURI(metadataURI string) (*types.Transaction, error) { + return _DelegationManagerStorage.Contract.UpdateOperatorMetadataURI(&_DelegationManagerStorage.TransactOpts, 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 + + 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 *DelegationManagerStorageMinWithdrawalDelayBlocksSetIterator) 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(DelegationManagerStorageMinWithdrawalDelayBlocksSet) + 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(DelegationManagerStorageMinWithdrawalDelayBlocksSet) + 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 *DelegationManagerStorageMinWithdrawalDelayBlocksSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerStorageMinWithdrawalDelayBlocksSetIterator) 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 +} + +// FilterMinWithdrawalDelayBlocksSet is a free log retrieval operation binding the contract event 0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69. +// +// Solidity: event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue) +func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterMinWithdrawalDelayBlocksSet(opts *bind.FilterOpts) (*DelegationManagerStorageMinWithdrawalDelayBlocksSetIterator, error) { + + logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "MinWithdrawalDelayBlocksSet") + if err != nil { + return nil, err + } + return &DelegationManagerStorageMinWithdrawalDelayBlocksSetIterator{contract: _DelegationManagerStorage.contract, event: "MinWithdrawalDelayBlocksSet", logs: logs, sub: sub}, nil +} + +// WatchMinWithdrawalDelayBlocksSet is a free log subscription operation binding the contract event 0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69. +// +// Solidity: event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue) +func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchMinWithdrawalDelayBlocksSet(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageMinWithdrawalDelayBlocksSet) (event.Subscription, error) { + + logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "MinWithdrawalDelayBlocksSet") + 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(DelegationManagerStorageMinWithdrawalDelayBlocksSet) + if err := _DelegationManagerStorage.contract.UnpackLog(event, "MinWithdrawalDelayBlocksSet", 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 +} + +// ParseMinWithdrawalDelayBlocksSet is a log parse operation binding the contract event 0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69. +// +// 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 { + 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 + + 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 *DelegationManagerStorageOperatorDetailsModifiedIterator) 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(DelegationManagerStorageOperatorDetailsModified) + 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(DelegationManagerStorageOperatorDetailsModified) + 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 *DelegationManagerStorageOperatorDetailsModifiedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerStorageOperatorDetailsModifiedIterator) 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 +} + +// FilterOperatorDetailsModified is a free log retrieval operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac. +// +// 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) + } + + logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "OperatorDetailsModified", operatorRule) + if err != nil { + return nil, err + } + return &DelegationManagerStorageOperatorDetailsModifiedIterator{contract: _DelegationManagerStorage.contract, event: "OperatorDetailsModified", logs: logs, sub: sub}, nil +} + +// WatchOperatorDetailsModified is a free log subscription operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac. +// +// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails) +func (_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) + } + + logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "OperatorDetailsModified", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DelegationManagerStorageOperatorDetailsModified) + if err := _DelegationManagerStorage.contract.UnpackLog(event, "OperatorDetailsModified", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorDetailsModified is a log parse operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac. +// +// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails) +func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseOperatorDetailsModified(log types.Log) (*DelegationManagerStorageOperatorDetailsModified, error) { + event := new(DelegationManagerStorageOperatorDetailsModified) + if err := _DelegationManagerStorage.contract.UnpackLog(event, "OperatorDetailsModified", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// DelegationManagerStorageOperatorMetadataURIUpdatedIterator is returned from FilterOperatorMetadataURIUpdated and is used to iterate over the raw logs and unpacked data for OperatorMetadataURIUpdated events raised by the DelegationManagerStorage contract. +type DelegationManagerStorageOperatorMetadataURIUpdatedIterator struct { + Event *DelegationManagerStorageOperatorMetadataURIUpdated // Event containing the contract specifics 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 *DelegationManagerStorageOperatorMetadataURIUpdatedIterator) 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(DelegationManagerStorageOperatorMetadataURIUpdated) + 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(DelegationManagerStorageOperatorMetadataURIUpdated) + 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 *DelegationManagerStorageOperatorMetadataURIUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerStorageOperatorMetadataURIUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DelegationManagerStorageOperatorMetadataURIUpdated represents a OperatorMetadataURIUpdated event raised by the DelegationManagerStorage contract. +type DelegationManagerStorageOperatorMetadataURIUpdated struct { + Operator common.Address + MetadataURI string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorMetadataURIUpdated is a free log retrieval operation binding the contract event 0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090. +// +// Solidity: event OperatorMetadataURIUpdated(address indexed operator, string metadataURI) +func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterOperatorMetadataURIUpdated(opts *bind.FilterOpts, operator []common.Address) (*DelegationManagerStorageOperatorMetadataURIUpdatedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "OperatorMetadataURIUpdated", operatorRule) + if err != nil { + return nil, err + } + return &DelegationManagerStorageOperatorMetadataURIUpdatedIterator{contract: _DelegationManagerStorage.contract, event: "OperatorMetadataURIUpdated", logs: logs, sub: sub}, nil +} + +// WatchOperatorMetadataURIUpdated is a free log subscription operation binding the contract event 0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090. +// +// Solidity: event OperatorMetadataURIUpdated(address indexed operator, string metadataURI) +func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchOperatorMetadataURIUpdated(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageOperatorMetadataURIUpdated, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "OperatorMetadataURIUpdated", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DelegationManagerStorageOperatorMetadataURIUpdated) + if err := _DelegationManagerStorage.contract.UnpackLog(event, "OperatorMetadataURIUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorMetadataURIUpdated is a log parse operation binding the contract event 0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090. +// +// Solidity: event OperatorMetadataURIUpdated(address indexed operator, string metadataURI) +func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseOperatorMetadataURIUpdated(log types.Log) (*DelegationManagerStorageOperatorMetadataURIUpdated, error) { + event := new(DelegationManagerStorageOperatorMetadataURIUpdated) + if err := _DelegationManagerStorage.contract.UnpackLog(event, "OperatorMetadataURIUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// DelegationManagerStorageOperatorRegisteredIterator is returned from FilterOperatorRegistered and is used to iterate over the raw logs and unpacked data for OperatorRegistered events raised by the DelegationManagerStorage contract. +type DelegationManagerStorageOperatorRegisteredIterator struct { + Event *DelegationManagerStorageOperatorRegistered // Event containing the contract specifics 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 *DelegationManagerStorageOperatorRegisteredIterator) 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(DelegationManagerStorageOperatorRegistered) + 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(DelegationManagerStorageOperatorRegistered) + 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 *DelegationManagerStorageOperatorRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerStorageOperatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// 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 +} + +// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2. +// +// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails) +func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address) (*DelegationManagerStorageOperatorRegisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "OperatorRegistered", operatorRule) + if err != nil { + return nil, err + } + return &DelegationManagerStorageOperatorRegisteredIterator{contract: _DelegationManagerStorage.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil +} + +// WatchOperatorRegistered is a free log subscription operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2. +// +// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails) +func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageOperatorRegistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "OperatorRegistered", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DelegationManagerStorageOperatorRegistered) + if err := _DelegationManagerStorage.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorRegistered is a log parse operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2. +// +// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails) +func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseOperatorRegistered(log types.Log) (*DelegationManagerStorageOperatorRegistered, error) { + event := new(DelegationManagerStorageOperatorRegistered) + if err := _DelegationManagerStorage.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// DelegationManagerStorageOperatorSharesDecreasedIterator is returned from FilterOperatorSharesDecreased and is used to iterate over the raw logs and unpacked data for OperatorSharesDecreased events raised by the DelegationManagerStorage contract. +type DelegationManagerStorageOperatorSharesDecreasedIterator struct { + Event *DelegationManagerStorageOperatorSharesDecreased // Event containing the contract specifics 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 *DelegationManagerStorageOperatorSharesDecreasedIterator) 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(DelegationManagerStorageOperatorSharesDecreased) + 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(DelegationManagerStorageOperatorSharesDecreased) + 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 *DelegationManagerStorageOperatorSharesDecreasedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerStorageOperatorSharesDecreasedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DelegationManagerStorageOperatorSharesDecreased represents a OperatorSharesDecreased event raised by the DelegationManagerStorage contract. +type DelegationManagerStorageOperatorSharesDecreased struct { + Operator common.Address + Staker common.Address + Strategy common.Address + Shares *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSharesDecreased is a free log retrieval operation binding the contract event 0x6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd. +// +// Solidity: event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterOperatorSharesDecreased(opts *bind.FilterOpts, operator []common.Address) (*DelegationManagerStorageOperatorSharesDecreasedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "OperatorSharesDecreased", operatorRule) + if err != nil { + return nil, err + } + return &DelegationManagerStorageOperatorSharesDecreasedIterator{contract: _DelegationManagerStorage.contract, event: "OperatorSharesDecreased", logs: logs, sub: sub}, nil +} + +// WatchOperatorSharesDecreased is a free log subscription operation binding the contract event 0x6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd. +// +// Solidity: event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchOperatorSharesDecreased(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageOperatorSharesDecreased, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "OperatorSharesDecreased", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DelegationManagerStorageOperatorSharesDecreased) + if err := _DelegationManagerStorage.contract.UnpackLog(event, "OperatorSharesDecreased", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorSharesDecreased is a log parse operation binding the contract event 0x6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd. +// +// Solidity: event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseOperatorSharesDecreased(log types.Log) (*DelegationManagerStorageOperatorSharesDecreased, error) { + event := new(DelegationManagerStorageOperatorSharesDecreased) + if err := _DelegationManagerStorage.contract.UnpackLog(event, "OperatorSharesDecreased", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// DelegationManagerStorageOperatorSharesIncreasedIterator is returned from FilterOperatorSharesIncreased and is used to iterate over the raw logs and unpacked data for OperatorSharesIncreased events raised by the DelegationManagerStorage contract. +type DelegationManagerStorageOperatorSharesIncreasedIterator struct { + Event *DelegationManagerStorageOperatorSharesIncreased // Event containing the contract specifics 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 *DelegationManagerStorageOperatorSharesIncreasedIterator) 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(DelegationManagerStorageOperatorSharesIncreased) + 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(DelegationManagerStorageOperatorSharesIncreased) + 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 *DelegationManagerStorageOperatorSharesIncreasedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerStorageOperatorSharesIncreasedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DelegationManagerStorageOperatorSharesIncreased represents a OperatorSharesIncreased event raised by the DelegationManagerStorage contract. +type DelegationManagerStorageOperatorSharesIncreased struct { + Operator common.Address + Staker common.Address + Strategy common.Address + Shares *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSharesIncreased is a free log retrieval operation binding the contract event 0x1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c. +// +// Solidity: event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterOperatorSharesIncreased(opts *bind.FilterOpts, operator []common.Address) (*DelegationManagerStorageOperatorSharesIncreasedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "OperatorSharesIncreased", operatorRule) + if err != nil { + return nil, err + } + return &DelegationManagerStorageOperatorSharesIncreasedIterator{contract: _DelegationManagerStorage.contract, event: "OperatorSharesIncreased", logs: logs, sub: sub}, nil +} + +// WatchOperatorSharesIncreased is a free log subscription operation binding the contract event 0x1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c. +// +// Solidity: event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchOperatorSharesIncreased(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageOperatorSharesIncreased, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "OperatorSharesIncreased", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DelegationManagerStorageOperatorSharesIncreased) + if err := _DelegationManagerStorage.contract.UnpackLog(event, "OperatorSharesIncreased", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorSharesIncreased is a log parse operation binding the contract event 0x1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c. +// +// Solidity: event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseOperatorSharesIncreased(log types.Log) (*DelegationManagerStorageOperatorSharesIncreased, error) { + event := new(DelegationManagerStorageOperatorSharesIncreased) + if err := _DelegationManagerStorage.contract.UnpackLog(event, "OperatorSharesIncreased", log); err != nil { + return nil, err + } + event.Raw = log + 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 + + 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 *DelegationManagerStorageStakerDelegatedIterator) 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(DelegationManagerStorageStakerDelegated) + 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(DelegationManagerStorageStakerDelegated) + 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 *DelegationManagerStorageStakerDelegatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerStorageStakerDelegatedIterator) 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 +} + +// FilterStakerDelegated is a free log retrieval operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304. +// +// 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 { + 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) + if err != nil { + return nil, err + } + return &DelegationManagerStorageStakerDelegatedIterator{contract: _DelegationManagerStorage.contract, event: "StakerDelegated", logs: logs, sub: sub}, nil +} + +// WatchStakerDelegated is a free log subscription operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304. +// +// Solidity: event StakerDelegated(address indexed staker, address indexed operator) +func (_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 { + 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) + 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(DelegationManagerStorageStakerDelegated) + if err := _DelegationManagerStorage.contract.UnpackLog(event, "StakerDelegated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseStakerDelegated is a log parse operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304. +// +// Solidity: event StakerDelegated(address indexed staker, address indexed operator) +func (_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 +} + +// 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 + + 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 *DelegationManagerStorageStakerForceUndelegatedIterator) 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(DelegationManagerStorageStakerForceUndelegated) + 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(DelegationManagerStorageStakerForceUndelegated) + 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 *DelegationManagerStorageStakerForceUndelegatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerStorageStakerForceUndelegatedIterator) 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 +} + +// FilterStakerForceUndelegated is a free log retrieval operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a. +// +// 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) + } + + logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule) + if err != nil { + return nil, err + } + return &DelegationManagerStorageStakerForceUndelegatedIterator{contract: _DelegationManagerStorage.contract, event: "StakerForceUndelegated", logs: logs, sub: sub}, nil +} + +// WatchStakerForceUndelegated is a free log subscription operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a. +// +// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator) +func (_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) + } + + logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DelegationManagerStorageStakerForceUndelegated) + if err := _DelegationManagerStorage.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseStakerForceUndelegated is a log parse operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a. +// +// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator) +func (_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 +} + +// 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 + + 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 *DelegationManagerStorageStakerUndelegatedIterator) 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(DelegationManagerStorageStakerUndelegated) + 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(DelegationManagerStorageStakerUndelegated) + 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 *DelegationManagerStorageStakerUndelegatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerStorageStakerUndelegatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// 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 +} + +// FilterStakerUndelegated is a free log retrieval operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676. +// +// 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, "StakerUndelegated", stakerRule, operatorRule) + if err != nil { + return nil, err + } + return &DelegationManagerStorageStakerUndelegatedIterator{contract: _DelegationManagerStorage.contract, event: "StakerUndelegated", logs: logs, sub: sub}, nil +} + +// WatchStakerUndelegated is a free log subscription operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676. +// +// Solidity: event StakerUndelegated(address indexed staker, address indexed operator) +func (_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, "StakerUndelegated", stakerRule, operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DelegationManagerStorageStakerUndelegated) + if err := _DelegationManagerStorage.contract.UnpackLog(event, "StakerUndelegated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseStakerUndelegated is a log parse operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676. +// +// Solidity: event StakerUndelegated(address indexed staker, address indexed operator) +func (_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 + 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 + + 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 *DelegationManagerStorageStrategyWithdrawalDelayBlocksSetIterator) 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(DelegationManagerStorageStrategyWithdrawalDelayBlocksSet) + 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(DelegationManagerStorageStrategyWithdrawalDelayBlocksSet) + 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 *DelegationManagerStorageStrategyWithdrawalDelayBlocksSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerStorageStrategyWithdrawalDelayBlocksSetIterator) 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 +} + +// FilterStrategyWithdrawalDelayBlocksSet is a free log retrieval operation binding the contract event 0x0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d. +// +// Solidity: event StrategyWithdrawalDelayBlocksSet(address strategy, uint256 previousValue, uint256 newValue) +func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterStrategyWithdrawalDelayBlocksSet(opts *bind.FilterOpts) (*DelegationManagerStorageStrategyWithdrawalDelayBlocksSetIterator, error) { + + logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "StrategyWithdrawalDelayBlocksSet") + if err != nil { + return nil, err + } + 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") + 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 +} + +// ParseStrategyWithdrawalDelayBlocksSet is a log parse operation binding the contract event 0x0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d. +// +// 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 + + 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 *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 + } + 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") + 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(DelegationManagerStorageWithdrawalCompleted) + if err := _DelegationManagerStorage.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 (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseWithdrawalCompleted(log types.Log) (*DelegationManagerStorageWithdrawalCompleted, error) { + event := new(DelegationManagerStorageWithdrawalCompleted) + if err := _DelegationManagerStorage.contract.UnpackLog(event, "WithdrawalCompleted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// DelegationManagerStorageWithdrawalMigratedIterator is returned from FilterWithdrawalMigrated and is used to iterate over the raw logs and unpacked data for WithdrawalMigrated events raised by the DelegationManagerStorage contract. +type DelegationManagerStorageWithdrawalMigratedIterator struct { + Event *DelegationManagerStorageWithdrawalMigrated // Event containing the contract specifics 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 *DelegationManagerStorageWithdrawalMigratedIterator) 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(DelegationManagerStorageWithdrawalMigrated) + 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(DelegationManagerStorageWithdrawalMigrated) + 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 *DelegationManagerStorageWithdrawalMigratedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerStorageWithdrawalMigratedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// DelegationManagerStorageWithdrawalMigrated represents a WithdrawalMigrated event raised by the DelegationManagerStorage contract. +type DelegationManagerStorageWithdrawalMigrated struct { + OldWithdrawalRoot [32]byte + NewWithdrawalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawalMigrated is a free log retrieval operation binding the contract event 0xdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630. +// +// Solidity: event WithdrawalMigrated(bytes32 oldWithdrawalRoot, bytes32 newWithdrawalRoot) +func (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterWithdrawalMigrated(opts *bind.FilterOpts) (*DelegationManagerStorageWithdrawalMigratedIterator, error) { + + logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "WithdrawalMigrated") + if err != nil { + return nil, err + } + return &DelegationManagerStorageWithdrawalMigratedIterator{contract: _DelegationManagerStorage.contract, event: "WithdrawalMigrated", logs: logs, sub: sub}, nil +} + +// WatchWithdrawalMigrated is a free log subscription operation binding the contract event 0xdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630. +// +// Solidity: event WithdrawalMigrated(bytes32 oldWithdrawalRoot, bytes32 newWithdrawalRoot) +func (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchWithdrawalMigrated(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageWithdrawalMigrated) (event.Subscription, error) { + + logs, sub, err := _DelegationManagerStorage.contract.WatchLogs(opts, "WithdrawalMigrated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(DelegationManagerStorageWithdrawalMigrated) + if err := _DelegationManagerStorage.contract.UnpackLog(event, "WithdrawalMigrated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawalMigrated is a log parse operation binding the contract event 0xdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630. +// +// Solidity: event WithdrawalMigrated(bytes32 oldWithdrawalRoot, bytes32 newWithdrawalRoot) +func (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseWithdrawalMigrated(log types.Log) (*DelegationManagerStorageWithdrawalMigrated, error) { + event := new(DelegationManagerStorageWithdrawalMigrated) + if err := _DelegationManagerStorage.contract.UnpackLog(event, "WithdrawalMigrated", 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 + + 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 *DelegationManagerStorageWithdrawalQueuedIterator) 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(DelegationManagerStorageWithdrawalQueued) + 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(DelegationManagerStorageWithdrawalQueued) + 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 *DelegationManagerStorageWithdrawalQueuedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *DelegationManagerStorageWithdrawalQueuedIterator) 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 +} + +// 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 (_DelegationManagerStorage *DelegationManagerStorageFilterer) FilterWithdrawalQueued(opts *bind.FilterOpts) (*DelegationManagerStorageWithdrawalQueuedIterator, error) { + + logs, sub, err := _DelegationManagerStorage.contract.FilterLogs(opts, "WithdrawalQueued") + if err != nil { + return nil, err + } + return &DelegationManagerStorageWithdrawalQueuedIterator{contract: _DelegationManagerStorage.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 (_DelegationManagerStorage *DelegationManagerStorageFilterer) WatchWithdrawalQueued(opts *bind.WatchOpts, sink chan<- *DelegationManagerStorageWithdrawalQueued) (event.Subscription, error) { + + logs, sub, err := _DelegationManagerStorage.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(DelegationManagerStorageWithdrawalQueued) + if err := _DelegationManagerStorage.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 (_DelegationManagerStorage *DelegationManagerStorageFilterer) ParseWithdrawalQueued(log types.Log) (*DelegationManagerStorageWithdrawalQueued, error) { + event := new(DelegationManagerStorageWithdrawalQueued) + if err := _DelegationManagerStorage.contract.UnpackLog(event, "WithdrawalQueued", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/DelegationManagerStorage/tmp.abi b/pkg/bindings/DelegationManagerStorage/tmp.abi new file mode 100644 index 000000000..a1a3b1fab --- /dev/null +++ b/pkg/bindings/DelegationManagerStorage/tmp.abi @@ -0,0 +1,1394 @@ +[ + { + "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": "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": "struct IDelegationManager.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": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "completeQueuedWithdrawal", + "inputs": [ + { + "name": "withdrawal", + "type": "tuple", + "internalType": "struct IDelegationManager.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": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + }, + { + "name": "tokens", + "type": "address[]", + "internalType": "contract IERC20[]" + }, + { + "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": "struct IDelegationManager.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": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + }, + { + "name": "tokens", + "type": "address[][]", + "internalType": "contract IERC20[][]" + }, + { + "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": "contract IStrategy" + }, + { + "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": "struct ISignatureUtils.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": "struct ISignatureUtils.SignatureWithExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "approverSignatureAndExpiry", + "type": "tuple", + "internalType": "struct ISignatureUtils.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": "earningsReceiver", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "eigenPodManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IEigenPodManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorShares", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getWithdrawalDelay", + "inputs": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "increaseDelegatedShares", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "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": "migrateQueuedWithdrawals", + "inputs": [ + { + "name": "withdrawalsToQueue", + "type": "tuple[]", + "internalType": "struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]", + "components": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "withdrawerAndNonce", + "type": "tuple", + "internalType": "struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce", + "components": [ + { + "name": "withdrawer", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "name": "withdrawalStartBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "delegatedAddress", + "type": "address", + "internalType": "address" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "minWithdrawalDelayBlocks", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "modifyOperatorDetails", + "inputs": [ + { + "name": "newOperatorDetails", + "type": "tuple", + "internalType": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "operatorDetails", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorShares", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "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": "struct IDelegationManager.QueuedWithdrawalParams[]", + "components": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "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": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "name": "metadataURI", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "slasher", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ISlasher" + } + ], + "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": "contract IStrategyManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyWithdrawalDelayBlocks", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "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": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorMetadataURIUpdated", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "metadataURI", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorRegistered", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "operatorDetails", + "type": "tuple", + "indexed": false, + "internalType": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorSharesDecreased", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "staker", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + }, + { + "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": "contract IStrategy" + }, + { + "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": "contract IStrategy" + }, + { + "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": "WithdrawalMigrated", + "inputs": [ + { + "name": "oldWithdrawalRoot", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "newWithdrawalRoot", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "WithdrawalQueued", + "inputs": [ + { + "name": "withdrawalRoot", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "withdrawal", + "type": "tuple", + "indexed": false, + "internalType": "struct IDelegationManager.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": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + } + ], + "anonymous": false + } +] diff --git a/pkg/bindings/DelegationManagerStorage/tmp.bin b/pkg/bindings/DelegationManagerStorage/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/DelegationManagerStorage/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/EIP1271SignatureUtils/binding.go b/pkg/bindings/EIP1271SignatureUtils/binding.go new file mode 100644 index 000000000..1021c6d36 --- /dev/null +++ b/pkg/bindings/EIP1271SignatureUtils/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 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: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e3ccbe6f174559268ecd8ac1e917e3d7b8f31e5e3dd6828685eb95651a74e4fc64736f6c634300080c0033", +} + +// 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/EIP1271SignatureUtils/tmp.abi b/pkg/bindings/EIP1271SignatureUtils/tmp.abi new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/pkg/bindings/EIP1271SignatureUtils/tmp.abi @@ -0,0 +1 @@ +[] diff --git a/pkg/bindings/EIP1271SignatureUtils/tmp.bin b/pkg/bindings/EIP1271SignatureUtils/tmp.bin new file mode 100644 index 000000000..9c2257249 --- /dev/null +++ b/pkg/bindings/EIP1271SignatureUtils/tmp.bin @@ -0,0 +1 @@ +0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e3ccbe6f174559268ecd8ac1e917e3d7b8f31e5e3dd6828685eb95651a74e4fc64736f6c634300080c0033 diff --git a/pkg/bindings/EigenPod/binding.go b/pkg/bindings/EigenPod/binding.go new file mode 100644 index 000000000..d48645494 --- /dev/null +++ b/pkg/bindings/EigenPod/binding.go @@ -0,0 +1,2360 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package EigenPod + +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 +) + +// BeaconChainProofsStateRootProof is an auto generated low-level Go binding around an user-defined struct. +type BeaconChainProofsStateRootProof struct { + BeaconStateRoot [32]byte + Proof []byte +} + +// BeaconChainProofsWithdrawalProof is an auto generated low-level Go binding around an user-defined struct. +type BeaconChainProofsWithdrawalProof struct { + WithdrawalProof []byte + SlotProof []byte + ExecutionPayloadProof []byte + TimestampProof []byte + HistoricalSummaryBlockRootProof []byte + BlockRootIndex uint64 + HistoricalSummaryIndex uint64 + WithdrawalIndex uint64 + BlockRoot [32]byte + SlotRoot [32]byte + TimestampRoot [32]byte + ExecutionPayloadRoot [32]byte +} + +// IEigenPodValidatorInfo is an auto generated low-level Go binding around an user-defined struct. +type IEigenPodValidatorInfo struct { + ValidatorIndex uint64 + RestakedBalanceGwei uint64 + MostRecentBalanceUpdateTimestamp uint64 + Status uint8 +} + +// EigenPodMetaData contains all meta data concerning the EigenPod contract. +var EigenPodMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_ethPOS\",\"type\":\"address\",\"internalType\":\"contractIETHPOSDeposit\"},{\"name\":\"_delayedWithdrawalRouter\",\"type\":\"address\",\"internalType\":\"contractIDelayedWithdrawalRouter\"},{\"name\":\"_eigenPodManager\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"},{\"name\":\"_MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"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\":\"MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activateRestaking\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delayedWithdrawalRouter\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelayedWithdrawalRouter\"}],\"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\":\"hasRestaked\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_podOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mostRecentWithdrawalTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nonBeaconChainETHBalanceWei\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"podOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"provenWithdrawal\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"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\":\"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\":\"sumOfPartialWithdrawalsClaimedGwei\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"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\":\"mostRecentBalanceUpdateTimestamp\",\"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\":\"mostRecentBalanceUpdateTimestamp\",\"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\":\"verifyAndProcessWithdrawals\",\"inputs\":[{\"name\":\"oracleTimestamp\",\"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\":\"withdrawalProofs\",\"type\":\"tuple[]\",\"internalType\":\"structBeaconChainProofs.WithdrawalProof[]\",\"components\":[{\"name\":\"withdrawalProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"slotProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"executionPayloadProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timestampProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"historicalSummaryBlockRootProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blockRootIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"historicalSummaryIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"withdrawalIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"timestampRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"executionPayloadRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"validatorFieldsProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"validatorFields\",\"type\":\"bytes32[][]\",\"internalType\":\"bytes32[][]\"},{\"name\":\"withdrawalFields\",\"type\":\"bytes32[][]\",\"internalType\":\"bytes32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyBalanceUpdates\",\"inputs\":[{\"name\":\"oracleTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"validatorIndices\",\"type\":\"uint40[]\",\"internalType\":\"uint40[]\"},{\"name\":\"stateRootProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.StateRootProof\",\"components\":[{\"name\":\"beaconStateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"validatorFieldsProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"validatorFields\",\"type\":\"bytes32[][]\",\"internalType\":\"bytes32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyWithdrawalCredentials\",\"inputs\":[{\"name\":\"oracleTimestamp\",\"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\":\"withdrawBeforeRestaking\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawNonBeaconChainETHBalanceWei\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amountToWithdraw\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"EigenPodStaked\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FullWithdrawalRedeemed\",\"inputs\":[{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":false,\"internalType\":\"uint40\"},{\"name\":\"withdrawalTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"withdrawalAmountGwei\",\"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\":\"NonBeaconChainETHReceived\",\"inputs\":[{\"name\":\"amountReceived\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NonBeaconChainETHWithdrawn\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amountWithdrawn\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PartialWithdrawalRedeemed\",\"inputs\":[{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":false,\"internalType\":\"uint40\"},{\"name\":\"withdrawalTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"partialWithdrawalAmountGwei\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"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\":\"RestakingActivated\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"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\":\"ValidatorRestaked\",\"inputs\":[{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":false,\"internalType\":\"uint40\"}],\"anonymous\":false}]", + Bin: "0x6101206040523480156200001257600080fd5b5060405162005f0338038062005f0383398101604081905262000035916200016f565b6001600160a01b0380861660805284811660a052831660c0526001600160401b0380831660e0528116610100526200006c62000077565b5050505050620001e7565b600054610100900460ff1615620000e45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000137576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014f57600080fd5b50565b80516001600160401b03811681146200016a57600080fd5b919050565b600080600080600060a086880312156200018857600080fd5b8551620001958162000139565b6020870151909550620001a88162000139565b6040870151909450620001bb8162000139565b9250620001cb6060870162000152565b9150620001db6080870162000152565b90509295509295909350565b60805160a05160c05160e05161010051615c28620002db600039600081816105b5015281816134c8015261357f015260008181610275015281816124290152818161245d01528181612a8901528181612ab60152818161425b015261429601526000818161036d01528181610614015281816107a701528181610a4601528181610b9b01528181610d2301528181610ede015281816110bf015281816111f3015281816113fd0152818161184a015281816119f201528181611b3101528181611cfe01528181611de80152612f2101526000818161024101526131930152600081816104520152610dee0152615c286000f3fe6080604052600436106101855760003560e01c806374cdd798116100d1578063c49074421161008a578063e251ef5211610064578063e251ef5214610563578063e2c8344514610583578063f2882461146105a3578063fe80b087146105d757600080fd5b8063c490744214610503578063c4d66de814610523578063dda3346c1461054357600080fd5b806374cdd7981461044057806387e0d289146104745780639b4e46341461049b578063a50600f4146104ae578063b522538a146104ce578063baa7145a146104ee57600080fd5b806334bea20a1161013e57806358eaee791161011857806358eaee791461038f5780635d3f65b6146103bc5780636fcd0e53146103dc5780637439841f1461040957600080fd5b806334bea20a146103005780633f65cf191461033b5780634665bcda1461035b57600080fd5b80630b18ff66146101db5780630cd4649e146102185780631a5057be1461022f5780631d905d5c146102635780633106ab53146102af5780633474aa16146102e057600080fd5b366101d657346037600082825461019c9190614b56565b90915550506040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101e757600080fd5b506033546101fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022457600080fd5b5061022d6105fb565b005b34801561023b57600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561026f57600080fd5b506102977f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160401b03909116815260200161020f565b3480156102bb57600080fd5b506034546102d090600160401b900460ff1681565b604051901515815260200161020f565b3480156102ec57600080fd5b50603454610297906001600160401b031681565b34801561030c57600080fd5b506102d061031b366004614b93565b603560209081526000928352604080842090915290825290205460ff1681565b34801561034757600080fd5b5061022d610356366004614c26565b610764565b34801561036757600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561039b57600080fd5b506103af6103aa366004614d37565b610c06565b60405161020f9190614db0565b3480156103c857600080fd5b50603854610297906001600160401b031681565b3480156103e857600080fd5b506103fc6103f7366004614dbe565b610c6b565b60405161020f9190614dd7565b34801561041557600080fd5b506103af610424366004614dbe565b600090815260366020526040902054600160c01b900460ff1690565b34801561044c57600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561048057600080fd5b5060335461029790600160a01b90046001600160401b031681565b61022d6104a9366004614e1f565b610d18565b3480156104ba57600080fd5b5061022d6104c9366004614e92565b610ec5565b3480156104da57600080fd5b506103fc6104e9366004614d37565b611294565b3480156104fa57600080fd5b5061022d611387565b34801561050f57600080fd5b5061022d61051e366004614f3c565b6113f2565b34801561052f57600080fd5b5061022d61053e366004614f68565b61162f565b34801561054f57600080fd5b5061022d61055e366004615082565b611807565b34801561056f57600080fd5b5061022d61057e366004615153565b6119da565b34801561058f57600080fd5b5061022d61059e366004614f3c565b611da5565b3480156105af57600080fd5b506102977f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e357600080fd5b506105ed60375481565b60405190815260200161020f565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610687919061524e565b156106ad5760405162461bcd60e51b81526004016106a490615270565b60405180910390fd5b6033546001600160a01b031633146106d75760405162461bcd60e51b81526004016106a4906152cd565b603454600160401b900460ff16156107015760405162461bcd60e51b81526004016106a490615315565b6034805460ff60401b1916600160401b179055603354610729906001600160a01b0316611f88565b6033546040516001600160a01b03909116907fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a250565b6033546001600160a01b0316331461078e5760405162461bcd60e51b81526004016106a4906152cd565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a919061524e565b156108375760405162461bcd60e51b81526004016106a490615270565b60335489906001600160401b03600160a01b9091048116908216101561086f5760405162461bcd60e51b81526004016106a490615364565b603454600160401b900460ff166108e75760405162461bcd60e51b815260206004820152603660248201527f456967656e506f642e686173456e61626c656452657374616b696e673a2072656044820152751cdd185ada5b99c81a5cc81b9bdd08195b98589b195960521b60648201526084016106a4565b86851480156108f557508483145b6109855760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106a4565b4261099b613f486001600160401b038d16614b56565b1015610a245760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038b166004820152610acd907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa158015610a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab991906153f7565b8a35610ac860208d018d615410565b611fbc565b6000805b88811015610b7157610b538c8c358c8c85818110610af157610af1615456565b9050602002016020810190610b06919061546c565b8b8b86818110610b1857610b18615456565b9050602002810190610b2a9190615410565b8b8b88818110610b3c57610b3c615456565b9050602002810190610b4e9190615493565b61214a565b610b5d9083614b56565b915080610b69816154dc565b915050610ad1565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610be157600080fd5b505af1158015610bf5573d6000803e3d6000fd5b505050505050505050505050505050565b600080610c4884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260492505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b610c936040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610cfe57610cfe614d78565b6002811115610d0f57610d0f614d78565b90525092915050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d605760405162461bcd60e51b81526004016106a4906154f7565b346801bc16d674ec80000014610dec5760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106a4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787610e2f6126fe565b8888886040518863ffffffff1660e01b8152600401610e53969594939291906155c9565b6000604051808303818588803b158015610e6c57600080fd5b505af1158015610e80573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051610eb6929190615618565b60405180910390a15050505050565b604051635ac86ab760e01b8152600360048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f51919061524e565b15610f6e5760405162461bcd60e51b81526004016106a490615270565b8684148015610f7c57508382145b6110055760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207660448201527f616c696461746f72496e646963657320616e642070726f6f6673206d7573742060648201526d0c4ca40e6c2daca40d8cadccee8d60931b608482015260a4016106a4565b4261101b613f486001600160401b038c16614b56565b101561109d5760405162461bcd60e51b815260206004820152604560248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207360448201527f70656369666965642074696d657374616d7020697320746f6f2066617220696e606482015264081c185cdd60da1b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a166004820152611141907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa15801561110e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113291906153f7565b8735610ac860208a018a615410565b6000805b888110156111e5576111c78b8b8b8481811061116357611163615456565b9050602002016020810190611178919061546c565b8a358a8a8681811061118c5761118c615456565b905060200281019061119e9190615410565b8a8a888181106111b0576111b0615456565b90506020028101906111c29190615493565b612743565b6111d1908361562c565b9150806111dd816154dc565b915050611145565b506033546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163c2c51c40911661122a633b9aca008561566d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561127057600080fd5b505af1158015611284573d6000803e3d6000fd5b5050505050505050505050505050565b6112bc6040805160808101825260008082526020820181905291810182905290606082015290565b603660006112ff85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260492505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561136c5761136c614d78565b600281111561137d5761137d614d78565b9052509392505050565b6033546001600160a01b031633146113b15760405162461bcd60e51b81526004016106a4906152cd565b603454600160401b900460ff16156113db5760405162461bcd60e51b81526004016106a490615315565b6033546113f0906001600160a01b0316611f88565b565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461143a5760405162461bcd60e51b81526004016106a4906154f7565b611448633b9aca0082615708565b156114d25760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106a4565b60006114e2633b9aca008361571c565b6034549091506001600160401b03908116908216111561159b5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106a4565b603480548291906000906115b99084906001600160401b0316615730565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161161891815260200190565b60405180910390a261162a8383612c21565b505050565b600054610100900460ff161580801561164f5750600054600160ff909116105b806116695750303b158015611669575060005460ff166001145b6116cc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a4565b6000805460ff1916600117905580156116ef576000805461ff0019166101001790555b6001600160a01b0382166117625760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106a4565b603380546001600160a01b0384166001600160a01b031990911681179091556034805460ff60401b1916600160401b1790556040517fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a28015611803576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b031633146118315760405162461bcd60e51b81526004016106a4906152cd565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bd919061524e565b156118da5760405162461bcd60e51b81526004016106a490615270565b82518451146119655760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106a4565b60005b84518110156119d3576119c18385838151811061198757611987615456565b60200260200101518784815181106119a1576119a1615456565b60200260200101516001600160a01b0316612c2b9092919063ffffffff16565b806119cb816154dc565b915050611968565b5050505050565b604051635ac86ab760e01b81526004808201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a65919061524e565b15611a825760405162461bcd60e51b81526004016106a490615270565b8386148015611a9057508588145b8015611a9b57508782145b611b0f576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e766572696679416e6450726f636573735769746864726160448201527f77616c733a20696e70757473206d7573742062652073616d65206c656e67746860648201526084016106a4565b60405163d1c64cc960e01b81526001600160401b038c166004820152611bb3907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa158015611b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba491906153f7565b8b35610ac860208e018e615410565b604080518082019091526000808252602082015260005b83811015611cb3576000611c6e8d358d8d85818110611beb57611beb615456565b9050602002810190611bfd9190615758565b8c8c86818110611c0f57611c0f615456565b9050602002810190611c219190615410565b8c8c88818110611c3357611c33615456565b9050602002810190611c459190615493565b8c8c8a818110611c5757611c57615456565b9050602002810190611c699190615493565b612c7d565b80518451919250908490611c83908390614b56565b9052506020808201519084018051611c9c90839061562c565b905250819050611cab816154dc565b915050611bca565b50805115611ce2576033548151611ce2916001600160a01b031690611cdd90633b9aca0090615779565b613169565b602081015115611d975760335460208201516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263c2c51c4092911690611d3890633b9aca009061566d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611d7e57600080fd5b505af1158015611d92573d6000803e3d6000fd5b505050505b505050505050505050505050565b6033546001600160a01b03163314611dcf5760405162461bcd60e51b81526004016106a4906152cd565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5b919061524e565b15611e785760405162461bcd60e51b81526004016106a490615270565b603754821115611f295760405162461bcd60e51b815260206004820152606a60248201527f456967656e506f642e77697468647261776e6f6e426561636f6e436861696e4560448201527f544842616c616e63655765693a20616d6f756e74546f5769746864726177206960648201527f732067726561746572207468616e206e6f6e426561636f6e436861696e45544860848201526942616c616e636557656960b01b60a482015260c4016106a4565b8160376000828254611f3b9190615798565b90915550506040518281526001600160a01b038416907f30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f530969060200160405180910390a261162a8383613169565b6033805467ffffffffffffffff60a01b19164263ffffffff16600160a01b021790556000603755611fb98147613169565b50565b611fc860036020615779565b81146120585760405162461bcd60e51b815260206004820152605360248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a2050726f6f6620686064820152720c2e640d2dcc6dee4e4cac6e840d8cadccee8d606b1b608482015260a4016106a4565b61209d82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250879150600390506131f7565b6121445760405162461bcd60e51b815260206004820152606660248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a20496e76616c696460648201527f206c617465737420626c6f636b2068656164657220726f6f74206d65726b6c6560848201526510383937b7b360d11b60a482015260c4016106a4565b50505050565b60008061218984848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320f92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156121f8576121f8614d78565b600281111561220957612209614d78565b905250905060008160600151600281111561222657612226614d78565b146122cf5760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2056616c696461746f72206d757374206265206960648201527f6e61637469766520746f2070726f7665207769746864726177616c2063726564608482015266656e7469616c7360c81b60a482015260c4016106a4565b6122d76126fe565b6122e0906157af565b61231c86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061323392505050565b146123a35760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2050726f6f66206973206e6f7420666f7220746860648201526a1a5cc8115a59d95b941bd960aa1b608482015260a4016106a4565b60006123e186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061324892505050565b90506123f18a87878b8b8e61326d565b60398054906000612401836154dc565b90915550506001606083015264ffffffffff891682526001600160401b038b811660408401527f000000000000000000000000000000000000000000000000000000000000000081169082161115612487576001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166020830152612497565b6001600160401b03811660208301525b6000838152603660209081526040918290208451815492860151938601516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060850151859391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561253557612535614d78565b02179055505060405164ffffffffff8b1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a17f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df898c84602001516040516125d09392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1633b9aca0082602001516001600160401b03166125f59190615779565b9b9a5050505050505050505050565b6000815160301461268d5760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106a4565b6040516002906126a49084906000906020016157d3565b60408051601f19818403018152908290526126be91615802565b602060405180830381855afa1580156126db573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c6591906153f7565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b60008061278284848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061324892505050565b905060006127c285858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320f92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561283157612831614d78565b600281111561284257612842614d78565b8152505090508a6001600160401b031681604001516001600160401b0316106128f95760405162461bcd60e51b815260206004820152605c60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20566160448201527f6c696461746f72732062616c616e63652068617320616c72656164792062656560648201527f6e207570646174656420666f7220746869732074696d657374616d7000000000608482015260a4016106a4565b60018160600151600281111561291157612911614d78565b146129795760405162461bcd60e51b815260206004820152603260248201527f456967656e506f642e76657269667942616c616e63655570646174653a2056616044820152716c696461746f72206e6f742061637469766560701b60648201526084016106a4565b6129828b6134c4565b6001600160401b03166129c78787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506135ae92505050565b6001600160401b031611612a6a576000836001600160401b031611612a6a5760405162461bcd60e51b815260206004820152604d60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20766160448201527f6c696461746f7220697320776974686472617761626c6520627574206861732060648201526c3737ba103bb4ba34323930bbb760991b608482015260a4016106a4565b612a788987878b8b8f61326d565b602081015160006001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169086161115612ada57507f0000000000000000000000000000000000000000000000000000000000000000612add565b50835b6001600160401b0380821660208086019182528f831660408088019182526000898152603690935290912086518154935192518516600160801b0267ffffffffffffffff60801b19938616600160401b026001600160801b031990951691909516179290921790811683178255606086015186939091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b836002811115612b8557612b85614d78565b0217905550905050816001600160401b0316816001600160401b031614612c11577f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df8c8e83604051612bfc9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1612c0e81836135c6565b95505b5050505050979650505050505050565b61180382826135e5565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261162a9084906136fe565b6040805180820190915260008082526020820152612ca2612c9d89615883565b6137d0565b6033546001600160401b03600160a01b90910481169082161015612cd85760405162461bcd60e51b81526004016106a490615364565b6000612ce6612c9d8b615883565b90506000612d2688888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320f92505050565b905060008082815260366020526040902054600160c01b900460ff166002811115612d5357612d53614d78565b1415612e0a5760405162461bcd60e51b815260206004820152607460248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a2056616c696461746f72206e657665722070726f76656e20746f2060648201527f68617665207769746864726177616c2063726564656e7469616c7320706f696e6084820152731d1959081d1bc81d1a1a5cc818dbdb9d1c9858dd60621b60a482015260c4016106a4565b60008181526035602090815260408083206001600160401b038616845290915290205460ff1615612ec95760405162461bcd60e51b815260206004820152605b60248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a207769746864726177616c2068617320616c72656164792062656560648201527f6e2070726f76656e20666f7220746869732074696d657374616d700000000000608482015260a4016106a4565b6001603560008381526020019081526020016000206000846001600160401b03166001600160401b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550612fa68c87878e7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166344e71c806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa191906159bf565b6137e0565b6000612fe487878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061420192505050565b9050612ff48d8a8a8e8e8661326d565b600061303288888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061421992505050565b90506130708a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506135ae92505050565b6001600160401b031661308a6130858f615883565b614231565b6001600160401b03161061314257603354600084815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b81049093169381019390935261313793869388938a936001600160a01b03909316928892916060830190600160c01b900460ff16600281111561311e5761311e614d78565b600281111561312f5761312f614d78565b905250614243565b95505050505061315c565b60335461313790839086906001600160a01b031684614481565b5098975050505050505050565b603354604051633036cd5360e21b81526001600160a01b03918216600482015283821660248201527f00000000000000000000000000000000000000000000000000000000000000009091169063c0db354c9083906044016000604051808303818588803b1580156131da57600080fd5b505af11580156131ee573d6000803e3d6000fd5b50505050505050565b60008361320586858561455f565b1495945050505050565b60008160008151811061322457613224615456565b60200260200101519050919050565b60008160018151811061322457613224615456565b6000610c658260028151811061326057613260615456565b60200260200101516146ab565b61327960036002615ac0565b84146133045760405162461bcd60e51b815260206004820152604e60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b600561331260286001614b56565b61331c9190614b56565b613327906020615779565b82146133a75760405162461bcd60e51b815260206004820152604360248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106a4565b600064ffffffffff82166133bd60286001614b56565b600b901b179050600061340287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061471292505050565b905061344885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508591508690506131f7565b6134ba5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106a4565b5050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316826001600160401b0316101561356e5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f642e5f74696d657374616d70546f45706f63683a2074696d6560448201527f7374616d70206973206265666f72652067656e6573697300000000000000000060648201526084016106a4565b61357a600c6020615acc565b6135a47f000000000000000000000000000000000000000000000000000000000000000084615730565b610c659190615afb565b6000610c658260078151811061326057613260615456565b60006135de6001600160401b03808416908516615b21565b9392505050565b804710156136355760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106a4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613682576040519150601f19603f3d011682016040523d82523d6000602084013e613687565b606091505b505090508061162a5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106a4565b6000613753826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166149bf9092919063ffffffff16565b80519091501561162a5780806020019051810190613771919061524e565b61162a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a4565b6000610c658261014001516146ab565b6137eb600280615ac0565b831461385f5760405162461bcd60e51b81526020600482015260496024820152600080516020615bd383398151915260448201527f616c3a207769746864726177616c4669656c64732068617320696e636f7272656064820152680c6e840d8cadccee8d60bb1b608482015260a4016106a4565b61386b600d6002615ac0565b61387b60c0840160a08501615b60565b6001600160401b0316106138e55760405162461bcd60e51b815260206004820152603f6024820152600080516020615bd383398151915260448201527f616c3a20626c6f636b526f6f74496e64657820697320746f6f206c617267650060648201526084016106a4565b6138f160046002615ac0565b613902610100840160e08501615b60565b6001600160401b03161061396e576040805162461bcd60e51b8152602060048201526024810191909152600080516020615bd383398151915260448201527f616c3a207769746864726177616c496e64657820697320746f6f206c6172676560648201526084016106a4565b61397a60186002615ac0565b61398a60e0840160c08501615b60565b6001600160401b031610613a045760405162461bcd60e51b81526020600482015260476024820152600080516020615bd383398151915260448201527f616c3a20686973746f726963616c53756d6d617279496e64657820697320746f6064820152666f206c6172676560c81b608482015260a4016106a4565b60006001600160401b038216613a1c612c9d85615883565b6001600160401b031610613a31576005613a34565b60045b9050613a41600482614b56565b613a4c906001614b56565b613a57906020615779565b613a618480615410565b905014613ad55760405162461bcd60e51b81526020600482015260486024820152600080516020615bd383398151915260448201527f616c3a207769746864726177616c50726f6f662068617320696e636f727265636064820152670e840d8cadccee8d60c31b608482015260a4016106a4565b613ae160046003614b56565b613aec906020615779565b613af96040850185615410565b905014613b735760405162461bcd60e51b815260206004820152604e6024820152600080516020615bd383398151915260448201527f616c3a20657865637574696f6e5061796c6f616450726f6f662068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b613b7f60036020615779565b613b8c6020850185615410565b905014613bfa5760405162461bcd60e51b81526020600482015260426024820152600080516020615bd383398151915260448201527f616c3a20736c6f7450726f6f662068617320696e636f7272656374206c656e676064820152610e8d60f31b608482015260a4016106a4565b613c05816020615779565b613c126060850185615410565b905014613c855760405162461bcd60e51b81526020600482015260476024820152600080516020615bd383398151915260448201527f616c3a2074696d657374616d7050726f6f662068617320696e636f7272656374606482015266040d8cadccee8d60cb1b608482015260a4016106a4565b600d613c9360186001614b56565b613c9e906005614b56565b613ca9906001614b56565b613cb39190614b56565b613cbe906020615779565b613ccb6080850185615410565b905014613d545760405162461bcd60e51b81526020600482015260586024820152600080516020615bd383398151915260448201527f616c3a20686973746f726963616c53756d6d617279426c6f636b526f6f74507260648201527f6f6f662068617320696e636f7272656374206c656e6774680000000000000000608482015260a4016106a4565b6000613d6660c0850160a08601615b60565b6001600160401b03166000613d7d600d6001614b56565b613d8d60e0880160c08901615b60565b6001600160401b0316901b600d613da660186001614b56565b613db1906001614b56565b613dbb9190614b56565b601b901b1717179050613e16613dd46080860186615410565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92505050610100870135846131f7565b613e895760405162461bcd60e51b815260206004820152604a6024820152600080516020615bd383398151915260448201527f616c3a20496e76616c696420686973746f726963616c73756d6d617279206d656064820152693935b63290383937b7b360b11b608482015260a4016106a4565b613ee0613e996020860186615410565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506101008a013593506101208a0135925090506131f7565b613f405760405162461bcd60e51b815260206004820152603d6024820152600080516020615bd383398151915260448201527f616c3a20496e76616c696420736c6f74206d65726b6c652070726f6f6600000060648201526084016106a4565b6049613f98613f526040870187615410565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050610100870135610160880135846131f7565b61400a5760405162461bcd60e51b81526020600482015260496024820152600080516020615bd383398151915260448201527f616c3a20496e76616c696420657865637574696f6e5061796c6f6164206d657260648201526835b63290383937b7b360b91b608482015260a4016106a4565b5061406261401b6060860186615410565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061016086013561014087013560096131f7565b6140cd5760405162461bcd60e51b81526020600482015260426024820152600080516020615bd383398151915260448201527f616c3a20496e76616c69642074696d657374616d70206d65726b6c652070726f60648201526137b360f11b608482015260a4016106a4565b60006140e0610100860160e08701615b60565b6001600160401b03166140f560046001614b56565b600e901b179050600061413a88888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061471292505050565b905061418a6141498780615410565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061016088013583856131f7565b6141f65760405162461bcd60e51b81526020600482015260436024820152600080516020615bd383398151915260448201527f616c3a20496e76616c6964207769746864726177616c206d65726b6c6520707260648201526237b7b360e91b608482015260a4016106a4565b505050505050505050565b6000610c658260018151811061326057613260615456565b6000610c658260038151811061326057613260615456565b600060206135a48361012001516146ab565b604080518082019091526000808252602082015260007f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316846001600160401b031611156142ba57507f00000000000000000000000000000000000000000000000000000000000000006142bd565b50825b60408051808201909152600080825260208201526142db8286615730565b6001600160401b0390811682526034805484926000916142fd91859116615b7d565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061432f8285602001516135c6565b602082015260028460600151600281111561434c5761434c614d78565b1461436e576039805490600061436183615ba8565b9091555050600260608501525b600060208086018281528a83526036909152604091829020865181549251938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516929091169190911792909217928316821781556060870151879391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561441357614413614d78565b0217905550506040805164ffffffffff8c1681526001600160401b038a8116602083015288168183015290516001600160a01b03891692507fb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a09639181900360600190a298975050505050505050565b60408051808201909152600080825260208201526040805164ffffffffff871681526001600160401b0380871660208301528416918101919091526001600160a01b038416907f8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e9060600160405180910390a2603880548391906000906145129084906001600160401b0316615b7d565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506040518060400160405280836001600160401b0316815260200160008152509050949350505050565b6000835160001415801561457e57506020845161457c9190615708565b155b61460d5760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106a4565b604080516020808201909252848152905b855181116146a157614631600285615708565b614664578151600052808601516020526020826040600060026107d05a03fa61465957600080fd5b60028404935061468f565b8086015160005281516020526020826040600060026107d05a03fa61468857600080fd5b6002840493505b61469a602082614b56565b905061461e565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b60008060028351614723919061571c565b90506000816001600160401b0381111561473f5761473f614f85565b604051908082528060200260200182016040528015614768578160200160208202803683370190505b50905060005b8281101561486f576002856147838383615779565b8151811061479357614793615456565b6020026020010151868360026147a99190615779565b6147b4906001614b56565b815181106147c4576147c4615456565b60200260200101516040516020016147e6929190918252602082015260400190565b60408051601f198184030181529082905261480091615802565b602060405180830381855afa15801561481d573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061484091906153f7565b82828151811061485257614852615456565b602090810291909101015280614867816154dc565b91505061476e565b5061487b60028361571c565b91505b811561499b5760005b828110156149885760028261489c8383615779565b815181106148ac576148ac615456565b6020026020010151838360026148c29190615779565b6148cd906001614b56565b815181106148dd576148dd615456565b60200260200101516040516020016148ff929190918252602082015260400190565b60408051601f198184030181529082905261491991615802565b602060405180830381855afa158015614936573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061495991906153f7565b82828151811061496b5761496b615456565b602090810291909101015280614980816154dc565b915050614887565b5061499460028361571c565b915061487e565b806000815181106149ae576149ae615456565b602002602001015192505050919050565b60606149ce84846000856149d6565b949350505050565b606082471015614a375760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a4565b6001600160a01b0385163b614a8e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a4565b600080866001600160a01b03168587604051614aaa9190615802565b60006040518083038185875af1925050503d8060008114614ae7576040519150601f19603f3d011682016040523d82523d6000602084013e614aec565b606091505b5091509150614afc828286614b07565b979650505050505050565b60608315614b165750816135de565b825115614b265782518084602001fd5b8160405162461bcd60e51b81526004016106a49190615bbf565b634e487b7160e01b600052601160045260246000fd5b60008219821115614b6957614b69614b40565b500190565b6001600160401b0381168114611fb957600080fd5b8035614b8e81614b6e565b919050565b60008060408385031215614ba657600080fd5b823591506020830135614bb881614b6e565b809150509250929050565b600060408284031215614bd557600080fd5b50919050565b60008083601f840112614bed57600080fd5b5081356001600160401b03811115614c0457600080fd5b6020830191508360208260051b8501011115614c1f57600080fd5b9250929050565b60008060008060008060008060a0898b031215614c4257600080fd5b8835614c4d81614b6e565b975060208901356001600160401b0380821115614c6957600080fd5b614c758c838d01614bc3565b985060408b0135915080821115614c8b57600080fd5b614c978c838d01614bdb565b909850965060608b0135915080821115614cb057600080fd5b614cbc8c838d01614bdb565b909650945060808b0135915080821115614cd557600080fd5b50614ce28b828c01614bdb565b999c989b5096995094979396929594505050565b60008083601f840112614d0857600080fd5b5081356001600160401b03811115614d1f57600080fd5b602083019150836020828501011115614c1f57600080fd5b60008060208385031215614d4a57600080fd5b82356001600160401b03811115614d6057600080fd5b614d6c85828601614cf6565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110614dac57634e487b7160e01b600052602160045260246000fd5b9052565b60208101610c658284614d8e565b600060208284031215614dd057600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151614e186060840182614d8e565b5092915050565b600080600080600060608688031215614e3757600080fd5b85356001600160401b0380821115614e4e57600080fd5b614e5a89838a01614cf6565b90975095506020880135915080821115614e7357600080fd5b50614e8088828901614cf6565b96999598509660400135949350505050565b60008060008060008060008060a0898b031215614eae57600080fd5b8835614eb981614b6e565b975060208901356001600160401b0380821115614ed557600080fd5b614ee18c838d01614bdb565b909950975060408b0135915080821115614efa57600080fd5b614f068c838d01614bc3565b965060608b0135915080821115614cb057600080fd5b6001600160a01b0381168114611fb957600080fd5b8035614b8e81614f1c565b60008060408385031215614f4f57600080fd5b8235614f5a81614f1c565b946020939093013593505050565b600060208284031215614f7a57600080fd5b81356135de81614f1c565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b0381118282101715614fbe57614fbe614f85565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614fec57614fec614f85565b604052919050565b60006001600160401b0382111561500d5761500d614f85565b5060051b60200190565b600082601f83011261502857600080fd5b8135602061503d61503883614ff4565b614fc4565b82815260059290921b8401810191818101908684111561505c57600080fd5b8286015b848110156150775780358352918301918301615060565b509695505050505050565b60008060006060848603121561509757600080fd5b83356001600160401b03808211156150ae57600080fd5b818601915086601f8301126150c257600080fd5b813560206150d261503883614ff4565b82815260059290921b8401810191818101908a8411156150f157600080fd5b948201945b8386101561511857853561510981614f1c565b825294820194908201906150f6565b9750508701359250508082111561512e57600080fd5b5061513b86828701615017565b92505061514a60408501614f31565b90509250925092565b60008060008060008060008060008060c08b8d03121561517257600080fd5b61517b8b614b83565b995060208b01356001600160401b038082111561519757600080fd5b6151a38e838f01614bc3565b9a5060408d01359150808211156151b957600080fd5b6151c58e838f01614bdb565b909a50985060608d01359150808211156151de57600080fd5b6151ea8e838f01614bdb565b909850965060808d013591508082111561520357600080fd5b61520f8e838f01614bdb565b909650945060a08d013591508082111561522857600080fd5b506152358d828e01614bdb565b915080935050809150509295989b9194979a5092959850565b60006020828403121561526057600080fd5b815180151581146135de57600080fd5b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b6020808252602f908201527f456967656e506f642e6861734e6576657252657374616b65643a20726573746160408201526e1ada5b99c81a5cc8195b98589b1959608a1b606082015260800190565b60208082526067908201527f456967656e506f642e70726f6f664973466f7256616c696454696d657374616d60408201527f703a20626561636f6e20636861696e2070726f6f66206d75737420626520617460608201527f206f72206166746572206d6f7374526563656e745769746864726177616c546960808201526606d657374616d760cc1b60a082015260c00190565b60006020828403121561540957600080fd5b5051919050565b6000808335601e1984360301811261542757600080fd5b8301803591506001600160401b0382111561544157600080fd5b602001915036819003821315614c1f57600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561547e57600080fd5b813564ffffffffff811681146135de57600080fd5b6000808335601e198436030181126154aa57600080fd5b8301803591506001600160401b038211156154c457600080fd5b6020019150600581901b3603821315614c1f57600080fd5b60006000198214156154f0576154f0614b40565b5060010190565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60005b8381101561558c578181015183820152602001615574565b838111156121445750506000910152565b600081518084526155b5816020860160208601615571565b601f01601f19169290920160200192915050565b6080815260006155dd60808301888a615548565b82810360208401526155ef818861559d565b90508281036040840152615604818688615548565b915050826060830152979650505050505050565b6020815260006149ce602083018486615548565b600080821280156001600160ff1b038490038513161561564e5761564e614b40565b600160ff1b839003841281161561566757615667614b40565b50500190565b60006001600160ff1b038184138284138082168684048611161561569357615693614b40565b600160ff1b60008712828116878305891216156156b2576156b2614b40565b600087129250878205871284841616156156ce576156ce614b40565b878505871281841616156156e4576156e4614b40565b505050929093029392505050565b634e487b7160e01b600052601260045260246000fd5b600082615717576157176156f2565b500690565b60008261572b5761572b6156f2565b500490565b60006001600160401b038381169083168181101561575057615750614b40565b039392505050565b6000823561017e1983360301811261576f57600080fd5b9190910192915050565b600081600019048311821515161561579357615793614b40565b500290565b6000828210156157aa576157aa614b40565b500390565b80516020808301519190811015614bd55760001960209190910360031b1b16919050565b600083516157e5818460208801615571565b6001600160801b0319939093169190920190815260100192915050565b6000825161576f818460208701615571565b600082601f83011261582557600080fd5b81356001600160401b0381111561583e5761583e614f85565b615851601f8201601f1916602001614fc4565b81815284602083860101111561586657600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180823603121561589657600080fd5b61589e614f9b565b82356001600160401b03808211156158b557600080fd5b6158c136838701615814565b835260208501359150808211156158d757600080fd5b6158e336838701615814565b602084015260408501359150808211156158fc57600080fd5b61590836838701615814565b6040840152606085013591508082111561592157600080fd5b61592d36838701615814565b6060840152608085013591508082111561594657600080fd5b5061595336828601615814565b60808301525061596560a08401614b83565b60a082015261597660c08401614b83565b60c082015261598760e08401614b83565b60e082015261010083810135908201526101208084013590820152610140808401359082015261016092830135928101929092525090565b6000602082840312156159d157600080fd5b81516135de81614b6e565b600181815b80851115615a175781600019048211156159fd576159fd614b40565b80851615615a0a57918102915b93841c93908002906159e1565b509250929050565b600082615a2e57506001610c65565b81615a3b57506000610c65565b8160018114615a515760028114615a5b57615a77565b6001915050610c65565b60ff841115615a6c57615a6c614b40565b50506001821b610c65565b5060208310610133831016604e8410600b8410161715615a9a575081810a610c65565b615aa483836159dc565b8060001904821115615ab857615ab8614b40565b029392505050565b60006135de8383615a1f565b60006001600160401b0380831681851681830481118215151615615af257615af2614b40565b02949350505050565b60006001600160401b0380841680615b1557615b156156f2565b92169190910492915050565b60008083128015600160ff1b850184121615615b3f57615b3f614b40565b6001600160ff1b0384018313811615615b5a57615b5a614b40565b50500390565b600060208284031215615b7257600080fd5b81356135de81614b6e565b60006001600160401b03808316818516808303821115615b9f57615b9f614b40565b01949350505050565b600081615bb757615bb7614b40565b506000190190565b6020815260006135de602083018461559d56fe426561636f6e436861696e50726f6f66732e7665726966795769746864726177a2646970667358221220870ad3e800ce9588580fd8d094e368e36de116a7b0eb02adedf65a93330ee40064736f6c634300080c0033", +} + +// EigenPodABI is the input ABI used to generate the binding from. +// Deprecated: Use EigenPodMetaData.ABI instead. +var EigenPodABI = EigenPodMetaData.ABI + +// EigenPodBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use EigenPodMetaData.Bin instead. +var EigenPodBin = EigenPodMetaData.Bin + +// DeployEigenPod deploys a new Ethereum contract, binding an instance of EigenPod to it. +func DeployEigenPod(auth *bind.TransactOpts, backend bind.ContractBackend, _ethPOS common.Address, _delayedWithdrawalRouter common.Address, _eigenPodManager common.Address, _MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR uint64, _GENESIS_TIME uint64) (common.Address, *types.Transaction, *EigenPod, error) { + parsed, err := EigenPodMetaData.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(EigenPodBin), backend, _ethPOS, _delayedWithdrawalRouter, _eigenPodManager, _MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR, _GENESIS_TIME) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &EigenPod{EigenPodCaller: EigenPodCaller{contract: contract}, EigenPodTransactor: EigenPodTransactor{contract: contract}, EigenPodFilterer: EigenPodFilterer{contract: contract}}, nil +} + +// EigenPod is an auto generated Go binding around an Ethereum contract. +type EigenPod struct { + EigenPodCaller // Read-only binding to the contract + EigenPodTransactor // Write-only binding to the contract + EigenPodFilterer // Log filterer for contract events +} + +// EigenPodCaller is an auto generated read-only Go binding around an Ethereum contract. +type EigenPodCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// EigenPodTransactor is an auto generated write-only Go binding around an Ethereum contract. +type EigenPodTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// EigenPodFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type EigenPodFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// EigenPodSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type EigenPodSession struct { + Contract *EigenPod // 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 +} + +// EigenPodCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type EigenPodCallerSession struct { + Contract *EigenPodCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// EigenPodTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type EigenPodTransactorSession struct { + Contract *EigenPodTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// EigenPodRaw is an auto generated low-level Go binding around an Ethereum contract. +type EigenPodRaw struct { + Contract *EigenPod // Generic contract binding to access the raw methods on +} + +// EigenPodCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type EigenPodCallerRaw struct { + Contract *EigenPodCaller // Generic read-only contract binding to access the raw methods on +} + +// EigenPodTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type EigenPodTransactorRaw struct { + Contract *EigenPodTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewEigenPod creates a new instance of EigenPod, bound to a specific deployed contract. +func NewEigenPod(address common.Address, backend bind.ContractBackend) (*EigenPod, error) { + contract, err := bindEigenPod(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &EigenPod{EigenPodCaller: EigenPodCaller{contract: contract}, EigenPodTransactor: EigenPodTransactor{contract: contract}, EigenPodFilterer: EigenPodFilterer{contract: contract}}, nil +} + +// NewEigenPodCaller creates a new read-only instance of EigenPod, bound to a specific deployed contract. +func NewEigenPodCaller(address common.Address, caller bind.ContractCaller) (*EigenPodCaller, error) { + contract, err := bindEigenPod(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &EigenPodCaller{contract: contract}, nil +} + +// NewEigenPodTransactor creates a new write-only instance of EigenPod, bound to a specific deployed contract. +func NewEigenPodTransactor(address common.Address, transactor bind.ContractTransactor) (*EigenPodTransactor, error) { + contract, err := bindEigenPod(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &EigenPodTransactor{contract: contract}, nil +} + +// NewEigenPodFilterer creates a new log filterer instance of EigenPod, bound to a specific deployed contract. +func NewEigenPodFilterer(address common.Address, filterer bind.ContractFilterer) (*EigenPodFilterer, error) { + contract, err := bindEigenPod(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &EigenPodFilterer{contract: contract}, nil +} + +// bindEigenPod binds a generic wrapper to an already deployed contract. +func bindEigenPod(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := EigenPodMetaData.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 (_EigenPod *EigenPodRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _EigenPod.Contract.EigenPodCaller.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 (_EigenPod *EigenPodRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _EigenPod.Contract.EigenPodTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_EigenPod *EigenPodRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _EigenPod.Contract.EigenPodTransactor.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 (_EigenPod *EigenPodCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _EigenPod.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 (_EigenPod *EigenPodTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _EigenPod.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_EigenPod *EigenPodTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _EigenPod.Contract.contract.Transact(opts, method, params...) +} + +// GENESISTIME is a free data retrieval call binding the contract method 0xf2882461. +// +// Solidity: function GENESIS_TIME() view returns(uint64) +func (_EigenPod *EigenPodCaller) GENESISTIME(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _EigenPod.contract.Call(opts, &out, "GENESIS_TIME") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GENESISTIME is a free data retrieval call binding the contract method 0xf2882461. +// +// Solidity: function GENESIS_TIME() view returns(uint64) +func (_EigenPod *EigenPodSession) GENESISTIME() (uint64, error) { + return _EigenPod.Contract.GENESISTIME(&_EigenPod.CallOpts) +} + +// GENESISTIME is a free data retrieval call binding the contract method 0xf2882461. +// +// Solidity: function GENESIS_TIME() view returns(uint64) +func (_EigenPod *EigenPodCallerSession) GENESISTIME() (uint64, error) { + return _EigenPod.Contract.GENESISTIME(&_EigenPod.CallOpts) +} + +// MAXRESTAKEDBALANCEGWEIPERVALIDATOR is a free data retrieval call binding the contract method 0x1d905d5c. +// +// Solidity: function MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR() view returns(uint64) +func (_EigenPod *EigenPodCaller) MAXRESTAKEDBALANCEGWEIPERVALIDATOR(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _EigenPod.contract.Call(opts, &out, "MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// MAXRESTAKEDBALANCEGWEIPERVALIDATOR is a free data retrieval call binding the contract method 0x1d905d5c. +// +// Solidity: function MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR() view returns(uint64) +func (_EigenPod *EigenPodSession) MAXRESTAKEDBALANCEGWEIPERVALIDATOR() (uint64, error) { + return _EigenPod.Contract.MAXRESTAKEDBALANCEGWEIPERVALIDATOR(&_EigenPod.CallOpts) +} + +// MAXRESTAKEDBALANCEGWEIPERVALIDATOR is a free data retrieval call binding the contract method 0x1d905d5c. +// +// Solidity: function MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR() view returns(uint64) +func (_EigenPod *EigenPodCallerSession) MAXRESTAKEDBALANCEGWEIPERVALIDATOR() (uint64, error) { + return _EigenPod.Contract.MAXRESTAKEDBALANCEGWEIPERVALIDATOR(&_EigenPod.CallOpts) +} + +// DelayedWithdrawalRouter is a free data retrieval call binding the contract method 0x1a5057be. +// +// Solidity: function delayedWithdrawalRouter() view returns(address) +func (_EigenPod *EigenPodCaller) DelayedWithdrawalRouter(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _EigenPod.contract.Call(opts, &out, "delayedWithdrawalRouter") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// DelayedWithdrawalRouter is a free data retrieval call binding the contract method 0x1a5057be. +// +// Solidity: function delayedWithdrawalRouter() view returns(address) +func (_EigenPod *EigenPodSession) DelayedWithdrawalRouter() (common.Address, error) { + return _EigenPod.Contract.DelayedWithdrawalRouter(&_EigenPod.CallOpts) +} + +// DelayedWithdrawalRouter is a free data retrieval call binding the contract method 0x1a5057be. +// +// Solidity: function delayedWithdrawalRouter() view returns(address) +func (_EigenPod *EigenPodCallerSession) DelayedWithdrawalRouter() (common.Address, error) { + return _EigenPod.Contract.DelayedWithdrawalRouter(&_EigenPod.CallOpts) +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_EigenPod *EigenPodCaller) EigenPodManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _EigenPod.contract.Call(opts, &out, "eigenPodManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_EigenPod *EigenPodSession) EigenPodManager() (common.Address, error) { + return _EigenPod.Contract.EigenPodManager(&_EigenPod.CallOpts) +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_EigenPod *EigenPodCallerSession) EigenPodManager() (common.Address, error) { + return _EigenPod.Contract.EigenPodManager(&_EigenPod.CallOpts) +} + +// EthPOS is a free data retrieval call binding the contract method 0x74cdd798. +// +// Solidity: function ethPOS() view returns(address) +func (_EigenPod *EigenPodCaller) EthPOS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _EigenPod.contract.Call(opts, &out, "ethPOS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EthPOS is a free data retrieval call binding the contract method 0x74cdd798. +// +// Solidity: function ethPOS() view returns(address) +func (_EigenPod *EigenPodSession) EthPOS() (common.Address, error) { + return _EigenPod.Contract.EthPOS(&_EigenPod.CallOpts) +} + +// EthPOS is a free data retrieval call binding the contract method 0x74cdd798. +// +// Solidity: function ethPOS() view returns(address) +func (_EigenPod *EigenPodCallerSession) EthPOS() (common.Address, error) { + return _EigenPod.Contract.EthPOS(&_EigenPod.CallOpts) +} + +// HasRestaked is a free data retrieval call binding the contract method 0x3106ab53. +// +// Solidity: function hasRestaked() view returns(bool) +func (_EigenPod *EigenPodCaller) HasRestaked(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _EigenPod.contract.Call(opts, &out, "hasRestaked") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasRestaked is a free data retrieval call binding the contract method 0x3106ab53. +// +// Solidity: function hasRestaked() view returns(bool) +func (_EigenPod *EigenPodSession) HasRestaked() (bool, error) { + return _EigenPod.Contract.HasRestaked(&_EigenPod.CallOpts) +} + +// HasRestaked is a free data retrieval call binding the contract method 0x3106ab53. +// +// Solidity: function hasRestaked() view returns(bool) +func (_EigenPod *EigenPodCallerSession) HasRestaked() (bool, error) { + return _EigenPod.Contract.HasRestaked(&_EigenPod.CallOpts) +} + +// MostRecentWithdrawalTimestamp is a free data retrieval call binding the contract method 0x87e0d289. +// +// Solidity: function mostRecentWithdrawalTimestamp() view returns(uint64) +func (_EigenPod *EigenPodCaller) MostRecentWithdrawalTimestamp(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _EigenPod.contract.Call(opts, &out, "mostRecentWithdrawalTimestamp") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// MostRecentWithdrawalTimestamp is a free data retrieval call binding the contract method 0x87e0d289. +// +// Solidity: function mostRecentWithdrawalTimestamp() view returns(uint64) +func (_EigenPod *EigenPodSession) MostRecentWithdrawalTimestamp() (uint64, error) { + return _EigenPod.Contract.MostRecentWithdrawalTimestamp(&_EigenPod.CallOpts) +} + +// MostRecentWithdrawalTimestamp is a free data retrieval call binding the contract method 0x87e0d289. +// +// Solidity: function mostRecentWithdrawalTimestamp() view returns(uint64) +func (_EigenPod *EigenPodCallerSession) MostRecentWithdrawalTimestamp() (uint64, error) { + return _EigenPod.Contract.MostRecentWithdrawalTimestamp(&_EigenPod.CallOpts) +} + +// NonBeaconChainETHBalanceWei is a free data retrieval call binding the contract method 0xfe80b087. +// +// Solidity: function nonBeaconChainETHBalanceWei() view returns(uint256) +func (_EigenPod *EigenPodCaller) NonBeaconChainETHBalanceWei(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _EigenPod.contract.Call(opts, &out, "nonBeaconChainETHBalanceWei") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// NonBeaconChainETHBalanceWei is a free data retrieval call binding the contract method 0xfe80b087. +// +// Solidity: function nonBeaconChainETHBalanceWei() view returns(uint256) +func (_EigenPod *EigenPodSession) NonBeaconChainETHBalanceWei() (*big.Int, error) { + return _EigenPod.Contract.NonBeaconChainETHBalanceWei(&_EigenPod.CallOpts) +} + +// NonBeaconChainETHBalanceWei is a free data retrieval call binding the contract method 0xfe80b087. +// +// Solidity: function nonBeaconChainETHBalanceWei() view returns(uint256) +func (_EigenPod *EigenPodCallerSession) NonBeaconChainETHBalanceWei() (*big.Int, error) { + return _EigenPod.Contract.NonBeaconChainETHBalanceWei(&_EigenPod.CallOpts) +} + +// PodOwner is a free data retrieval call binding the contract method 0x0b18ff66. +// +// Solidity: function podOwner() view returns(address) +func (_EigenPod *EigenPodCaller) PodOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _EigenPod.contract.Call(opts, &out, "podOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PodOwner is a free data retrieval call binding the contract method 0x0b18ff66. +// +// Solidity: function podOwner() view returns(address) +func (_EigenPod *EigenPodSession) PodOwner() (common.Address, error) { + return _EigenPod.Contract.PodOwner(&_EigenPod.CallOpts) +} + +// PodOwner is a free data retrieval call binding the contract method 0x0b18ff66. +// +// Solidity: function podOwner() view returns(address) +func (_EigenPod *EigenPodCallerSession) PodOwner() (common.Address, error) { + return _EigenPod.Contract.PodOwner(&_EigenPod.CallOpts) +} + +// ProvenWithdrawal is a free data retrieval call binding the contract method 0x34bea20a. +// +// Solidity: function provenWithdrawal(bytes32 , uint64 ) view returns(bool) +func (_EigenPod *EigenPodCaller) ProvenWithdrawal(opts *bind.CallOpts, arg0 [32]byte, arg1 uint64) (bool, error) { + var out []interface{} + err := _EigenPod.contract.Call(opts, &out, "provenWithdrawal", arg0, arg1) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ProvenWithdrawal is a free data retrieval call binding the contract method 0x34bea20a. +// +// Solidity: function provenWithdrawal(bytes32 , uint64 ) view returns(bool) +func (_EigenPod *EigenPodSession) ProvenWithdrawal(arg0 [32]byte, arg1 uint64) (bool, error) { + return _EigenPod.Contract.ProvenWithdrawal(&_EigenPod.CallOpts, arg0, arg1) +} + +// ProvenWithdrawal is a free data retrieval call binding the contract method 0x34bea20a. +// +// Solidity: function provenWithdrawal(bytes32 , uint64 ) view returns(bool) +func (_EigenPod *EigenPodCallerSession) ProvenWithdrawal(arg0 [32]byte, arg1 uint64) (bool, error) { + return _EigenPod.Contract.ProvenWithdrawal(&_EigenPod.CallOpts, arg0, arg1) +} + +// SumOfPartialWithdrawalsClaimedGwei is a free data retrieval call binding the contract method 0x5d3f65b6. +// +// Solidity: function sumOfPartialWithdrawalsClaimedGwei() view returns(uint64) +func (_EigenPod *EigenPodCaller) SumOfPartialWithdrawalsClaimedGwei(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _EigenPod.contract.Call(opts, &out, "sumOfPartialWithdrawalsClaimedGwei") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// SumOfPartialWithdrawalsClaimedGwei is a free data retrieval call binding the contract method 0x5d3f65b6. +// +// Solidity: function sumOfPartialWithdrawalsClaimedGwei() view returns(uint64) +func (_EigenPod *EigenPodSession) SumOfPartialWithdrawalsClaimedGwei() (uint64, error) { + return _EigenPod.Contract.SumOfPartialWithdrawalsClaimedGwei(&_EigenPod.CallOpts) +} + +// SumOfPartialWithdrawalsClaimedGwei is a free data retrieval call binding the contract method 0x5d3f65b6. +// +// Solidity: function sumOfPartialWithdrawalsClaimedGwei() view returns(uint64) +func (_EigenPod *EigenPodCallerSession) SumOfPartialWithdrawalsClaimedGwei() (uint64, error) { + return _EigenPod.Contract.SumOfPartialWithdrawalsClaimedGwei(&_EigenPod.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 *EigenPodCaller) ValidatorPubkeyHashToInfo(opts *bind.CallOpts, validatorPubkeyHash [32]byte) (IEigenPodValidatorInfo, error) { + var out []interface{} + err := _EigenPod.contract.Call(opts, &out, "validatorPubkeyHashToInfo", validatorPubkeyHash) + + if err != nil { + return *new(IEigenPodValidatorInfo), err + } + + out0 := *abi.ConvertType(out[0], new(IEigenPodValidatorInfo)).(*IEigenPodValidatorInfo) + + return out0, err + +} + +// 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) { + 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) { + 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) { + var out []interface{} + err := _EigenPod.contract.Call(opts, &out, "validatorPubkeyToInfo", validatorPubkey) + + if err != nil { + return *new(IEigenPodValidatorInfo), err + } + + out0 := *abi.ConvertType(out[0], new(IEigenPodValidatorInfo)).(*IEigenPodValidatorInfo) + + return out0, err + +} + +// 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) { + 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) { + return _EigenPod.Contract.ValidatorPubkeyToInfo(&_EigenPod.CallOpts, validatorPubkey) +} + +// ValidatorStatus is a free data retrieval call binding the contract method 0x58eaee79. +// +// Solidity: function validatorStatus(bytes validatorPubkey) view returns(uint8) +func (_EigenPod *EigenPodCaller) ValidatorStatus(opts *bind.CallOpts, validatorPubkey []byte) (uint8, error) { + var out []interface{} + err := _EigenPod.contract.Call(opts, &out, "validatorStatus", validatorPubkey) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// ValidatorStatus is a free data retrieval call binding the contract method 0x58eaee79. +// +// Solidity: function validatorStatus(bytes validatorPubkey) view returns(uint8) +func (_EigenPod *EigenPodSession) ValidatorStatus(validatorPubkey []byte) (uint8, error) { + return _EigenPod.Contract.ValidatorStatus(&_EigenPod.CallOpts, validatorPubkey) +} + +// ValidatorStatus is a free data retrieval call binding the contract method 0x58eaee79. +// +// Solidity: function validatorStatus(bytes validatorPubkey) view returns(uint8) +func (_EigenPod *EigenPodCallerSession) ValidatorStatus(validatorPubkey []byte) (uint8, error) { + return _EigenPod.Contract.ValidatorStatus(&_EigenPod.CallOpts, validatorPubkey) +} + +// ValidatorStatus0 is a free data retrieval call binding the contract method 0x7439841f. +// +// Solidity: function validatorStatus(bytes32 pubkeyHash) view returns(uint8) +func (_EigenPod *EigenPodCaller) ValidatorStatus0(opts *bind.CallOpts, pubkeyHash [32]byte) (uint8, error) { + var out []interface{} + err := _EigenPod.contract.Call(opts, &out, "validatorStatus0", pubkeyHash) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// ValidatorStatus0 is a free data retrieval call binding the contract method 0x7439841f. +// +// Solidity: function validatorStatus(bytes32 pubkeyHash) view returns(uint8) +func (_EigenPod *EigenPodSession) ValidatorStatus0(pubkeyHash [32]byte) (uint8, error) { + return _EigenPod.Contract.ValidatorStatus0(&_EigenPod.CallOpts, pubkeyHash) +} + +// ValidatorStatus0 is a free data retrieval call binding the contract method 0x7439841f. +// +// Solidity: function validatorStatus(bytes32 pubkeyHash) view returns(uint8) +func (_EigenPod *EigenPodCallerSession) ValidatorStatus0(pubkeyHash [32]byte) (uint8, error) { + return _EigenPod.Contract.ValidatorStatus0(&_EigenPod.CallOpts, pubkeyHash) +} + +// WithdrawableRestakedExecutionLayerGwei is a free data retrieval call binding the contract method 0x3474aa16. +// +// Solidity: function withdrawableRestakedExecutionLayerGwei() view returns(uint64) +func (_EigenPod *EigenPodCaller) WithdrawableRestakedExecutionLayerGwei(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _EigenPod.contract.Call(opts, &out, "withdrawableRestakedExecutionLayerGwei") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// WithdrawableRestakedExecutionLayerGwei is a free data retrieval call binding the contract method 0x3474aa16. +// +// Solidity: function withdrawableRestakedExecutionLayerGwei() view returns(uint64) +func (_EigenPod *EigenPodSession) WithdrawableRestakedExecutionLayerGwei() (uint64, error) { + return _EigenPod.Contract.WithdrawableRestakedExecutionLayerGwei(&_EigenPod.CallOpts) +} + +// WithdrawableRestakedExecutionLayerGwei is a free data retrieval call binding the contract method 0x3474aa16. +// +// Solidity: function withdrawableRestakedExecutionLayerGwei() view returns(uint64) +func (_EigenPod *EigenPodCallerSession) WithdrawableRestakedExecutionLayerGwei() (uint64, error) { + return _EigenPod.Contract.WithdrawableRestakedExecutionLayerGwei(&_EigenPod.CallOpts) +} + +// ActivateRestaking is a paid mutator transaction binding the contract method 0x0cd4649e. +// +// Solidity: function activateRestaking() returns() +func (_EigenPod *EigenPodTransactor) ActivateRestaking(opts *bind.TransactOpts) (*types.Transaction, error) { + return _EigenPod.contract.Transact(opts, "activateRestaking") +} + +// ActivateRestaking is a paid mutator transaction binding the contract method 0x0cd4649e. +// +// Solidity: function activateRestaking() returns() +func (_EigenPod *EigenPodSession) ActivateRestaking() (*types.Transaction, error) { + return _EigenPod.Contract.ActivateRestaking(&_EigenPod.TransactOpts) +} + +// ActivateRestaking is a paid mutator transaction binding the contract method 0x0cd4649e. +// +// Solidity: function activateRestaking() returns() +func (_EigenPod *EigenPodTransactorSession) ActivateRestaking() (*types.Transaction, error) { + return _EigenPod.Contract.ActivateRestaking(&_EigenPod.TransactOpts) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _podOwner) returns() +func (_EigenPod *EigenPodTransactor) Initialize(opts *bind.TransactOpts, _podOwner common.Address) (*types.Transaction, error) { + return _EigenPod.contract.Transact(opts, "initialize", _podOwner) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _podOwner) returns() +func (_EigenPod *EigenPodSession) Initialize(_podOwner common.Address) (*types.Transaction, error) { + return _EigenPod.Contract.Initialize(&_EigenPod.TransactOpts, _podOwner) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address _podOwner) returns() +func (_EigenPod *EigenPodTransactorSession) Initialize(_podOwner common.Address) (*types.Transaction, error) { + return _EigenPod.Contract.Initialize(&_EigenPod.TransactOpts, _podOwner) +} + +// RecoverTokens is a paid mutator transaction binding the contract method 0xdda3346c. +// +// Solidity: function recoverTokens(address[] tokenList, uint256[] amountsToWithdraw, address recipient) returns() +func (_EigenPod *EigenPodTransactor) RecoverTokens(opts *bind.TransactOpts, tokenList []common.Address, amountsToWithdraw []*big.Int, recipient common.Address) (*types.Transaction, error) { + return _EigenPod.contract.Transact(opts, "recoverTokens", tokenList, amountsToWithdraw, recipient) +} + +// RecoverTokens is a paid mutator transaction binding the contract method 0xdda3346c. +// +// Solidity: function recoverTokens(address[] tokenList, uint256[] amountsToWithdraw, address recipient) returns() +func (_EigenPod *EigenPodSession) RecoverTokens(tokenList []common.Address, amountsToWithdraw []*big.Int, recipient common.Address) (*types.Transaction, error) { + return _EigenPod.Contract.RecoverTokens(&_EigenPod.TransactOpts, tokenList, amountsToWithdraw, recipient) +} + +// RecoverTokens is a paid mutator transaction binding the contract method 0xdda3346c. +// +// Solidity: function recoverTokens(address[] tokenList, uint256[] amountsToWithdraw, address recipient) returns() +func (_EigenPod *EigenPodTransactorSession) RecoverTokens(tokenList []common.Address, amountsToWithdraw []*big.Int, recipient common.Address) (*types.Transaction, error) { + return _EigenPod.Contract.RecoverTokens(&_EigenPod.TransactOpts, tokenList, amountsToWithdraw, recipient) +} + +// Stake is a paid mutator transaction binding the contract method 0x9b4e4634. +// +// Solidity: function stake(bytes pubkey, bytes signature, bytes32 depositDataRoot) payable returns() +func (_EigenPod *EigenPodTransactor) Stake(opts *bind.TransactOpts, pubkey []byte, signature []byte, depositDataRoot [32]byte) (*types.Transaction, error) { + return _EigenPod.contract.Transact(opts, "stake", pubkey, signature, depositDataRoot) +} + +// Stake is a paid mutator transaction binding the contract method 0x9b4e4634. +// +// Solidity: function stake(bytes pubkey, bytes signature, bytes32 depositDataRoot) payable returns() +func (_EigenPod *EigenPodSession) Stake(pubkey []byte, signature []byte, depositDataRoot [32]byte) (*types.Transaction, error) { + return _EigenPod.Contract.Stake(&_EigenPod.TransactOpts, pubkey, signature, depositDataRoot) +} + +// Stake is a paid mutator transaction binding the contract method 0x9b4e4634. +// +// Solidity: function stake(bytes pubkey, bytes signature, bytes32 depositDataRoot) payable returns() +func (_EigenPod *EigenPodTransactorSession) Stake(pubkey []byte, signature []byte, depositDataRoot [32]byte) (*types.Transaction, error) { + return _EigenPod.Contract.Stake(&_EigenPod.TransactOpts, pubkey, signature, depositDataRoot) +} + +// VerifyAndProcessWithdrawals is a paid mutator transaction binding the contract method 0xe251ef52. +// +// Solidity: function verifyAndProcessWithdrawals(uint64 oracleTimestamp, (bytes32,bytes) stateRootProof, (bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[] withdrawalProofs, bytes[] validatorFieldsProofs, bytes32[][] validatorFields, bytes32[][] withdrawalFields) returns() +func (_EigenPod *EigenPodTransactor) VerifyAndProcessWithdrawals(opts *bind.TransactOpts, oracleTimestamp uint64, stateRootProof BeaconChainProofsStateRootProof, withdrawalProofs []BeaconChainProofsWithdrawalProof, validatorFieldsProofs [][]byte, validatorFields [][][32]byte, withdrawalFields [][][32]byte) (*types.Transaction, error) { + return _EigenPod.contract.Transact(opts, "verifyAndProcessWithdrawals", oracleTimestamp, stateRootProof, withdrawalProofs, validatorFieldsProofs, validatorFields, withdrawalFields) +} + +// VerifyAndProcessWithdrawals is a paid mutator transaction binding the contract method 0xe251ef52. +// +// Solidity: function verifyAndProcessWithdrawals(uint64 oracleTimestamp, (bytes32,bytes) stateRootProof, (bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[] withdrawalProofs, bytes[] validatorFieldsProofs, bytes32[][] validatorFields, bytes32[][] withdrawalFields) returns() +func (_EigenPod *EigenPodSession) VerifyAndProcessWithdrawals(oracleTimestamp uint64, stateRootProof BeaconChainProofsStateRootProof, withdrawalProofs []BeaconChainProofsWithdrawalProof, validatorFieldsProofs [][]byte, validatorFields [][][32]byte, withdrawalFields [][][32]byte) (*types.Transaction, error) { + return _EigenPod.Contract.VerifyAndProcessWithdrawals(&_EigenPod.TransactOpts, oracleTimestamp, stateRootProof, withdrawalProofs, validatorFieldsProofs, validatorFields, withdrawalFields) +} + +// VerifyAndProcessWithdrawals is a paid mutator transaction binding the contract method 0xe251ef52. +// +// Solidity: function verifyAndProcessWithdrawals(uint64 oracleTimestamp, (bytes32,bytes) stateRootProof, (bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[] withdrawalProofs, bytes[] validatorFieldsProofs, bytes32[][] validatorFields, bytes32[][] withdrawalFields) returns() +func (_EigenPod *EigenPodTransactorSession) VerifyAndProcessWithdrawals(oracleTimestamp uint64, stateRootProof BeaconChainProofsStateRootProof, withdrawalProofs []BeaconChainProofsWithdrawalProof, validatorFieldsProofs [][]byte, validatorFields [][][32]byte, withdrawalFields [][][32]byte) (*types.Transaction, error) { + return _EigenPod.Contract.VerifyAndProcessWithdrawals(&_EigenPod.TransactOpts, oracleTimestamp, stateRootProof, withdrawalProofs, validatorFieldsProofs, validatorFields, withdrawalFields) +} + +// VerifyBalanceUpdates is a paid mutator transaction binding the contract method 0xa50600f4. +// +// Solidity: function verifyBalanceUpdates(uint64 oracleTimestamp, uint40[] validatorIndices, (bytes32,bytes) stateRootProof, bytes[] validatorFieldsProofs, bytes32[][] validatorFields) returns() +func (_EigenPod *EigenPodTransactor) VerifyBalanceUpdates(opts *bind.TransactOpts, oracleTimestamp uint64, validatorIndices []*big.Int, stateRootProof BeaconChainProofsStateRootProof, validatorFieldsProofs [][]byte, validatorFields [][][32]byte) (*types.Transaction, error) { + return _EigenPod.contract.Transact(opts, "verifyBalanceUpdates", oracleTimestamp, validatorIndices, stateRootProof, validatorFieldsProofs, validatorFields) +} + +// VerifyBalanceUpdates is a paid mutator transaction binding the contract method 0xa50600f4. +// +// Solidity: function verifyBalanceUpdates(uint64 oracleTimestamp, uint40[] validatorIndices, (bytes32,bytes) stateRootProof, bytes[] validatorFieldsProofs, bytes32[][] validatorFields) returns() +func (_EigenPod *EigenPodSession) VerifyBalanceUpdates(oracleTimestamp uint64, validatorIndices []*big.Int, stateRootProof BeaconChainProofsStateRootProof, validatorFieldsProofs [][]byte, validatorFields [][][32]byte) (*types.Transaction, error) { + return _EigenPod.Contract.VerifyBalanceUpdates(&_EigenPod.TransactOpts, oracleTimestamp, validatorIndices, stateRootProof, validatorFieldsProofs, validatorFields) +} + +// VerifyBalanceUpdates is a paid mutator transaction binding the contract method 0xa50600f4. +// +// Solidity: function verifyBalanceUpdates(uint64 oracleTimestamp, uint40[] validatorIndices, (bytes32,bytes) stateRootProof, bytes[] validatorFieldsProofs, bytes32[][] validatorFields) returns() +func (_EigenPod *EigenPodTransactorSession) VerifyBalanceUpdates(oracleTimestamp uint64, validatorIndices []*big.Int, stateRootProof BeaconChainProofsStateRootProof, validatorFieldsProofs [][]byte, validatorFields [][][32]byte) (*types.Transaction, error) { + return _EigenPod.Contract.VerifyBalanceUpdates(&_EigenPod.TransactOpts, oracleTimestamp, validatorIndices, stateRootProof, validatorFieldsProofs, validatorFields) +} + +// VerifyWithdrawalCredentials is a paid mutator transaction binding the contract method 0x3f65cf19. +// +// Solidity: function verifyWithdrawalCredentials(uint64 oracleTimestamp, (bytes32,bytes) stateRootProof, uint40[] validatorIndices, bytes[] validatorFieldsProofs, bytes32[][] validatorFields) returns() +func (_EigenPod *EigenPodTransactor) VerifyWithdrawalCredentials(opts *bind.TransactOpts, oracleTimestamp uint64, stateRootProof BeaconChainProofsStateRootProof, validatorIndices []*big.Int, validatorFieldsProofs [][]byte, validatorFields [][][32]byte) (*types.Transaction, error) { + return _EigenPod.contract.Transact(opts, "verifyWithdrawalCredentials", oracleTimestamp, stateRootProof, validatorIndices, validatorFieldsProofs, validatorFields) +} + +// VerifyWithdrawalCredentials is a paid mutator transaction binding the contract method 0x3f65cf19. +// +// Solidity: function verifyWithdrawalCredentials(uint64 oracleTimestamp, (bytes32,bytes) stateRootProof, uint40[] validatorIndices, bytes[] validatorFieldsProofs, bytes32[][] validatorFields) returns() +func (_EigenPod *EigenPodSession) VerifyWithdrawalCredentials(oracleTimestamp uint64, stateRootProof BeaconChainProofsStateRootProof, validatorIndices []*big.Int, validatorFieldsProofs [][]byte, validatorFields [][][32]byte) (*types.Transaction, error) { + return _EigenPod.Contract.VerifyWithdrawalCredentials(&_EigenPod.TransactOpts, oracleTimestamp, stateRootProof, validatorIndices, validatorFieldsProofs, validatorFields) +} + +// VerifyWithdrawalCredentials is a paid mutator transaction binding the contract method 0x3f65cf19. +// +// Solidity: function verifyWithdrawalCredentials(uint64 oracleTimestamp, (bytes32,bytes) stateRootProof, uint40[] validatorIndices, bytes[] validatorFieldsProofs, bytes32[][] validatorFields) returns() +func (_EigenPod *EigenPodTransactorSession) VerifyWithdrawalCredentials(oracleTimestamp uint64, stateRootProof BeaconChainProofsStateRootProof, validatorIndices []*big.Int, validatorFieldsProofs [][]byte, validatorFields [][][32]byte) (*types.Transaction, error) { + return _EigenPod.Contract.VerifyWithdrawalCredentials(&_EigenPod.TransactOpts, oracleTimestamp, stateRootProof, validatorIndices, validatorFieldsProofs, validatorFields) +} + +// WithdrawBeforeRestaking is a paid mutator transaction binding the contract method 0xbaa7145a. +// +// Solidity: function withdrawBeforeRestaking() returns() +func (_EigenPod *EigenPodTransactor) WithdrawBeforeRestaking(opts *bind.TransactOpts) (*types.Transaction, error) { + return _EigenPod.contract.Transact(opts, "withdrawBeforeRestaking") +} + +// WithdrawBeforeRestaking is a paid mutator transaction binding the contract method 0xbaa7145a. +// +// Solidity: function withdrawBeforeRestaking() returns() +func (_EigenPod *EigenPodSession) WithdrawBeforeRestaking() (*types.Transaction, error) { + return _EigenPod.Contract.WithdrawBeforeRestaking(&_EigenPod.TransactOpts) +} + +// WithdrawBeforeRestaking is a paid mutator transaction binding the contract method 0xbaa7145a. +// +// Solidity: function withdrawBeforeRestaking() returns() +func (_EigenPod *EigenPodTransactorSession) WithdrawBeforeRestaking() (*types.Transaction, error) { + return _EigenPod.Contract.WithdrawBeforeRestaking(&_EigenPod.TransactOpts) +} + +// WithdrawNonBeaconChainETHBalanceWei is a paid mutator transaction binding the contract method 0xe2c83445. +// +// Solidity: function withdrawNonBeaconChainETHBalanceWei(address recipient, uint256 amountToWithdraw) returns() +func (_EigenPod *EigenPodTransactor) WithdrawNonBeaconChainETHBalanceWei(opts *bind.TransactOpts, recipient common.Address, amountToWithdraw *big.Int) (*types.Transaction, error) { + return _EigenPod.contract.Transact(opts, "withdrawNonBeaconChainETHBalanceWei", recipient, amountToWithdraw) +} + +// WithdrawNonBeaconChainETHBalanceWei is a paid mutator transaction binding the contract method 0xe2c83445. +// +// Solidity: function withdrawNonBeaconChainETHBalanceWei(address recipient, uint256 amountToWithdraw) returns() +func (_EigenPod *EigenPodSession) WithdrawNonBeaconChainETHBalanceWei(recipient common.Address, amountToWithdraw *big.Int) (*types.Transaction, error) { + return _EigenPod.Contract.WithdrawNonBeaconChainETHBalanceWei(&_EigenPod.TransactOpts, recipient, amountToWithdraw) +} + +// WithdrawNonBeaconChainETHBalanceWei is a paid mutator transaction binding the contract method 0xe2c83445. +// +// Solidity: function withdrawNonBeaconChainETHBalanceWei(address recipient, uint256 amountToWithdraw) returns() +func (_EigenPod *EigenPodTransactorSession) WithdrawNonBeaconChainETHBalanceWei(recipient common.Address, amountToWithdraw *big.Int) (*types.Transaction, error) { + return _EigenPod.Contract.WithdrawNonBeaconChainETHBalanceWei(&_EigenPod.TransactOpts, recipient, amountToWithdraw) +} + +// WithdrawRestakedBeaconChainETH is a paid mutator transaction binding the contract method 0xc4907442. +// +// Solidity: function withdrawRestakedBeaconChainETH(address recipient, uint256 amountWei) returns() +func (_EigenPod *EigenPodTransactor) WithdrawRestakedBeaconChainETH(opts *bind.TransactOpts, recipient common.Address, amountWei *big.Int) (*types.Transaction, error) { + return _EigenPod.contract.Transact(opts, "withdrawRestakedBeaconChainETH", recipient, amountWei) +} + +// WithdrawRestakedBeaconChainETH is a paid mutator transaction binding the contract method 0xc4907442. +// +// Solidity: function withdrawRestakedBeaconChainETH(address recipient, uint256 amountWei) returns() +func (_EigenPod *EigenPodSession) WithdrawRestakedBeaconChainETH(recipient common.Address, amountWei *big.Int) (*types.Transaction, error) { + return _EigenPod.Contract.WithdrawRestakedBeaconChainETH(&_EigenPod.TransactOpts, recipient, amountWei) +} + +// WithdrawRestakedBeaconChainETH is a paid mutator transaction binding the contract method 0xc4907442. +// +// Solidity: function withdrawRestakedBeaconChainETH(address recipient, uint256 amountWei) returns() +func (_EigenPod *EigenPodTransactorSession) WithdrawRestakedBeaconChainETH(recipient common.Address, amountWei *big.Int) (*types.Transaction, error) { + return _EigenPod.Contract.WithdrawRestakedBeaconChainETH(&_EigenPod.TransactOpts, recipient, amountWei) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_EigenPod *EigenPodTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _EigenPod.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_EigenPod *EigenPodSession) Receive() (*types.Transaction, error) { + return _EigenPod.Contract.Receive(&_EigenPod.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_EigenPod *EigenPodTransactorSession) Receive() (*types.Transaction, error) { + return _EigenPod.Contract.Receive(&_EigenPod.TransactOpts) +} + +// EigenPodEigenPodStakedIterator is returned from FilterEigenPodStaked and is used to iterate over the raw logs and unpacked data for EigenPodStaked events raised by the EigenPod contract. +type EigenPodEigenPodStakedIterator struct { + Event *EigenPodEigenPodStaked // Event containing the contract specifics 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 *EigenPodEigenPodStakedIterator) 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(EigenPodEigenPodStaked) + 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(EigenPodEigenPodStaked) + 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 *EigenPodEigenPodStakedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodEigenPodStakedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodEigenPodStaked represents a EigenPodStaked event raised by the EigenPod contract. +type EigenPodEigenPodStaked struct { + Pubkey []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEigenPodStaked is a free log retrieval operation binding the contract event 0x606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23. +// +// Solidity: event EigenPodStaked(bytes pubkey) +func (_EigenPod *EigenPodFilterer) FilterEigenPodStaked(opts *bind.FilterOpts) (*EigenPodEigenPodStakedIterator, error) { + + logs, sub, err := _EigenPod.contract.FilterLogs(opts, "EigenPodStaked") + if err != nil { + return nil, err + } + return &EigenPodEigenPodStakedIterator{contract: _EigenPod.contract, event: "EigenPodStaked", logs: logs, sub: sub}, nil +} + +// WatchEigenPodStaked is a free log subscription operation binding the contract event 0x606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23. +// +// Solidity: event EigenPodStaked(bytes pubkey) +func (_EigenPod *EigenPodFilterer) WatchEigenPodStaked(opts *bind.WatchOpts, sink chan<- *EigenPodEigenPodStaked) (event.Subscription, error) { + + logs, sub, err := _EigenPod.contract.WatchLogs(opts, "EigenPodStaked") + 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(EigenPodEigenPodStaked) + if err := _EigenPod.contract.UnpackLog(event, "EigenPodStaked", 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 +} + +// ParseEigenPodStaked is a log parse operation binding the contract event 0x606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23. +// +// Solidity: event EigenPodStaked(bytes pubkey) +func (_EigenPod *EigenPodFilterer) ParseEigenPodStaked(log types.Log) (*EigenPodEigenPodStaked, error) { + event := new(EigenPodEigenPodStaked) + if err := _EigenPod.contract.UnpackLog(event, "EigenPodStaked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodFullWithdrawalRedeemedIterator is returned from FilterFullWithdrawalRedeemed and is used to iterate over the raw logs and unpacked data for FullWithdrawalRedeemed events raised by the EigenPod contract. +type EigenPodFullWithdrawalRedeemedIterator struct { + Event *EigenPodFullWithdrawalRedeemed // Event containing the contract specifics 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 *EigenPodFullWithdrawalRedeemedIterator) 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(EigenPodFullWithdrawalRedeemed) + 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(EigenPodFullWithdrawalRedeemed) + 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 *EigenPodFullWithdrawalRedeemedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodFullWithdrawalRedeemedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodFullWithdrawalRedeemed represents a FullWithdrawalRedeemed event raised by the EigenPod contract. +type EigenPodFullWithdrawalRedeemed struct { + ValidatorIndex *big.Int + WithdrawalTimestamp uint64 + Recipient common.Address + WithdrawalAmountGwei uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterFullWithdrawalRedeemed is a free log retrieval operation binding the contract event 0xb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a0963. +// +// Solidity: event FullWithdrawalRedeemed(uint40 validatorIndex, uint64 withdrawalTimestamp, address indexed recipient, uint64 withdrawalAmountGwei) +func (_EigenPod *EigenPodFilterer) FilterFullWithdrawalRedeemed(opts *bind.FilterOpts, recipient []common.Address) (*EigenPodFullWithdrawalRedeemedIterator, error) { + + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _EigenPod.contract.FilterLogs(opts, "FullWithdrawalRedeemed", recipientRule) + if err != nil { + return nil, err + } + return &EigenPodFullWithdrawalRedeemedIterator{contract: _EigenPod.contract, event: "FullWithdrawalRedeemed", logs: logs, sub: sub}, nil +} + +// WatchFullWithdrawalRedeemed is a free log subscription operation binding the contract event 0xb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a0963. +// +// Solidity: event FullWithdrawalRedeemed(uint40 validatorIndex, uint64 withdrawalTimestamp, address indexed recipient, uint64 withdrawalAmountGwei) +func (_EigenPod *EigenPodFilterer) WatchFullWithdrawalRedeemed(opts *bind.WatchOpts, sink chan<- *EigenPodFullWithdrawalRedeemed, recipient []common.Address) (event.Subscription, error) { + + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _EigenPod.contract.WatchLogs(opts, "FullWithdrawalRedeemed", recipientRule) + 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(EigenPodFullWithdrawalRedeemed) + if err := _EigenPod.contract.UnpackLog(event, "FullWithdrawalRedeemed", 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 +} + +// ParseFullWithdrawalRedeemed is a log parse operation binding the contract event 0xb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a0963. +// +// Solidity: event FullWithdrawalRedeemed(uint40 validatorIndex, uint64 withdrawalTimestamp, address indexed recipient, uint64 withdrawalAmountGwei) +func (_EigenPod *EigenPodFilterer) ParseFullWithdrawalRedeemed(log types.Log) (*EigenPodFullWithdrawalRedeemed, error) { + event := new(EigenPodFullWithdrawalRedeemed) + if err := _EigenPod.contract.UnpackLog(event, "FullWithdrawalRedeemed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the EigenPod contract. +type EigenPodInitializedIterator struct { + Event *EigenPodInitialized // Event containing the contract specifics 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 *EigenPodInitializedIterator) 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(EigenPodInitialized) + 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(EigenPodInitialized) + 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 *EigenPodInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodInitialized represents a Initialized event raised by the EigenPod contract. +type EigenPodInitialized 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 (_EigenPod *EigenPodFilterer) FilterInitialized(opts *bind.FilterOpts) (*EigenPodInitializedIterator, error) { + + logs, sub, err := _EigenPod.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &EigenPodInitializedIterator{contract: _EigenPod.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 (_EigenPod *EigenPodFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *EigenPodInitialized) (event.Subscription, error) { + + logs, sub, err := _EigenPod.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(EigenPodInitialized) + if err := _EigenPod.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 (_EigenPod *EigenPodFilterer) ParseInitialized(log types.Log) (*EigenPodInitialized, error) { + event := new(EigenPodInitialized) + if err := _EigenPod.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodNonBeaconChainETHReceivedIterator is returned from FilterNonBeaconChainETHReceived and is used to iterate over the raw logs and unpacked data for NonBeaconChainETHReceived events raised by the EigenPod contract. +type EigenPodNonBeaconChainETHReceivedIterator struct { + Event *EigenPodNonBeaconChainETHReceived // Event containing the contract specifics 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 *EigenPodNonBeaconChainETHReceivedIterator) 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(EigenPodNonBeaconChainETHReceived) + 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(EigenPodNonBeaconChainETHReceived) + 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 *EigenPodNonBeaconChainETHReceivedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodNonBeaconChainETHReceivedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodNonBeaconChainETHReceived represents a NonBeaconChainETHReceived event raised by the EigenPod contract. +type EigenPodNonBeaconChainETHReceived struct { + AmountReceived *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNonBeaconChainETHReceived is a free log retrieval operation binding the contract event 0x6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf49. +// +// Solidity: event NonBeaconChainETHReceived(uint256 amountReceived) +func (_EigenPod *EigenPodFilterer) FilterNonBeaconChainETHReceived(opts *bind.FilterOpts) (*EigenPodNonBeaconChainETHReceivedIterator, error) { + + logs, sub, err := _EigenPod.contract.FilterLogs(opts, "NonBeaconChainETHReceived") + if err != nil { + return nil, err + } + return &EigenPodNonBeaconChainETHReceivedIterator{contract: _EigenPod.contract, event: "NonBeaconChainETHReceived", logs: logs, sub: sub}, nil +} + +// WatchNonBeaconChainETHReceived is a free log subscription operation binding the contract event 0x6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf49. +// +// Solidity: event NonBeaconChainETHReceived(uint256 amountReceived) +func (_EigenPod *EigenPodFilterer) WatchNonBeaconChainETHReceived(opts *bind.WatchOpts, sink chan<- *EigenPodNonBeaconChainETHReceived) (event.Subscription, error) { + + logs, sub, err := _EigenPod.contract.WatchLogs(opts, "NonBeaconChainETHReceived") + 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(EigenPodNonBeaconChainETHReceived) + if err := _EigenPod.contract.UnpackLog(event, "NonBeaconChainETHReceived", 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 +} + +// ParseNonBeaconChainETHReceived is a log parse operation binding the contract event 0x6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf49. +// +// Solidity: event NonBeaconChainETHReceived(uint256 amountReceived) +func (_EigenPod *EigenPodFilterer) ParseNonBeaconChainETHReceived(log types.Log) (*EigenPodNonBeaconChainETHReceived, error) { + event := new(EigenPodNonBeaconChainETHReceived) + if err := _EigenPod.contract.UnpackLog(event, "NonBeaconChainETHReceived", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodNonBeaconChainETHWithdrawnIterator is returned from FilterNonBeaconChainETHWithdrawn and is used to iterate over the raw logs and unpacked data for NonBeaconChainETHWithdrawn events raised by the EigenPod contract. +type EigenPodNonBeaconChainETHWithdrawnIterator struct { + Event *EigenPodNonBeaconChainETHWithdrawn // Event containing the contract specifics 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 *EigenPodNonBeaconChainETHWithdrawnIterator) 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(EigenPodNonBeaconChainETHWithdrawn) + 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(EigenPodNonBeaconChainETHWithdrawn) + 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 *EigenPodNonBeaconChainETHWithdrawnIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodNonBeaconChainETHWithdrawnIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodNonBeaconChainETHWithdrawn represents a NonBeaconChainETHWithdrawn event raised by the EigenPod contract. +type EigenPodNonBeaconChainETHWithdrawn struct { + Recipient common.Address + AmountWithdrawn *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNonBeaconChainETHWithdrawn is a free log retrieval operation binding the contract event 0x30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f53096. +// +// Solidity: event NonBeaconChainETHWithdrawn(address indexed recipient, uint256 amountWithdrawn) +func (_EigenPod *EigenPodFilterer) FilterNonBeaconChainETHWithdrawn(opts *bind.FilterOpts, recipient []common.Address) (*EigenPodNonBeaconChainETHWithdrawnIterator, error) { + + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _EigenPod.contract.FilterLogs(opts, "NonBeaconChainETHWithdrawn", recipientRule) + if err != nil { + return nil, err + } + return &EigenPodNonBeaconChainETHWithdrawnIterator{contract: _EigenPod.contract, event: "NonBeaconChainETHWithdrawn", logs: logs, sub: sub}, nil +} + +// WatchNonBeaconChainETHWithdrawn is a free log subscription operation binding the contract event 0x30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f53096. +// +// Solidity: event NonBeaconChainETHWithdrawn(address indexed recipient, uint256 amountWithdrawn) +func (_EigenPod *EigenPodFilterer) WatchNonBeaconChainETHWithdrawn(opts *bind.WatchOpts, sink chan<- *EigenPodNonBeaconChainETHWithdrawn, recipient []common.Address) (event.Subscription, error) { + + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _EigenPod.contract.WatchLogs(opts, "NonBeaconChainETHWithdrawn", recipientRule) + 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(EigenPodNonBeaconChainETHWithdrawn) + if err := _EigenPod.contract.UnpackLog(event, "NonBeaconChainETHWithdrawn", 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 +} + +// ParseNonBeaconChainETHWithdrawn is a log parse operation binding the contract event 0x30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f53096. +// +// Solidity: event NonBeaconChainETHWithdrawn(address indexed recipient, uint256 amountWithdrawn) +func (_EigenPod *EigenPodFilterer) ParseNonBeaconChainETHWithdrawn(log types.Log) (*EigenPodNonBeaconChainETHWithdrawn, error) { + event := new(EigenPodNonBeaconChainETHWithdrawn) + if err := _EigenPod.contract.UnpackLog(event, "NonBeaconChainETHWithdrawn", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodPartialWithdrawalRedeemedIterator is returned from FilterPartialWithdrawalRedeemed and is used to iterate over the raw logs and unpacked data for PartialWithdrawalRedeemed events raised by the EigenPod contract. +type EigenPodPartialWithdrawalRedeemedIterator struct { + Event *EigenPodPartialWithdrawalRedeemed // Event containing the contract specifics 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 *EigenPodPartialWithdrawalRedeemedIterator) 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(EigenPodPartialWithdrawalRedeemed) + 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(EigenPodPartialWithdrawalRedeemed) + 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 *EigenPodPartialWithdrawalRedeemedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodPartialWithdrawalRedeemedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodPartialWithdrawalRedeemed represents a PartialWithdrawalRedeemed event raised by the EigenPod contract. +type EigenPodPartialWithdrawalRedeemed struct { + ValidatorIndex *big.Int + WithdrawalTimestamp uint64 + Recipient common.Address + PartialWithdrawalAmountGwei uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPartialWithdrawalRedeemed is a free log retrieval operation binding the contract event 0x8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e. +// +// Solidity: event PartialWithdrawalRedeemed(uint40 validatorIndex, uint64 withdrawalTimestamp, address indexed recipient, uint64 partialWithdrawalAmountGwei) +func (_EigenPod *EigenPodFilterer) FilterPartialWithdrawalRedeemed(opts *bind.FilterOpts, recipient []common.Address) (*EigenPodPartialWithdrawalRedeemedIterator, error) { + + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _EigenPod.contract.FilterLogs(opts, "PartialWithdrawalRedeemed", recipientRule) + if err != nil { + return nil, err + } + return &EigenPodPartialWithdrawalRedeemedIterator{contract: _EigenPod.contract, event: "PartialWithdrawalRedeemed", logs: logs, sub: sub}, nil +} + +// WatchPartialWithdrawalRedeemed is a free log subscription operation binding the contract event 0x8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e. +// +// Solidity: event PartialWithdrawalRedeemed(uint40 validatorIndex, uint64 withdrawalTimestamp, address indexed recipient, uint64 partialWithdrawalAmountGwei) +func (_EigenPod *EigenPodFilterer) WatchPartialWithdrawalRedeemed(opts *bind.WatchOpts, sink chan<- *EigenPodPartialWithdrawalRedeemed, recipient []common.Address) (event.Subscription, error) { + + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _EigenPod.contract.WatchLogs(opts, "PartialWithdrawalRedeemed", recipientRule) + 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(EigenPodPartialWithdrawalRedeemed) + if err := _EigenPod.contract.UnpackLog(event, "PartialWithdrawalRedeemed", 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 +} + +// ParsePartialWithdrawalRedeemed is a log parse operation binding the contract event 0x8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e. +// +// Solidity: event PartialWithdrawalRedeemed(uint40 validatorIndex, uint64 withdrawalTimestamp, address indexed recipient, uint64 partialWithdrawalAmountGwei) +func (_EigenPod *EigenPodFilterer) ParsePartialWithdrawalRedeemed(log types.Log) (*EigenPodPartialWithdrawalRedeemed, error) { + event := new(EigenPodPartialWithdrawalRedeemed) + if err := _EigenPod.contract.UnpackLog(event, "PartialWithdrawalRedeemed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodRestakedBeaconChainETHWithdrawnIterator is returned from FilterRestakedBeaconChainETHWithdrawn and is used to iterate over the raw logs and unpacked data for RestakedBeaconChainETHWithdrawn events raised by the EigenPod contract. +type EigenPodRestakedBeaconChainETHWithdrawnIterator struct { + Event *EigenPodRestakedBeaconChainETHWithdrawn // Event containing the contract specifics 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 *EigenPodRestakedBeaconChainETHWithdrawnIterator) 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(EigenPodRestakedBeaconChainETHWithdrawn) + 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(EigenPodRestakedBeaconChainETHWithdrawn) + 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 *EigenPodRestakedBeaconChainETHWithdrawnIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodRestakedBeaconChainETHWithdrawnIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodRestakedBeaconChainETHWithdrawn represents a RestakedBeaconChainETHWithdrawn event raised by the EigenPod contract. +type EigenPodRestakedBeaconChainETHWithdrawn struct { + Recipient common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRestakedBeaconChainETHWithdrawn is a free log retrieval operation binding the contract event 0x8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e. +// +// Solidity: event RestakedBeaconChainETHWithdrawn(address indexed recipient, uint256 amount) +func (_EigenPod *EigenPodFilterer) FilterRestakedBeaconChainETHWithdrawn(opts *bind.FilterOpts, recipient []common.Address) (*EigenPodRestakedBeaconChainETHWithdrawnIterator, error) { + + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _EigenPod.contract.FilterLogs(opts, "RestakedBeaconChainETHWithdrawn", recipientRule) + if err != nil { + return nil, err + } + return &EigenPodRestakedBeaconChainETHWithdrawnIterator{contract: _EigenPod.contract, event: "RestakedBeaconChainETHWithdrawn", logs: logs, sub: sub}, nil +} + +// WatchRestakedBeaconChainETHWithdrawn is a free log subscription operation binding the contract event 0x8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e. +// +// Solidity: event RestakedBeaconChainETHWithdrawn(address indexed recipient, uint256 amount) +func (_EigenPod *EigenPodFilterer) WatchRestakedBeaconChainETHWithdrawn(opts *bind.WatchOpts, sink chan<- *EigenPodRestakedBeaconChainETHWithdrawn, recipient []common.Address) (event.Subscription, error) { + + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _EigenPod.contract.WatchLogs(opts, "RestakedBeaconChainETHWithdrawn", recipientRule) + 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(EigenPodRestakedBeaconChainETHWithdrawn) + if err := _EigenPod.contract.UnpackLog(event, "RestakedBeaconChainETHWithdrawn", 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 +} + +// ParseRestakedBeaconChainETHWithdrawn is a log parse operation binding the contract event 0x8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e. +// +// Solidity: event RestakedBeaconChainETHWithdrawn(address indexed recipient, uint256 amount) +func (_EigenPod *EigenPodFilterer) ParseRestakedBeaconChainETHWithdrawn(log types.Log) (*EigenPodRestakedBeaconChainETHWithdrawn, error) { + event := new(EigenPodRestakedBeaconChainETHWithdrawn) + if err := _EigenPod.contract.UnpackLog(event, "RestakedBeaconChainETHWithdrawn", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodRestakingActivatedIterator is returned from FilterRestakingActivated and is used to iterate over the raw logs and unpacked data for RestakingActivated events raised by the EigenPod contract. +type EigenPodRestakingActivatedIterator struct { + Event *EigenPodRestakingActivated // Event containing the contract specifics 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 *EigenPodRestakingActivatedIterator) 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(EigenPodRestakingActivated) + 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(EigenPodRestakingActivated) + 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 *EigenPodRestakingActivatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodRestakingActivatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodRestakingActivated represents a RestakingActivated event raised by the EigenPod contract. +type EigenPodRestakingActivated struct { + PodOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRestakingActivated is a free log retrieval operation binding the contract event 0xca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd. +// +// Solidity: event RestakingActivated(address indexed podOwner) +func (_EigenPod *EigenPodFilterer) FilterRestakingActivated(opts *bind.FilterOpts, podOwner []common.Address) (*EigenPodRestakingActivatedIterator, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _EigenPod.contract.FilterLogs(opts, "RestakingActivated", podOwnerRule) + if err != nil { + return nil, err + } + return &EigenPodRestakingActivatedIterator{contract: _EigenPod.contract, event: "RestakingActivated", logs: logs, sub: sub}, nil +} + +// WatchRestakingActivated is a free log subscription operation binding the contract event 0xca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd. +// +// Solidity: event RestakingActivated(address indexed podOwner) +func (_EigenPod *EigenPodFilterer) WatchRestakingActivated(opts *bind.WatchOpts, sink chan<- *EigenPodRestakingActivated, podOwner []common.Address) (event.Subscription, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _EigenPod.contract.WatchLogs(opts, "RestakingActivated", podOwnerRule) + 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(EigenPodRestakingActivated) + if err := _EigenPod.contract.UnpackLog(event, "RestakingActivated", 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 +} + +// ParseRestakingActivated is a log parse operation binding the contract event 0xca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd. +// +// Solidity: event RestakingActivated(address indexed podOwner) +func (_EigenPod *EigenPodFilterer) ParseRestakingActivated(log types.Log) (*EigenPodRestakingActivated, error) { + event := new(EigenPodRestakingActivated) + if err := _EigenPod.contract.UnpackLog(event, "RestakingActivated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodValidatorBalanceUpdatedIterator is returned from FilterValidatorBalanceUpdated and is used to iterate over the raw logs and unpacked data for ValidatorBalanceUpdated events raised by the EigenPod contract. +type EigenPodValidatorBalanceUpdatedIterator struct { + Event *EigenPodValidatorBalanceUpdated // Event containing the contract specifics 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 *EigenPodValidatorBalanceUpdatedIterator) 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(EigenPodValidatorBalanceUpdated) + 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(EigenPodValidatorBalanceUpdated) + 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 *EigenPodValidatorBalanceUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodValidatorBalanceUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodValidatorBalanceUpdated represents a ValidatorBalanceUpdated event raised by the EigenPod contract. +type EigenPodValidatorBalanceUpdated struct { + ValidatorIndex *big.Int + BalanceTimestamp uint64 + NewValidatorBalanceGwei uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorBalanceUpdated is a free log retrieval operation binding the contract event 0x0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df. +// +// Solidity: event ValidatorBalanceUpdated(uint40 validatorIndex, uint64 balanceTimestamp, uint64 newValidatorBalanceGwei) +func (_EigenPod *EigenPodFilterer) FilterValidatorBalanceUpdated(opts *bind.FilterOpts) (*EigenPodValidatorBalanceUpdatedIterator, error) { + + logs, sub, err := _EigenPod.contract.FilterLogs(opts, "ValidatorBalanceUpdated") + if err != nil { + return nil, err + } + return &EigenPodValidatorBalanceUpdatedIterator{contract: _EigenPod.contract, event: "ValidatorBalanceUpdated", logs: logs, sub: sub}, nil +} + +// WatchValidatorBalanceUpdated is a free log subscription operation binding the contract event 0x0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df. +// +// Solidity: event ValidatorBalanceUpdated(uint40 validatorIndex, uint64 balanceTimestamp, uint64 newValidatorBalanceGwei) +func (_EigenPod *EigenPodFilterer) WatchValidatorBalanceUpdated(opts *bind.WatchOpts, sink chan<- *EigenPodValidatorBalanceUpdated) (event.Subscription, error) { + + logs, sub, err := _EigenPod.contract.WatchLogs(opts, "ValidatorBalanceUpdated") + 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(EigenPodValidatorBalanceUpdated) + if err := _EigenPod.contract.UnpackLog(event, "ValidatorBalanceUpdated", 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 +} + +// ParseValidatorBalanceUpdated is a log parse operation binding the contract event 0x0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df. +// +// Solidity: event ValidatorBalanceUpdated(uint40 validatorIndex, uint64 balanceTimestamp, uint64 newValidatorBalanceGwei) +func (_EigenPod *EigenPodFilterer) ParseValidatorBalanceUpdated(log types.Log) (*EigenPodValidatorBalanceUpdated, error) { + event := new(EigenPodValidatorBalanceUpdated) + if err := _EigenPod.contract.UnpackLog(event, "ValidatorBalanceUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodValidatorRestakedIterator is returned from FilterValidatorRestaked and is used to iterate over the raw logs and unpacked data for ValidatorRestaked events raised by the EigenPod contract. +type EigenPodValidatorRestakedIterator struct { + Event *EigenPodValidatorRestaked // Event containing the contract specifics 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 *EigenPodValidatorRestakedIterator) 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(EigenPodValidatorRestaked) + 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(EigenPodValidatorRestaked) + 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 *EigenPodValidatorRestakedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodValidatorRestakedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodValidatorRestaked represents a ValidatorRestaked event raised by the EigenPod contract. +type EigenPodValidatorRestaked struct { + ValidatorIndex *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorRestaked is a free log retrieval operation binding the contract event 0x2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449. +// +// Solidity: event ValidatorRestaked(uint40 validatorIndex) +func (_EigenPod *EigenPodFilterer) FilterValidatorRestaked(opts *bind.FilterOpts) (*EigenPodValidatorRestakedIterator, error) { + + logs, sub, err := _EigenPod.contract.FilterLogs(opts, "ValidatorRestaked") + if err != nil { + return nil, err + } + return &EigenPodValidatorRestakedIterator{contract: _EigenPod.contract, event: "ValidatorRestaked", logs: logs, sub: sub}, nil +} + +// WatchValidatorRestaked is a free log subscription operation binding the contract event 0x2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449. +// +// Solidity: event ValidatorRestaked(uint40 validatorIndex) +func (_EigenPod *EigenPodFilterer) WatchValidatorRestaked(opts *bind.WatchOpts, sink chan<- *EigenPodValidatorRestaked) (event.Subscription, error) { + + logs, sub, err := _EigenPod.contract.WatchLogs(opts, "ValidatorRestaked") + 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(EigenPodValidatorRestaked) + if err := _EigenPod.contract.UnpackLog(event, "ValidatorRestaked", 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 +} + +// ParseValidatorRestaked is a log parse operation binding the contract event 0x2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449. +// +// Solidity: event ValidatorRestaked(uint40 validatorIndex) +func (_EigenPod *EigenPodFilterer) ParseValidatorRestaked(log types.Log) (*EigenPodValidatorRestaked, error) { + event := new(EigenPodValidatorRestaked) + if err := _EigenPod.contract.UnpackLog(event, "ValidatorRestaked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/EigenPod/tmp.abi b/pkg/bindings/EigenPod/tmp.abi new file mode 100644 index 000000000..6a57724a0 --- /dev/null +++ b/pkg/bindings/EigenPod/tmp.abi @@ -0,0 +1,825 @@ +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_ethPOS", + "type": "address", + "internalType": "contract IETHPOSDeposit" + }, + { + "name": "_delayedWithdrawalRouter", + "type": "address", + "internalType": "contract IDelayedWithdrawalRouter" + }, + { + "name": "_eigenPodManager", + "type": "address", + "internalType": "contract IEigenPodManager" + }, + { + "name": "_MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR", + "type": "uint64", + "internalType": "uint64" + }, + { + "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": "MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "activateRestaking", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "delayedWithdrawalRouter", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IDelayedWithdrawalRouter" + } + ], + "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": "hasRestaked", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_podOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "mostRecentWithdrawalTimestamp", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "nonBeaconChainETHBalanceWei", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "podOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "provenWithdrawal", + "inputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "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": "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": "sumOfPartialWithdrawalsClaimedGwei", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "validatorPubkeyHashToInfo", + "inputs": [ + { + "name": "validatorPubkeyHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IEigenPod.ValidatorInfo", + "components": [ + { + "name": "validatorIndex", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "restakedBalanceGwei", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "mostRecentBalanceUpdateTimestamp", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "status", + "type": "uint8", + "internalType": "enum IEigenPod.VALIDATOR_STATUS" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "validatorPubkeyToInfo", + "inputs": [ + { + "name": "validatorPubkey", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IEigenPod.ValidatorInfo", + "components": [ + { + "name": "validatorIndex", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "restakedBalanceGwei", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "mostRecentBalanceUpdateTimestamp", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "status", + "type": "uint8", + "internalType": "enum IEigenPod.VALIDATOR_STATUS" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "validatorStatus", + "inputs": [ + { + "name": "validatorPubkey", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "enum IEigenPod.VALIDATOR_STATUS" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "validatorStatus", + "inputs": [ + { + "name": "pubkeyHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "enum IEigenPod.VALIDATOR_STATUS" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "verifyAndProcessWithdrawals", + "inputs": [ + { + "name": "oracleTimestamp", + "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": "withdrawalProofs", + "type": "tuple[]", + "internalType": "struct BeaconChainProofs.WithdrawalProof[]", + "components": [ + { + "name": "withdrawalProof", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "slotProof", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "executionPayloadProof", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "timestampProof", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "historicalSummaryBlockRootProof", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "blockRootIndex", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "historicalSummaryIndex", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "withdrawalIndex", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "blockRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "slotRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "timestampRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "executionPayloadRoot", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validatorFieldsProofs", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "validatorFields", + "type": "bytes32[][]", + "internalType": "bytes32[][]" + }, + { + "name": "withdrawalFields", + "type": "bytes32[][]", + "internalType": "bytes32[][]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "verifyBalanceUpdates", + "inputs": [ + { + "name": "oracleTimestamp", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "validatorIndices", + "type": "uint40[]", + "internalType": "uint40[]" + }, + { + "name": "stateRootProof", + "type": "tuple", + "internalType": "struct BeaconChainProofs.StateRootProof", + "components": [ + { + "name": "beaconStateRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "proof", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validatorFieldsProofs", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "validatorFields", + "type": "bytes32[][]", + "internalType": "bytes32[][]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "verifyWithdrawalCredentials", + "inputs": [ + { + "name": "oracleTimestamp", + "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": "withdrawBeforeRestaking", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdrawNonBeaconChainETHBalanceWei", + "inputs": [ + { + "name": "recipient", + "type": "address", + "internalType": "address" + }, + { + "name": "amountToWithdraw", + "type": "uint256", + "internalType": "uint256" + } + ], + "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": "EigenPodStaked", + "inputs": [ + { + "name": "pubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "FullWithdrawalRedeemed", + "inputs": [ + { + "name": "validatorIndex", + "type": "uint40", + "indexed": false, + "internalType": "uint40" + }, + { + "name": "withdrawalTimestamp", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + }, + { + "name": "recipient", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "withdrawalAmountGwei", + "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": "NonBeaconChainETHReceived", + "inputs": [ + { + "name": "amountReceived", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "NonBeaconChainETHWithdrawn", + "inputs": [ + { + "name": "recipient", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amountWithdrawn", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PartialWithdrawalRedeemed", + "inputs": [ + { + "name": "validatorIndex", + "type": "uint40", + "indexed": false, + "internalType": "uint40" + }, + { + "name": "withdrawalTimestamp", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + }, + { + "name": "recipient", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "partialWithdrawalAmountGwei", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } + ], + "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": "RestakingActivated", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "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": "ValidatorRestaked", + "inputs": [ + { + "name": "validatorIndex", + "type": "uint40", + "indexed": false, + "internalType": "uint40" + } + ], + "anonymous": false + } +] diff --git a/pkg/bindings/EigenPod/tmp.bin b/pkg/bindings/EigenPod/tmp.bin new file mode 100644 index 000000000..00ba63f3f --- /dev/null +++ b/pkg/bindings/EigenPod/tmp.bin @@ -0,0 +1 @@ +0x6101206040523480156200001257600080fd5b5060405162005f0338038062005f0383398101604081905262000035916200016f565b6001600160a01b0380861660805284811660a052831660c0526001600160401b0380831660e0528116610100526200006c62000077565b5050505050620001e7565b600054610100900460ff1615620000e45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000137576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014f57600080fd5b50565b80516001600160401b03811681146200016a57600080fd5b919050565b600080600080600060a086880312156200018857600080fd5b8551620001958162000139565b6020870151909550620001a88162000139565b6040870151909450620001bb8162000139565b9250620001cb6060870162000152565b9150620001db6080870162000152565b90509295509295909350565b60805160a05160c05160e05161010051615c28620002db600039600081816105b5015281816134c8015261357f015260008181610275015281816124290152818161245d01528181612a8901528181612ab60152818161425b015261429601526000818161036d01528181610614015281816107a701528181610a4601528181610b9b01528181610d2301528181610ede015281816110bf015281816111f3015281816113fd0152818161184a015281816119f201528181611b3101528181611cfe01528181611de80152612f2101526000818161024101526131930152600081816104520152610dee0152615c286000f3fe6080604052600436106101855760003560e01c806374cdd798116100d1578063c49074421161008a578063e251ef5211610064578063e251ef5214610563578063e2c8344514610583578063f2882461146105a3578063fe80b087146105d757600080fd5b8063c490744214610503578063c4d66de814610523578063dda3346c1461054357600080fd5b806374cdd7981461044057806387e0d289146104745780639b4e46341461049b578063a50600f4146104ae578063b522538a146104ce578063baa7145a146104ee57600080fd5b806334bea20a1161013e57806358eaee791161011857806358eaee791461038f5780635d3f65b6146103bc5780636fcd0e53146103dc5780637439841f1461040957600080fd5b806334bea20a146103005780633f65cf191461033b5780634665bcda1461035b57600080fd5b80630b18ff66146101db5780630cd4649e146102185780631a5057be1461022f5780631d905d5c146102635780633106ab53146102af5780633474aa16146102e057600080fd5b366101d657346037600082825461019c9190614b56565b90915550506040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101e757600080fd5b506033546101fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022457600080fd5b5061022d6105fb565b005b34801561023b57600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561026f57600080fd5b506102977f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160401b03909116815260200161020f565b3480156102bb57600080fd5b506034546102d090600160401b900460ff1681565b604051901515815260200161020f565b3480156102ec57600080fd5b50603454610297906001600160401b031681565b34801561030c57600080fd5b506102d061031b366004614b93565b603560209081526000928352604080842090915290825290205460ff1681565b34801561034757600080fd5b5061022d610356366004614c26565b610764565b34801561036757600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561039b57600080fd5b506103af6103aa366004614d37565b610c06565b60405161020f9190614db0565b3480156103c857600080fd5b50603854610297906001600160401b031681565b3480156103e857600080fd5b506103fc6103f7366004614dbe565b610c6b565b60405161020f9190614dd7565b34801561041557600080fd5b506103af610424366004614dbe565b600090815260366020526040902054600160c01b900460ff1690565b34801561044c57600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561048057600080fd5b5060335461029790600160a01b90046001600160401b031681565b61022d6104a9366004614e1f565b610d18565b3480156104ba57600080fd5b5061022d6104c9366004614e92565b610ec5565b3480156104da57600080fd5b506103fc6104e9366004614d37565b611294565b3480156104fa57600080fd5b5061022d611387565b34801561050f57600080fd5b5061022d61051e366004614f3c565b6113f2565b34801561052f57600080fd5b5061022d61053e366004614f68565b61162f565b34801561054f57600080fd5b5061022d61055e366004615082565b611807565b34801561056f57600080fd5b5061022d61057e366004615153565b6119da565b34801561058f57600080fd5b5061022d61059e366004614f3c565b611da5565b3480156105af57600080fd5b506102977f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e357600080fd5b506105ed60375481565b60405190815260200161020f565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610687919061524e565b156106ad5760405162461bcd60e51b81526004016106a490615270565b60405180910390fd5b6033546001600160a01b031633146106d75760405162461bcd60e51b81526004016106a4906152cd565b603454600160401b900460ff16156107015760405162461bcd60e51b81526004016106a490615315565b6034805460ff60401b1916600160401b179055603354610729906001600160a01b0316611f88565b6033546040516001600160a01b03909116907fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a250565b6033546001600160a01b0316331461078e5760405162461bcd60e51b81526004016106a4906152cd565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a919061524e565b156108375760405162461bcd60e51b81526004016106a490615270565b60335489906001600160401b03600160a01b9091048116908216101561086f5760405162461bcd60e51b81526004016106a490615364565b603454600160401b900460ff166108e75760405162461bcd60e51b815260206004820152603660248201527f456967656e506f642e686173456e61626c656452657374616b696e673a2072656044820152751cdd185ada5b99c81a5cc81b9bdd08195b98589b195960521b60648201526084016106a4565b86851480156108f557508483145b6109855760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106a4565b4261099b613f486001600160401b038d16614b56565b1015610a245760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038b166004820152610acd907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa158015610a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab991906153f7565b8a35610ac860208d018d615410565b611fbc565b6000805b88811015610b7157610b538c8c358c8c85818110610af157610af1615456565b9050602002016020810190610b06919061546c565b8b8b86818110610b1857610b18615456565b9050602002810190610b2a9190615410565b8b8b88818110610b3c57610b3c615456565b9050602002810190610b4e9190615493565b61214a565b610b5d9083614b56565b915080610b69816154dc565b915050610ad1565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c4090604401600060405180830381600087803b158015610be157600080fd5b505af1158015610bf5573d6000803e3d6000fd5b505050505050505050505050505050565b600080610c4884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260492505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b610c936040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610cfe57610cfe614d78565b6002811115610d0f57610d0f614d78565b90525092915050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d605760405162461bcd60e51b81526004016106a4906154f7565b346801bc16d674ec80000014610dec5760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106a4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787610e2f6126fe565b8888886040518863ffffffff1660e01b8152600401610e53969594939291906155c9565b6000604051808303818588803b158015610e6c57600080fd5b505af1158015610e80573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051610eb6929190615618565b60405180910390a15050505050565b604051635ac86ab760e01b8152600360048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f51919061524e565b15610f6e5760405162461bcd60e51b81526004016106a490615270565b8684148015610f7c57508382145b6110055760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207660448201527f616c696461746f72496e646963657320616e642070726f6f6673206d7573742060648201526d0c4ca40e6c2daca40d8cadccee8d60931b608482015260a4016106a4565b4261101b613f486001600160401b038c16614b56565b101561109d5760405162461bcd60e51b815260206004820152604560248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207360448201527f70656369666965642074696d657374616d7020697320746f6f2066617220696e606482015264081c185cdd60da1b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a166004820152611141907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa15801561110e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113291906153f7565b8735610ac860208a018a615410565b6000805b888110156111e5576111c78b8b8b8481811061116357611163615456565b9050602002016020810190611178919061546c565b8a358a8a8681811061118c5761118c615456565b905060200281019061119e9190615410565b8a8a888181106111b0576111b0615456565b90506020028101906111c29190615493565b612743565b6111d1908361562c565b9150806111dd816154dc565b915050611145565b506033546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163c2c51c40911661122a633b9aca008561566d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561127057600080fd5b505af1158015611284573d6000803e3d6000fd5b5050505050505050505050505050565b6112bc6040805160808101825260008082526020820181905291810182905290606082015290565b603660006112ff85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260492505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561136c5761136c614d78565b600281111561137d5761137d614d78565b9052509392505050565b6033546001600160a01b031633146113b15760405162461bcd60e51b81526004016106a4906152cd565b603454600160401b900460ff16156113db5760405162461bcd60e51b81526004016106a490615315565b6033546113f0906001600160a01b0316611f88565b565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461143a5760405162461bcd60e51b81526004016106a4906154f7565b611448633b9aca0082615708565b156114d25760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106a4565b60006114e2633b9aca008361571c565b6034549091506001600160401b03908116908216111561159b5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106a4565b603480548291906000906115b99084906001600160401b0316615730565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161161891815260200190565b60405180910390a261162a8383612c21565b505050565b600054610100900460ff161580801561164f5750600054600160ff909116105b806116695750303b158015611669575060005460ff166001145b6116cc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a4565b6000805460ff1916600117905580156116ef576000805461ff0019166101001790555b6001600160a01b0382166117625760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106a4565b603380546001600160a01b0384166001600160a01b031990911681179091556034805460ff60401b1916600160401b1790556040517fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a28015611803576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b031633146118315760405162461bcd60e51b81526004016106a4906152cd565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bd919061524e565b156118da5760405162461bcd60e51b81526004016106a490615270565b82518451146119655760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106a4565b60005b84518110156119d3576119c18385838151811061198757611987615456565b60200260200101518784815181106119a1576119a1615456565b60200260200101516001600160a01b0316612c2b9092919063ffffffff16565b806119cb816154dc565b915050611968565b5050505050565b604051635ac86ab760e01b81526004808201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a65919061524e565b15611a825760405162461bcd60e51b81526004016106a490615270565b8386148015611a9057508588145b8015611a9b57508782145b611b0f576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e766572696679416e6450726f636573735769746864726160448201527f77616c733a20696e70757473206d7573742062652073616d65206c656e67746860648201526084016106a4565b60405163d1c64cc960e01b81526001600160401b038c166004820152611bb3907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa158015611b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba491906153f7565b8b35610ac860208e018e615410565b604080518082019091526000808252602082015260005b83811015611cb3576000611c6e8d358d8d85818110611beb57611beb615456565b9050602002810190611bfd9190615758565b8c8c86818110611c0f57611c0f615456565b9050602002810190611c219190615410565b8c8c88818110611c3357611c33615456565b9050602002810190611c459190615493565b8c8c8a818110611c5757611c57615456565b9050602002810190611c699190615493565b612c7d565b80518451919250908490611c83908390614b56565b9052506020808201519084018051611c9c90839061562c565b905250819050611cab816154dc565b915050611bca565b50805115611ce2576033548151611ce2916001600160a01b031690611cdd90633b9aca0090615779565b613169565b602081015115611d975760335460208201516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263c2c51c4092911690611d3890633b9aca009061566d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611d7e57600080fd5b505af1158015611d92573d6000803e3d6000fd5b505050505b505050505050505050505050565b6033546001600160a01b03163314611dcf5760405162461bcd60e51b81526004016106a4906152cd565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5b919061524e565b15611e785760405162461bcd60e51b81526004016106a490615270565b603754821115611f295760405162461bcd60e51b815260206004820152606a60248201527f456967656e506f642e77697468647261776e6f6e426561636f6e436861696e4560448201527f544842616c616e63655765693a20616d6f756e74546f5769746864726177206960648201527f732067726561746572207468616e206e6f6e426561636f6e436861696e45544860848201526942616c616e636557656960b01b60a482015260c4016106a4565b8160376000828254611f3b9190615798565b90915550506040518281526001600160a01b038416907f30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f530969060200160405180910390a261162a8383613169565b6033805467ffffffffffffffff60a01b19164263ffffffff16600160a01b021790556000603755611fb98147613169565b50565b611fc860036020615779565b81146120585760405162461bcd60e51b815260206004820152605360248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a2050726f6f6620686064820152720c2e640d2dcc6dee4e4cac6e840d8cadccee8d606b1b608482015260a4016106a4565b61209d82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250879150600390506131f7565b6121445760405162461bcd60e51b815260206004820152606660248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a20496e76616c696460648201527f206c617465737420626c6f636b2068656164657220726f6f74206d65726b6c6560848201526510383937b7b360d11b60a482015260c4016106a4565b50505050565b60008061218984848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320f92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156121f8576121f8614d78565b600281111561220957612209614d78565b905250905060008160600151600281111561222657612226614d78565b146122cf5760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2056616c696461746f72206d757374206265206960648201527f6e61637469766520746f2070726f7665207769746864726177616c2063726564608482015266656e7469616c7360c81b60a482015260c4016106a4565b6122d76126fe565b6122e0906157af565b61231c86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061323392505050565b146123a35760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2050726f6f66206973206e6f7420666f7220746860648201526a1a5cc8115a59d95b941bd960aa1b608482015260a4016106a4565b60006123e186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061324892505050565b90506123f18a87878b8b8e61326d565b60398054906000612401836154dc565b90915550506001606083015264ffffffffff891682526001600160401b038b811660408401527f000000000000000000000000000000000000000000000000000000000000000081169082161115612487576001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166020830152612497565b6001600160401b03811660208301525b6000838152603660209081526040918290208451815492860151938601516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060850151859391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561253557612535614d78565b02179055505060405164ffffffffff8b1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a17f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df898c84602001516040516125d09392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1633b9aca0082602001516001600160401b03166125f59190615779565b9b9a5050505050505050505050565b6000815160301461268d5760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106a4565b6040516002906126a49084906000906020016157d3565b60408051601f19818403018152908290526126be91615802565b602060405180830381855afa1580156126db573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c6591906153f7565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b60008061278284848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061324892505050565b905060006127c285858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320f92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561283157612831614d78565b600281111561284257612842614d78565b8152505090508a6001600160401b031681604001516001600160401b0316106128f95760405162461bcd60e51b815260206004820152605c60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20566160448201527f6c696461746f72732062616c616e63652068617320616c72656164792062656560648201527f6e207570646174656420666f7220746869732074696d657374616d7000000000608482015260a4016106a4565b60018160600151600281111561291157612911614d78565b146129795760405162461bcd60e51b815260206004820152603260248201527f456967656e506f642e76657269667942616c616e63655570646174653a2056616044820152716c696461746f72206e6f742061637469766560701b60648201526084016106a4565b6129828b6134c4565b6001600160401b03166129c78787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506135ae92505050565b6001600160401b031611612a6a576000836001600160401b031611612a6a5760405162461bcd60e51b815260206004820152604d60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20766160448201527f6c696461746f7220697320776974686472617761626c6520627574206861732060648201526c3737ba103bb4ba34323930bbb760991b608482015260a4016106a4565b612a788987878b8b8f61326d565b602081015160006001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169086161115612ada57507f0000000000000000000000000000000000000000000000000000000000000000612add565b50835b6001600160401b0380821660208086019182528f831660408088019182526000898152603690935290912086518154935192518516600160801b0267ffffffffffffffff60801b19938616600160401b026001600160801b031990951691909516179290921790811683178255606086015186939091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b836002811115612b8557612b85614d78565b0217905550905050816001600160401b0316816001600160401b031614612c11577f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df8c8e83604051612bfc9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1612c0e81836135c6565b95505b5050505050979650505050505050565b61180382826135e5565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261162a9084906136fe565b6040805180820190915260008082526020820152612ca2612c9d89615883565b6137d0565b6033546001600160401b03600160a01b90910481169082161015612cd85760405162461bcd60e51b81526004016106a490615364565b6000612ce6612c9d8b615883565b90506000612d2688888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320f92505050565b905060008082815260366020526040902054600160c01b900460ff166002811115612d5357612d53614d78565b1415612e0a5760405162461bcd60e51b815260206004820152607460248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a2056616c696461746f72206e657665722070726f76656e20746f2060648201527f68617665207769746864726177616c2063726564656e7469616c7320706f696e6084820152731d1959081d1bc81d1a1a5cc818dbdb9d1c9858dd60621b60a482015260c4016106a4565b60008181526035602090815260408083206001600160401b038616845290915290205460ff1615612ec95760405162461bcd60e51b815260206004820152605b60248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a207769746864726177616c2068617320616c72656164792062656560648201527f6e2070726f76656e20666f7220746869732074696d657374616d700000000000608482015260a4016106a4565b6001603560008381526020019081526020016000206000846001600160401b03166001600160401b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550612fa68c87878e7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166344e71c806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa191906159bf565b6137e0565b6000612fe487878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061420192505050565b9050612ff48d8a8a8e8e8661326d565b600061303288888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061421992505050565b90506130708a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506135ae92505050565b6001600160401b031661308a6130858f615883565b614231565b6001600160401b03161061314257603354600084815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b81049093169381019390935261313793869388938a936001600160a01b03909316928892916060830190600160c01b900460ff16600281111561311e5761311e614d78565b600281111561312f5761312f614d78565b905250614243565b95505050505061315c565b60335461313790839086906001600160a01b031684614481565b5098975050505050505050565b603354604051633036cd5360e21b81526001600160a01b03918216600482015283821660248201527f00000000000000000000000000000000000000000000000000000000000000009091169063c0db354c9083906044016000604051808303818588803b1580156131da57600080fd5b505af11580156131ee573d6000803e3d6000fd5b50505050505050565b60008361320586858561455f565b1495945050505050565b60008160008151811061322457613224615456565b60200260200101519050919050565b60008160018151811061322457613224615456565b6000610c658260028151811061326057613260615456565b60200260200101516146ab565b61327960036002615ac0565b84146133045760405162461bcd60e51b815260206004820152604e60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b600561331260286001614b56565b61331c9190614b56565b613327906020615779565b82146133a75760405162461bcd60e51b815260206004820152604360248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106a4565b600064ffffffffff82166133bd60286001614b56565b600b901b179050600061340287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061471292505050565b905061344885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508591508690506131f7565b6134ba5760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106a4565b5050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316826001600160401b0316101561356e5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f642e5f74696d657374616d70546f45706f63683a2074696d6560448201527f7374616d70206973206265666f72652067656e6573697300000000000000000060648201526084016106a4565b61357a600c6020615acc565b6135a47f000000000000000000000000000000000000000000000000000000000000000084615730565b610c659190615afb565b6000610c658260078151811061326057613260615456565b60006135de6001600160401b03808416908516615b21565b9392505050565b804710156136355760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106a4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613682576040519150601f19603f3d011682016040523d82523d6000602084013e613687565b606091505b505090508061162a5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106a4565b6000613753826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166149bf9092919063ffffffff16565b80519091501561162a5780806020019051810190613771919061524e565b61162a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a4565b6000610c658261014001516146ab565b6137eb600280615ac0565b831461385f5760405162461bcd60e51b81526020600482015260496024820152600080516020615bd383398151915260448201527f616c3a207769746864726177616c4669656c64732068617320696e636f7272656064820152680c6e840d8cadccee8d60bb1b608482015260a4016106a4565b61386b600d6002615ac0565b61387b60c0840160a08501615b60565b6001600160401b0316106138e55760405162461bcd60e51b815260206004820152603f6024820152600080516020615bd383398151915260448201527f616c3a20626c6f636b526f6f74496e64657820697320746f6f206c617267650060648201526084016106a4565b6138f160046002615ac0565b613902610100840160e08501615b60565b6001600160401b03161061396e576040805162461bcd60e51b8152602060048201526024810191909152600080516020615bd383398151915260448201527f616c3a207769746864726177616c496e64657820697320746f6f206c6172676560648201526084016106a4565b61397a60186002615ac0565b61398a60e0840160c08501615b60565b6001600160401b031610613a045760405162461bcd60e51b81526020600482015260476024820152600080516020615bd383398151915260448201527f616c3a20686973746f726963616c53756d6d617279496e64657820697320746f6064820152666f206c6172676560c81b608482015260a4016106a4565b60006001600160401b038216613a1c612c9d85615883565b6001600160401b031610613a31576005613a34565b60045b9050613a41600482614b56565b613a4c906001614b56565b613a57906020615779565b613a618480615410565b905014613ad55760405162461bcd60e51b81526020600482015260486024820152600080516020615bd383398151915260448201527f616c3a207769746864726177616c50726f6f662068617320696e636f727265636064820152670e840d8cadccee8d60c31b608482015260a4016106a4565b613ae160046003614b56565b613aec906020615779565b613af96040850185615410565b905014613b735760405162461bcd60e51b815260206004820152604e6024820152600080516020615bd383398151915260448201527f616c3a20657865637574696f6e5061796c6f616450726f6f662068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b613b7f60036020615779565b613b8c6020850185615410565b905014613bfa5760405162461bcd60e51b81526020600482015260426024820152600080516020615bd383398151915260448201527f616c3a20736c6f7450726f6f662068617320696e636f7272656374206c656e676064820152610e8d60f31b608482015260a4016106a4565b613c05816020615779565b613c126060850185615410565b905014613c855760405162461bcd60e51b81526020600482015260476024820152600080516020615bd383398151915260448201527f616c3a2074696d657374616d7050726f6f662068617320696e636f7272656374606482015266040d8cadccee8d60cb1b608482015260a4016106a4565b600d613c9360186001614b56565b613c9e906005614b56565b613ca9906001614b56565b613cb39190614b56565b613cbe906020615779565b613ccb6080850185615410565b905014613d545760405162461bcd60e51b81526020600482015260586024820152600080516020615bd383398151915260448201527f616c3a20686973746f726963616c53756d6d617279426c6f636b526f6f74507260648201527f6f6f662068617320696e636f7272656374206c656e6774680000000000000000608482015260a4016106a4565b6000613d6660c0850160a08601615b60565b6001600160401b03166000613d7d600d6001614b56565b613d8d60e0880160c08901615b60565b6001600160401b0316901b600d613da660186001614b56565b613db1906001614b56565b613dbb9190614b56565b601b901b1717179050613e16613dd46080860186615410565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92505050610100870135846131f7565b613e895760405162461bcd60e51b815260206004820152604a6024820152600080516020615bd383398151915260448201527f616c3a20496e76616c696420686973746f726963616c73756d6d617279206d656064820152693935b63290383937b7b360b11b608482015260a4016106a4565b613ee0613e996020860186615410565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506101008a013593506101208a0135925090506131f7565b613f405760405162461bcd60e51b815260206004820152603d6024820152600080516020615bd383398151915260448201527f616c3a20496e76616c696420736c6f74206d65726b6c652070726f6f6600000060648201526084016106a4565b6049613f98613f526040870187615410565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050610100870135610160880135846131f7565b61400a5760405162461bcd60e51b81526020600482015260496024820152600080516020615bd383398151915260448201527f616c3a20496e76616c696420657865637574696f6e5061796c6f6164206d657260648201526835b63290383937b7b360b91b608482015260a4016106a4565b5061406261401b6060860186615410565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061016086013561014087013560096131f7565b6140cd5760405162461bcd60e51b81526020600482015260426024820152600080516020615bd383398151915260448201527f616c3a20496e76616c69642074696d657374616d70206d65726b6c652070726f60648201526137b360f11b608482015260a4016106a4565b60006140e0610100860160e08701615b60565b6001600160401b03166140f560046001614b56565b600e901b179050600061413a88888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061471292505050565b905061418a6141498780615410565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061016088013583856131f7565b6141f65760405162461bcd60e51b81526020600482015260436024820152600080516020615bd383398151915260448201527f616c3a20496e76616c6964207769746864726177616c206d65726b6c6520707260648201526237b7b360e91b608482015260a4016106a4565b505050505050505050565b6000610c658260018151811061326057613260615456565b6000610c658260038151811061326057613260615456565b600060206135a48361012001516146ab565b604080518082019091526000808252602082015260007f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316846001600160401b031611156142ba57507f00000000000000000000000000000000000000000000000000000000000000006142bd565b50825b60408051808201909152600080825260208201526142db8286615730565b6001600160401b0390811682526034805484926000916142fd91859116615b7d565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061432f8285602001516135c6565b602082015260028460600151600281111561434c5761434c614d78565b1461436e576039805490600061436183615ba8565b9091555050600260608501525b600060208086018281528a83526036909152604091829020865181549251938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516929091169190911792909217928316821781556060870151879391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561441357614413614d78565b0217905550506040805164ffffffffff8c1681526001600160401b038a8116602083015288168183015290516001600160a01b03891692507fb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a09639181900360600190a298975050505050505050565b60408051808201909152600080825260208201526040805164ffffffffff871681526001600160401b0380871660208301528416918101919091526001600160a01b038416907f8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e9060600160405180910390a2603880548391906000906145129084906001600160401b0316615b7d565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506040518060400160405280836001600160401b0316815260200160008152509050949350505050565b6000835160001415801561457e57506020845161457c9190615708565b155b61460d5760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106a4565b604080516020808201909252848152905b855181116146a157614631600285615708565b614664578151600052808601516020526020826040600060026107d05a03fa61465957600080fd5b60028404935061468f565b8086015160005281516020526020826040600060026107d05a03fa61468857600080fd5b6002840493505b61469a602082614b56565b905061461e565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b60008060028351614723919061571c565b90506000816001600160401b0381111561473f5761473f614f85565b604051908082528060200260200182016040528015614768578160200160208202803683370190505b50905060005b8281101561486f576002856147838383615779565b8151811061479357614793615456565b6020026020010151868360026147a99190615779565b6147b4906001614b56565b815181106147c4576147c4615456565b60200260200101516040516020016147e6929190918252602082015260400190565b60408051601f198184030181529082905261480091615802565b602060405180830381855afa15801561481d573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061484091906153f7565b82828151811061485257614852615456565b602090810291909101015280614867816154dc565b91505061476e565b5061487b60028361571c565b91505b811561499b5760005b828110156149885760028261489c8383615779565b815181106148ac576148ac615456565b6020026020010151838360026148c29190615779565b6148cd906001614b56565b815181106148dd576148dd615456565b60200260200101516040516020016148ff929190918252602082015260400190565b60408051601f198184030181529082905261491991615802565b602060405180830381855afa158015614936573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061495991906153f7565b82828151811061496b5761496b615456565b602090810291909101015280614980816154dc565b915050614887565b5061499460028361571c565b915061487e565b806000815181106149ae576149ae615456565b602002602001015192505050919050565b60606149ce84846000856149d6565b949350505050565b606082471015614a375760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a4565b6001600160a01b0385163b614a8e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a4565b600080866001600160a01b03168587604051614aaa9190615802565b60006040518083038185875af1925050503d8060008114614ae7576040519150601f19603f3d011682016040523d82523d6000602084013e614aec565b606091505b5091509150614afc828286614b07565b979650505050505050565b60608315614b165750816135de565b825115614b265782518084602001fd5b8160405162461bcd60e51b81526004016106a49190615bbf565b634e487b7160e01b600052601160045260246000fd5b60008219821115614b6957614b69614b40565b500190565b6001600160401b0381168114611fb957600080fd5b8035614b8e81614b6e565b919050565b60008060408385031215614ba657600080fd5b823591506020830135614bb881614b6e565b809150509250929050565b600060408284031215614bd557600080fd5b50919050565b60008083601f840112614bed57600080fd5b5081356001600160401b03811115614c0457600080fd5b6020830191508360208260051b8501011115614c1f57600080fd5b9250929050565b60008060008060008060008060a0898b031215614c4257600080fd5b8835614c4d81614b6e565b975060208901356001600160401b0380821115614c6957600080fd5b614c758c838d01614bc3565b985060408b0135915080821115614c8b57600080fd5b614c978c838d01614bdb565b909850965060608b0135915080821115614cb057600080fd5b614cbc8c838d01614bdb565b909650945060808b0135915080821115614cd557600080fd5b50614ce28b828c01614bdb565b999c989b5096995094979396929594505050565b60008083601f840112614d0857600080fd5b5081356001600160401b03811115614d1f57600080fd5b602083019150836020828501011115614c1f57600080fd5b60008060208385031215614d4a57600080fd5b82356001600160401b03811115614d6057600080fd5b614d6c85828601614cf6565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110614dac57634e487b7160e01b600052602160045260246000fd5b9052565b60208101610c658284614d8e565b600060208284031215614dd057600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151614e186060840182614d8e565b5092915050565b600080600080600060608688031215614e3757600080fd5b85356001600160401b0380821115614e4e57600080fd5b614e5a89838a01614cf6565b90975095506020880135915080821115614e7357600080fd5b50614e8088828901614cf6565b96999598509660400135949350505050565b60008060008060008060008060a0898b031215614eae57600080fd5b8835614eb981614b6e565b975060208901356001600160401b0380821115614ed557600080fd5b614ee18c838d01614bdb565b909950975060408b0135915080821115614efa57600080fd5b614f068c838d01614bc3565b965060608b0135915080821115614cb057600080fd5b6001600160a01b0381168114611fb957600080fd5b8035614b8e81614f1c565b60008060408385031215614f4f57600080fd5b8235614f5a81614f1c565b946020939093013593505050565b600060208284031215614f7a57600080fd5b81356135de81614f1c565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b0381118282101715614fbe57614fbe614f85565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614fec57614fec614f85565b604052919050565b60006001600160401b0382111561500d5761500d614f85565b5060051b60200190565b600082601f83011261502857600080fd5b8135602061503d61503883614ff4565b614fc4565b82815260059290921b8401810191818101908684111561505c57600080fd5b8286015b848110156150775780358352918301918301615060565b509695505050505050565b60008060006060848603121561509757600080fd5b83356001600160401b03808211156150ae57600080fd5b818601915086601f8301126150c257600080fd5b813560206150d261503883614ff4565b82815260059290921b8401810191818101908a8411156150f157600080fd5b948201945b8386101561511857853561510981614f1c565b825294820194908201906150f6565b9750508701359250508082111561512e57600080fd5b5061513b86828701615017565b92505061514a60408501614f31565b90509250925092565b60008060008060008060008060008060c08b8d03121561517257600080fd5b61517b8b614b83565b995060208b01356001600160401b038082111561519757600080fd5b6151a38e838f01614bc3565b9a5060408d01359150808211156151b957600080fd5b6151c58e838f01614bdb565b909a50985060608d01359150808211156151de57600080fd5b6151ea8e838f01614bdb565b909850965060808d013591508082111561520357600080fd5b61520f8e838f01614bdb565b909650945060a08d013591508082111561522857600080fd5b506152358d828e01614bdb565b915080935050809150509295989b9194979a5092959850565b60006020828403121561526057600080fd5b815180151581146135de57600080fd5b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b6020808252602f908201527f456967656e506f642e6861734e6576657252657374616b65643a20726573746160408201526e1ada5b99c81a5cc8195b98589b1959608a1b606082015260800190565b60208082526067908201527f456967656e506f642e70726f6f664973466f7256616c696454696d657374616d60408201527f703a20626561636f6e20636861696e2070726f6f66206d75737420626520617460608201527f206f72206166746572206d6f7374526563656e745769746864726177616c546960808201526606d657374616d760cc1b60a082015260c00190565b60006020828403121561540957600080fd5b5051919050565b6000808335601e1984360301811261542757600080fd5b8301803591506001600160401b0382111561544157600080fd5b602001915036819003821315614c1f57600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561547e57600080fd5b813564ffffffffff811681146135de57600080fd5b6000808335601e198436030181126154aa57600080fd5b8301803591506001600160401b038211156154c457600080fd5b6020019150600581901b3603821315614c1f57600080fd5b60006000198214156154f0576154f0614b40565b5060010190565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60005b8381101561558c578181015183820152602001615574565b838111156121445750506000910152565b600081518084526155b5816020860160208601615571565b601f01601f19169290920160200192915050565b6080815260006155dd60808301888a615548565b82810360208401526155ef818861559d565b90508281036040840152615604818688615548565b915050826060830152979650505050505050565b6020815260006149ce602083018486615548565b600080821280156001600160ff1b038490038513161561564e5761564e614b40565b600160ff1b839003841281161561566757615667614b40565b50500190565b60006001600160ff1b038184138284138082168684048611161561569357615693614b40565b600160ff1b60008712828116878305891216156156b2576156b2614b40565b600087129250878205871284841616156156ce576156ce614b40565b878505871281841616156156e4576156e4614b40565b505050929093029392505050565b634e487b7160e01b600052601260045260246000fd5b600082615717576157176156f2565b500690565b60008261572b5761572b6156f2565b500490565b60006001600160401b038381169083168181101561575057615750614b40565b039392505050565b6000823561017e1983360301811261576f57600080fd5b9190910192915050565b600081600019048311821515161561579357615793614b40565b500290565b6000828210156157aa576157aa614b40565b500390565b80516020808301519190811015614bd55760001960209190910360031b1b16919050565b600083516157e5818460208801615571565b6001600160801b0319939093169190920190815260100192915050565b6000825161576f818460208701615571565b600082601f83011261582557600080fd5b81356001600160401b0381111561583e5761583e614f85565b615851601f8201601f1916602001614fc4565b81815284602083860101111561586657600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180823603121561589657600080fd5b61589e614f9b565b82356001600160401b03808211156158b557600080fd5b6158c136838701615814565b835260208501359150808211156158d757600080fd5b6158e336838701615814565b602084015260408501359150808211156158fc57600080fd5b61590836838701615814565b6040840152606085013591508082111561592157600080fd5b61592d36838701615814565b6060840152608085013591508082111561594657600080fd5b5061595336828601615814565b60808301525061596560a08401614b83565b60a082015261597660c08401614b83565b60c082015261598760e08401614b83565b60e082015261010083810135908201526101208084013590820152610140808401359082015261016092830135928101929092525090565b6000602082840312156159d157600080fd5b81516135de81614b6e565b600181815b80851115615a175781600019048211156159fd576159fd614b40565b80851615615a0a57918102915b93841c93908002906159e1565b509250929050565b600082615a2e57506001610c65565b81615a3b57506000610c65565b8160018114615a515760028114615a5b57615a77565b6001915050610c65565b60ff841115615a6c57615a6c614b40565b50506001821b610c65565b5060208310610133831016604e8410600b8410161715615a9a575081810a610c65565b615aa483836159dc565b8060001904821115615ab857615ab8614b40565b029392505050565b60006135de8383615a1f565b60006001600160401b0380831681851681830481118215151615615af257615af2614b40565b02949350505050565b60006001600160401b0380841680615b1557615b156156f2565b92169190910492915050565b60008083128015600160ff1b850184121615615b3f57615b3f614b40565b6001600160ff1b0384018313811615615b5a57615b5a614b40565b50500390565b600060208284031215615b7257600080fd5b81356135de81614b6e565b60006001600160401b03808316818516808303821115615b9f57615b9f614b40565b01949350505050565b600081615bb757615bb7614b40565b506000190190565b6020815260006135de602083018461559d56fe426561636f6e436861696e50726f6f66732e7665726966795769746864726177a2646970667358221220870ad3e800ce9588580fd8d094e368e36de116a7b0eb02adedf65a93330ee40064736f6c634300080c0033 diff --git a/pkg/bindings/EigenPodManager/binding.go b/pkg/bindings/EigenPodManager/binding.go new file mode 100644 index 000000000..b40b35e39 --- /dev/null +++ b/pkg/bindings/EigenPodManager/binding.go @@ -0,0 +1,2658 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package EigenPodManager + +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 +) + +// 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\":\"beaconChainOracle\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBeaconChainOracle\"}],\"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\":\"denebForkTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"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\":\"getBlockRootAtTimestamp\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"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\":\"_beaconChainOracle\",\"type\":\"address\",\"internalType\":\"contractIBeaconChainOracle\"},{\"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\":\"setDenebForkTimestamp\",\"inputs\":[{\"name\":\"newDenebForkTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"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\":\"updateBeaconChainOracle\",\"inputs\":[{\"name\":\"newBeaconChainOracle\",\"type\":\"address\",\"internalType\":\"contractIBeaconChainOracle\"}],\"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\":\"BeaconOracleUpdated\",\"inputs\":[{\"name\":\"newOracleAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DenebForkTimestampUpdated\",\"inputs\":[{\"name\":\"newValue\",\"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\":\"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: "0x6101206040523480156200001257600080fd5b50604051620034e7380380620034e783398101604081905262000035916200014b565b6001600160a01b0380861660805280851660a05280841660c05280831660e0528116610100526200006562000070565b5050505050620001cb565b600054610100900460ff1615620000dd5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000130576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014857600080fd5b50565b600080600080600060a086880312156200016457600080fd5b8551620001718162000132565b6020870151909550620001848162000132565b6040870151909450620001978162000132565b6060870151909350620001aa8162000132565b6080870151909250620001bd8162000132565b809150509295509295909350565b60805160a05160c05160e051610100516132a66200024160003960008181610636015281816106e001528181610b0e015281816113e70152818161187c015261196c01526000610542015260006102e601526000818161027a01528181611366015261203a0152600061041401526132a66000f3fe6080604052600436106101ee5760003560e01c80638da5cb5b1161010d578063c052bd61116100a0578063d1c64cc91161006f578063d1c64cc914610604578063ea4d3c9b14610624578063f2fde38b14610658578063f6848d2414610678578063fabc1cbc146106b357600080fd5b8063c052bd6114610584578063c1de3aef146105a4578063c2c51c40146105c4578063cf756fdf146105e457600080fd5b8063a38406a3116100dc578063a38406a3146104fa578063a6a509be1461051a578063b134427114610530578063beffbb891461056457600080fd5b80638da5cb5b1461046b5780639104c319146104895780639b4e4634146104b15780639ba06275146104c457600080fd5b8063595c6a6711610185578063715018a611610154578063715018a6146103ed57806374cdd7981461040257806384d8106214610436578063886f11951461044b57600080fd5b8063595c6a67146103565780635ac86ab71461036b5780635c975abb146103ab57806360f4062b146103c057600080fd5b8063387b1300116101c1578063387b1300146102b457806339b70e38146102d457806344e71c8014610308578063463db0381461033657600080fd5b80630e81073c146101f357806310d67a2f14610226578063136439dd14610248578063292b7b2b14610268575b600080fd5b3480156101ff57600080fd5b5061021361020e366004612406565b6106d3565b6040519081526020015b60405180910390f35b34801561023257600080fd5b50610246610241366004612432565b610911565b005b34801561025457600080fd5b5061024661026336600461244f565b6109c4565b34801561027457600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161021d565b3480156102c057600080fd5b506102466102cf366004612468565b610b03565b3480156102e057600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561031457600080fd5b5061031d610ea1565b60405167ffffffffffffffff909116815260200161021d565b34801561034257600080fd5b506102466103513660046124a9565b610eca565b34801561036257600080fd5b50610246611056565b34801561037757600080fd5b5061039b6103863660046124d3565b606654600160ff9092169190911b9081161490565b604051901515815260200161021d565b3480156103b757600080fd5b50606654610213565b3480156103cc57600080fd5b506102136103db366004612432565b609b6020526000908152604090205481565b3480156103f957600080fd5b5061024661111d565b34801561040e57600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561044257600080fd5b5061029c611131565b34801561045757600080fd5b5060655461029c906001600160a01b031681565b34801561047757600080fd5b506033546001600160a01b031661029c565b34801561049557600080fd5b5061029c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102466104bf36600461253f565b61121b565b3480156104d057600080fd5b5061029c6104df366004612432565b6098602052600090815260409020546001600160a01b031681565b34801561050657600080fd5b5061029c610515366004612432565b61130a565b34801561052657600080fd5b5061021360995481565b34801561053c57600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561057057600080fd5b5061024661057f366004612406565b6113dc565b34801561059057600080fd5b5060975461029c906001600160a01b031681565b3480156105b057600080fd5b506102466105bf366004612432565b6115f3565b3480156105d057600080fd5b506102466105df366004612406565b611604565b3480156105f057600080fd5b506102466105ff3660046125b3565b611a07565b34801561061057600080fd5b5061021361061f3660046124a9565b611b30565b34801561063057600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561066457600080fd5b50610246610673366004612432565b611c3b565b34801561068457600080fd5b5061039b610693366004612432565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156106bf57600080fd5b506102466106ce36600461244f565b611cb1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107265760405162461bcd60e51b815260040161071d90612604565b60405180910390fd5b6001600160a01b0383166107a25760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f2061646472657373000000000000606482015260840161071d565b60008212156108105760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b606482015260840161071d565b61081e633b9aca0083612678565b156108915760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e74000000606482015260840161071d565b6001600160a01b0383166000908152609b6020526040812054906108b584836126a2565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020613231833981519152906108f49087815260200190565b60405180910390a26109068282611e0d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906126e3565b6001600160a01b0316336001600160a01b0316146109b85760405162461bcd60e51b815260040161071d90612700565b6109c181611e4f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a30919061274a565b610a4c5760405162461bcd60e51b815260040161071d9061276c565b60665481811614610ac55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b4b5760405162461bcd60e51b815260040161071d90612604565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526047602482015260008051602061325183398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a40161071d565b6001600160a01b038216610c425760405162461bcd60e51b815260206004820152604a602482015260008051602061325183398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a40161071d565b6000811215610cb15760405162461bcd60e51b8152602060048201526041602482015260008051602061325183398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a40161071d565b610cbf633b9aca0082612678565b15610d335760405162461bcd60e51b815260206004820152604a602482015260008051602061325183398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a40161071d565b6001600160a01b0383166000908152609b602052604081205490811215610e26576000610d5f826127b4565b905080831115610dc4576001600160a01b0385166000908152609b6020526040812055610d8c81846127d1565b9250846001600160a01b031660008051602061323183398151915282604051610db791815260200190565b60405180910390a2610e24565b6001600160a01b0385166000908152609b602052604081208054859290610dec9084906126a2565b90915550506040518381526001600160a01b038616906000805160206132318339815191529060200160405180910390a25050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b5050505050505050565b609c5460009067ffffffffffffffff1680610ec55767ffffffffffffffff91505090565b919050565b610ed2611f46565b67ffffffffffffffff8116610f645760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f7420736574206e657744656e6562466f726b546960648201526b06d657374616d7020746f20360a41b608482015260a40161071d565b609c5467ffffffffffffffff16156110005760405162461bcd60e51b815260206004820152605360248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f74207365742064656e6562466f726b54696d657360648201527274616d70206d6f7265207468616e206f6e636560681b608482015260a40161071d565b609c805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527f19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db9060200160405180910390a150565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561109e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c2919061274a565b6110de5760405162461bcd60e51b815260040161071d9061276c565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611125611f46565b61112f6000611fa0565b565b6066546000908190600190811614156111885760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03161561120a5760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b606482015260840161071d565b6000611214611ff2565b9250505090565b606654600090600190811614156112705760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03168061129957611296611ff2565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906112cf908b908b908b908b908b90600401612811565b6000604051808303818588803b1580156112e857600080fd5b505af11580156112fc573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061090b576113d5836001600160a01b031660001b60405180610940016040528061090e815260200161292361090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526113ba9291602001612886565b60405160208183030381529060405280519060200120612157565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114245760405162461bcd60e51b815260040161071d90612604565b600081121561149b5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e65676174697665000000000000000000606482015260840161071d565b6114a9633b9aca0082612678565b1561151e576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e74606482015260840161071d565b6001600160a01b0382166000908152609b602052604081205461154290839061289b565b905060008112156115d35760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a40161071d565b6001600160a01b039092166000908152609b602052604090209190915550565b6115fb611f46565b6109c1816121b3565b6001600160a01b03808316600090815260986020526040902054839116331461167f5760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b606482015260840161071d565b600260c95414156116d25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b600260c9556001600160a01b03831661176e5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a40161071d565b61177c633b9aca00836128da565b156118155760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a40161071d565b6001600160a01b0383166000908152609b60205260408120549061183984836126a2565b6001600160a01b0386166000908152609b602052604081208290559091506118618383611e0d565b905080156119c957600081121561192c576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118c0856127b4565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561190f57600080fd5b505af1158015611923573d6000803e3d6000fd5b505050506119c9565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156119b057600080fd5b505af11580156119c4573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020613231833981519152866040516119f291815260200190565b60405180910390a25050600160c95550505050565b600054610100900460ff1615808015611a275750600054600160ff909116105b80611a415750303b158015611a41575060005460ff166001145b611aa45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161071d565b6000805460ff191660011790558015611ac7576000805461ff0019166101001790555b611ad0856121b3565b611ad984611fa0565b611ae383836121fd565b8015611b29576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60975460405163321accf960e11b815267ffffffffffffffff8316600482015260009182916001600160a01b039091169063643599f290602401602060405180830381865afa158015611b87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bab91906128ee565b90508061090b5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e676574426c6f636b526f6f744174546960448201527f6d657374616d703a20737461746520726f6f742061742074696d657374616d70606482015271081b9bdd081e595d08199a5b985b1a5e995960721b608482015260a40161071d565b611c43611f46565b6001600160a01b038116611ca85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b6109c181611fa0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2891906126e3565b6001600160a01b0316336001600160a01b031614611d585760405162461bcd60e51b815260040161071d90612700565b606654198119606654191614611dd65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610af8565b6000808313611e2d5760008213611e265750600061090b565b508061090b565b60008213611e4557611e3e836127b4565b905061090b565b611e3e838361289b565b6001600160a01b038116611edd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161071d565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461112f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060996000815461200390612907565b9091555060408051610940810190915261090e8082526000916120a291839133916129236020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f198184030181529082905261208e9291602001612886565b6040516020818303038152906040526122e7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156120e657600080fd5b505af11580156120fa573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000906113d5565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f690600090a250565b6065546001600160a01b031615801561221e57506001600160a01b03821615155b6122a05760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26122e382611e4f565b5050565b6000808447101561233a5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161071d565b82516123885760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161071d565b8383516020850187f590506001600160a01b0381166123e95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161071d565b949350505050565b6001600160a01b03811681146109c157600080fd5b6000806040838503121561241957600080fd5b8235612424816123f1565b946020939093013593505050565b60006020828403121561244457600080fd5b81356113d5816123f1565b60006020828403121561246157600080fd5b5035919050565b60008060006060848603121561247d57600080fd5b8335612488816123f1565b92506020840135612498816123f1565b929592945050506040919091013590565b6000602082840312156124bb57600080fd5b813567ffffffffffffffff811681146113d557600080fd5b6000602082840312156124e557600080fd5b813560ff811681146113d557600080fd5b60008083601f84011261250857600080fd5b50813567ffffffffffffffff81111561252057600080fd5b60208301915083602082850101111561253857600080fd5b9250929050565b60008060008060006060868803121561255757600080fd5b853567ffffffffffffffff8082111561256f57600080fd5b61257b89838a016124f6565b9097509550602088013591508082111561259457600080fd5b506125a1888289016124f6565b96999598509660400135949350505050565b600080600080608085870312156125c957600080fd5b84356125d4816123f1565b935060208501356125e4816123f1565b925060408501356125f4816123f1565b9396929550929360600135925050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261268757612687612662565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b03849003851316156126c4576126c461268c565b600160ff1b83900384128116156126dd576126dd61268c565b50500190565b6000602082840312156126f557600080fd5b81516113d5816123f1565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561275c57600080fd5b815180151581146113d557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b8214156127ca576127ca61268c565b5060000390565b6000828210156127e3576127e361268c565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006128256060830187896127e8565b82810360208401526128388186886127e8565b9150508260408301529695505050505050565b6000815160005b8181101561286c5760208185018101518683015201612852565b8181111561287b576000828601525b509290920192915050565b60006123e9612895838661284b565b8461284b565b60008083128015600160ff1b8501841216156128b9576128b961268c565b6001600160ff1b03840183138116156128d4576128d461268c565b50500390565b6000826128e9576128e9612662565b500790565b60006020828403121561290057600080fd5b5051919050565b600060001982141561291b5761291b61268c565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a2646970667358221220ef9d154f27412f8804701de43ed742e1e51f046ef0dd3d1937547afcbb00037164736f6c634300080c0033", +} + +// EigenPodManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use EigenPodManagerMetaData.ABI instead. +var EigenPodManagerABI = EigenPodManagerMetaData.ABI + +// EigenPodManagerBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use EigenPodManagerMetaData.Bin instead. +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) { + parsed, err := EigenPodManagerMetaData.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(EigenPodManagerBin), backend, _ethPOS, _eigenPodBeacon, _strategyManager, _slasher, _delegationManager) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &EigenPodManager{EigenPodManagerCaller: EigenPodManagerCaller{contract: contract}, EigenPodManagerTransactor: EigenPodManagerTransactor{contract: contract}, EigenPodManagerFilterer: EigenPodManagerFilterer{contract: contract}}, nil +} + +// EigenPodManager is an auto generated Go binding around an Ethereum contract. +type EigenPodManager struct { + EigenPodManagerCaller // Read-only binding to the contract + EigenPodManagerTransactor // Write-only binding to the contract + EigenPodManagerFilterer // Log filterer for contract events +} + +// EigenPodManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type EigenPodManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// EigenPodManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type EigenPodManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// EigenPodManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type EigenPodManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// EigenPodManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type EigenPodManagerSession struct { + Contract *EigenPodManager // 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 +} + +// EigenPodManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type EigenPodManagerCallerSession struct { + Contract *EigenPodManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// EigenPodManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type EigenPodManagerTransactorSession struct { + Contract *EigenPodManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// EigenPodManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type EigenPodManagerRaw struct { + Contract *EigenPodManager // Generic contract binding to access the raw methods on +} + +// EigenPodManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type EigenPodManagerCallerRaw struct { + Contract *EigenPodManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// EigenPodManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type EigenPodManagerTransactorRaw struct { + Contract *EigenPodManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewEigenPodManager creates a new instance of EigenPodManager, bound to a specific deployed contract. +func NewEigenPodManager(address common.Address, backend bind.ContractBackend) (*EigenPodManager, error) { + contract, err := bindEigenPodManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &EigenPodManager{EigenPodManagerCaller: EigenPodManagerCaller{contract: contract}, EigenPodManagerTransactor: EigenPodManagerTransactor{contract: contract}, EigenPodManagerFilterer: EigenPodManagerFilterer{contract: contract}}, nil +} + +// NewEigenPodManagerCaller creates a new read-only instance of EigenPodManager, bound to a specific deployed contract. +func NewEigenPodManagerCaller(address common.Address, caller bind.ContractCaller) (*EigenPodManagerCaller, error) { + contract, err := bindEigenPodManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &EigenPodManagerCaller{contract: contract}, nil +} + +// NewEigenPodManagerTransactor creates a new write-only instance of EigenPodManager, bound to a specific deployed contract. +func NewEigenPodManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*EigenPodManagerTransactor, error) { + contract, err := bindEigenPodManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &EigenPodManagerTransactor{contract: contract}, nil +} + +// NewEigenPodManagerFilterer creates a new log filterer instance of EigenPodManager, bound to a specific deployed contract. +func NewEigenPodManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*EigenPodManagerFilterer, error) { + contract, err := bindEigenPodManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &EigenPodManagerFilterer{contract: contract}, nil +} + +// bindEigenPodManager binds a generic wrapper to an already deployed contract. +func bindEigenPodManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := EigenPodManagerMetaData.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 (_EigenPodManager *EigenPodManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _EigenPodManager.Contract.EigenPodManagerCaller.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 (_EigenPodManager *EigenPodManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _EigenPodManager.Contract.EigenPodManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_EigenPodManager *EigenPodManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _EigenPodManager.Contract.EigenPodManagerTransactor.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 (_EigenPodManager *EigenPodManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _EigenPodManager.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 (_EigenPodManager *EigenPodManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _EigenPodManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_EigenPodManager *EigenPodManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _EigenPodManager.Contract.contract.Transact(opts, method, params...) +} + +// BeaconChainETHStrategy is a free data retrieval call binding the contract method 0x9104c319. +// +// Solidity: function beaconChainETHStrategy() view returns(address) +func (_EigenPodManager *EigenPodManagerCaller) BeaconChainETHStrategy(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _EigenPodManager.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 (_EigenPodManager *EigenPodManagerSession) BeaconChainETHStrategy() (common.Address, error) { + return _EigenPodManager.Contract.BeaconChainETHStrategy(&_EigenPodManager.CallOpts) +} + +// BeaconChainETHStrategy is a free data retrieval call binding the contract method 0x9104c319. +// +// Solidity: function beaconChainETHStrategy() view returns(address) +func (_EigenPodManager *EigenPodManagerCallerSession) BeaconChainETHStrategy() (common.Address, error) { + return _EigenPodManager.Contract.BeaconChainETHStrategy(&_EigenPodManager.CallOpts) +} + +// BeaconChainOracle is a free data retrieval call binding the contract method 0xc052bd61. +// +// Solidity: function beaconChainOracle() view returns(address) +func (_EigenPodManager *EigenPodManagerCaller) BeaconChainOracle(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _EigenPodManager.contract.Call(opts, &out, "beaconChainOracle") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// BeaconChainOracle is a free data retrieval call binding the contract method 0xc052bd61. +// +// Solidity: function beaconChainOracle() view returns(address) +func (_EigenPodManager *EigenPodManagerSession) BeaconChainOracle() (common.Address, error) { + return _EigenPodManager.Contract.BeaconChainOracle(&_EigenPodManager.CallOpts) +} + +// BeaconChainOracle is a free data retrieval call binding the contract method 0xc052bd61. +// +// Solidity: function beaconChainOracle() view returns(address) +func (_EigenPodManager *EigenPodManagerCallerSession) BeaconChainOracle() (common.Address, error) { + return _EigenPodManager.Contract.BeaconChainOracle(&_EigenPodManager.CallOpts) +} + +// DelegationManager is a free data retrieval call binding the contract method 0xea4d3c9b. +// +// Solidity: function delegationManager() view returns(address) +func (_EigenPodManager *EigenPodManagerCaller) DelegationManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _EigenPodManager.contract.Call(opts, &out, "delegationManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// DelegationManager is a free data retrieval call binding the contract method 0xea4d3c9b. +// +// Solidity: function delegationManager() view returns(address) +func (_EigenPodManager *EigenPodManagerSession) DelegationManager() (common.Address, error) { + return _EigenPodManager.Contract.DelegationManager(&_EigenPodManager.CallOpts) +} + +// DelegationManager is a free data retrieval call binding the contract method 0xea4d3c9b. +// +// Solidity: function delegationManager() view returns(address) +func (_EigenPodManager *EigenPodManagerCallerSession) DelegationManager() (common.Address, error) { + return _EigenPodManager.Contract.DelegationManager(&_EigenPodManager.CallOpts) +} + +// DenebForkTimestamp is a free data retrieval call binding the contract method 0x44e71c80. +// +// Solidity: function denebForkTimestamp() view returns(uint64) +func (_EigenPodManager *EigenPodManagerCaller) DenebForkTimestamp(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _EigenPodManager.contract.Call(opts, &out, "denebForkTimestamp") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// DenebForkTimestamp is a free data retrieval call binding the contract method 0x44e71c80. +// +// Solidity: function denebForkTimestamp() view returns(uint64) +func (_EigenPodManager *EigenPodManagerSession) DenebForkTimestamp() (uint64, error) { + return _EigenPodManager.Contract.DenebForkTimestamp(&_EigenPodManager.CallOpts) +} + +// DenebForkTimestamp is a free data retrieval call binding the contract method 0x44e71c80. +// +// Solidity: function denebForkTimestamp() view returns(uint64) +func (_EigenPodManager *EigenPodManagerCallerSession) DenebForkTimestamp() (uint64, error) { + return _EigenPodManager.Contract.DenebForkTimestamp(&_EigenPodManager.CallOpts) +} + +// EigenPodBeacon is a free data retrieval call binding the contract method 0x292b7b2b. +// +// Solidity: function eigenPodBeacon() view returns(address) +func (_EigenPodManager *EigenPodManagerCaller) EigenPodBeacon(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _EigenPodManager.contract.Call(opts, &out, "eigenPodBeacon") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EigenPodBeacon is a free data retrieval call binding the contract method 0x292b7b2b. +// +// Solidity: function eigenPodBeacon() view returns(address) +func (_EigenPodManager *EigenPodManagerSession) EigenPodBeacon() (common.Address, error) { + return _EigenPodManager.Contract.EigenPodBeacon(&_EigenPodManager.CallOpts) +} + +// EigenPodBeacon is a free data retrieval call binding the contract method 0x292b7b2b. +// +// Solidity: function eigenPodBeacon() view returns(address) +func (_EigenPodManager *EigenPodManagerCallerSession) EigenPodBeacon() (common.Address, error) { + return _EigenPodManager.Contract.EigenPodBeacon(&_EigenPodManager.CallOpts) +} + +// EthPOS is a free data retrieval call binding the contract method 0x74cdd798. +// +// Solidity: function ethPOS() view returns(address) +func (_EigenPodManager *EigenPodManagerCaller) EthPOS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _EigenPodManager.contract.Call(opts, &out, "ethPOS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EthPOS is a free data retrieval call binding the contract method 0x74cdd798. +// +// Solidity: function ethPOS() view returns(address) +func (_EigenPodManager *EigenPodManagerSession) EthPOS() (common.Address, error) { + return _EigenPodManager.Contract.EthPOS(&_EigenPodManager.CallOpts) +} + +// EthPOS is a free data retrieval call binding the contract method 0x74cdd798. +// +// Solidity: function ethPOS() view returns(address) +func (_EigenPodManager *EigenPodManagerCallerSession) EthPOS() (common.Address, error) { + return _EigenPodManager.Contract.EthPOS(&_EigenPodManager.CallOpts) +} + +// GetBlockRootAtTimestamp is a free data retrieval call binding the contract method 0xd1c64cc9. +// +// Solidity: function getBlockRootAtTimestamp(uint64 timestamp) view returns(bytes32) +func (_EigenPodManager *EigenPodManagerCaller) GetBlockRootAtTimestamp(opts *bind.CallOpts, timestamp uint64) ([32]byte, error) { + var out []interface{} + err := _EigenPodManager.contract.Call(opts, &out, "getBlockRootAtTimestamp", timestamp) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetBlockRootAtTimestamp is a free data retrieval call binding the contract method 0xd1c64cc9. +// +// Solidity: function getBlockRootAtTimestamp(uint64 timestamp) view returns(bytes32) +func (_EigenPodManager *EigenPodManagerSession) GetBlockRootAtTimestamp(timestamp uint64) ([32]byte, error) { + return _EigenPodManager.Contract.GetBlockRootAtTimestamp(&_EigenPodManager.CallOpts, timestamp) +} + +// GetBlockRootAtTimestamp is a free data retrieval call binding the contract method 0xd1c64cc9. +// +// Solidity: function getBlockRootAtTimestamp(uint64 timestamp) view returns(bytes32) +func (_EigenPodManager *EigenPodManagerCallerSession) GetBlockRootAtTimestamp(timestamp uint64) ([32]byte, error) { + return _EigenPodManager.Contract.GetBlockRootAtTimestamp(&_EigenPodManager.CallOpts, timestamp) +} + +// GetPod is a free data retrieval call binding the contract method 0xa38406a3. +// +// Solidity: function getPod(address podOwner) view returns(address) +func (_EigenPodManager *EigenPodManagerCaller) GetPod(opts *bind.CallOpts, podOwner common.Address) (common.Address, error) { + var out []interface{} + err := _EigenPodManager.contract.Call(opts, &out, "getPod", podOwner) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetPod is a free data retrieval call binding the contract method 0xa38406a3. +// +// Solidity: function getPod(address podOwner) view returns(address) +func (_EigenPodManager *EigenPodManagerSession) GetPod(podOwner common.Address) (common.Address, error) { + return _EigenPodManager.Contract.GetPod(&_EigenPodManager.CallOpts, podOwner) +} + +// GetPod is a free data retrieval call binding the contract method 0xa38406a3. +// +// Solidity: function getPod(address podOwner) view returns(address) +func (_EigenPodManager *EigenPodManagerCallerSession) GetPod(podOwner common.Address) (common.Address, error) { + return _EigenPodManager.Contract.GetPod(&_EigenPodManager.CallOpts, podOwner) +} + +// HasPod is a free data retrieval call binding the contract method 0xf6848d24. +// +// Solidity: function hasPod(address podOwner) view returns(bool) +func (_EigenPodManager *EigenPodManagerCaller) HasPod(opts *bind.CallOpts, podOwner common.Address) (bool, error) { + var out []interface{} + err := _EigenPodManager.contract.Call(opts, &out, "hasPod", podOwner) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasPod is a free data retrieval call binding the contract method 0xf6848d24. +// +// Solidity: function hasPod(address podOwner) view returns(bool) +func (_EigenPodManager *EigenPodManagerSession) HasPod(podOwner common.Address) (bool, error) { + return _EigenPodManager.Contract.HasPod(&_EigenPodManager.CallOpts, podOwner) +} + +// HasPod is a free data retrieval call binding the contract method 0xf6848d24. +// +// Solidity: function hasPod(address podOwner) view returns(bool) +func (_EigenPodManager *EigenPodManagerCallerSession) HasPod(podOwner common.Address) (bool, error) { + return _EigenPodManager.Contract.HasPod(&_EigenPodManager.CallOpts, podOwner) +} + +// NumPods is a free data retrieval call binding the contract method 0xa6a509be. +// +// Solidity: function numPods() view returns(uint256) +func (_EigenPodManager *EigenPodManagerCaller) NumPods(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _EigenPodManager.contract.Call(opts, &out, "numPods") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// NumPods is a free data retrieval call binding the contract method 0xa6a509be. +// +// Solidity: function numPods() view returns(uint256) +func (_EigenPodManager *EigenPodManagerSession) NumPods() (*big.Int, error) { + return _EigenPodManager.Contract.NumPods(&_EigenPodManager.CallOpts) +} + +// NumPods is a free data retrieval call binding the contract method 0xa6a509be. +// +// Solidity: function numPods() view returns(uint256) +func (_EigenPodManager *EigenPodManagerCallerSession) NumPods() (*big.Int, error) { + return _EigenPodManager.Contract.NumPods(&_EigenPodManager.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_EigenPodManager *EigenPodManagerCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _EigenPodManager.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 (_EigenPodManager *EigenPodManagerSession) Owner() (common.Address, error) { + return _EigenPodManager.Contract.Owner(&_EigenPodManager.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_EigenPodManager *EigenPodManagerCallerSession) Owner() (common.Address, error) { + return _EigenPodManager.Contract.Owner(&_EigenPodManager.CallOpts) +} + +// 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) { + var out []interface{} + err := _EigenPodManager.contract.Call(opts, &out, "ownerToPod", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// 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) +} + +// 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) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_EigenPodManager *EigenPodManagerCaller) Paused(opts *bind.CallOpts, index uint8) (bool, error) { + var out []interface{} + err := _EigenPodManager.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 (_EigenPodManager *EigenPodManagerSession) Paused(index uint8) (bool, error) { + return _EigenPodManager.Contract.Paused(&_EigenPodManager.CallOpts, index) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_EigenPodManager *EigenPodManagerCallerSession) Paused(index uint8) (bool, error) { + return _EigenPodManager.Contract.Paused(&_EigenPodManager.CallOpts, index) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_EigenPodManager *EigenPodManagerCaller) Paused0(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _EigenPodManager.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 (_EigenPodManager *EigenPodManagerSession) Paused0() (*big.Int, error) { + return _EigenPodManager.Contract.Paused0(&_EigenPodManager.CallOpts) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_EigenPodManager *EigenPodManagerCallerSession) Paused0() (*big.Int, error) { + return _EigenPodManager.Contract.Paused0(&_EigenPodManager.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_EigenPodManager *EigenPodManagerCaller) PauserRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _EigenPodManager.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 (_EigenPodManager *EigenPodManagerSession) PauserRegistry() (common.Address, error) { + return _EigenPodManager.Contract.PauserRegistry(&_EigenPodManager.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_EigenPodManager *EigenPodManagerCallerSession) PauserRegistry() (common.Address, error) { + return _EigenPodManager.Contract.PauserRegistry(&_EigenPodManager.CallOpts) +} + +// PodOwnerShares is a free data retrieval call binding the contract method 0x60f4062b. +// +// Solidity: function podOwnerShares(address ) view returns(int256) +func (_EigenPodManager *EigenPodManagerCaller) PodOwnerShares(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _EigenPodManager.contract.Call(opts, &out, "podOwnerShares", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// PodOwnerShares is a free data retrieval call binding the contract method 0x60f4062b. +// +// Solidity: function podOwnerShares(address ) view returns(int256) +func (_EigenPodManager *EigenPodManagerSession) PodOwnerShares(arg0 common.Address) (*big.Int, error) { + return _EigenPodManager.Contract.PodOwnerShares(&_EigenPodManager.CallOpts, arg0) +} + +// PodOwnerShares is a free data retrieval call binding the contract method 0x60f4062b. +// +// Solidity: function podOwnerShares(address ) view returns(int256) +func (_EigenPodManager *EigenPodManagerCallerSession) PodOwnerShares(arg0 common.Address) (*big.Int, error) { + return _EigenPodManager.Contract.PodOwnerShares(&_EigenPodManager.CallOpts, arg0) +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_EigenPodManager *EigenPodManagerCaller) Slasher(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _EigenPodManager.contract.Call(opts, &out, "slasher") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_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 + } + + 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 (_EigenPodManager *EigenPodManagerSession) StrategyManager() (common.Address, error) { + return _EigenPodManager.Contract.StrategyManager(&_EigenPodManager.CallOpts) +} + +// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. +// +// Solidity: function strategyManager() view returns(address) +func (_EigenPodManager *EigenPodManagerCallerSession) StrategyManager() (common.Address, error) { + return _EigenPodManager.Contract.StrategyManager(&_EigenPodManager.CallOpts) +} + +// AddShares is a paid mutator transaction binding the contract method 0x0e81073c. +// +// 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) +} + +// AddShares is a paid mutator transaction binding the contract method 0x0e81073c. +// +// 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) +} + +// AddShares is a paid mutator transaction binding the contract method 0x0e81073c. +// +// 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) +} + +// CreatePod is a paid mutator transaction binding the contract method 0x84d81062. +// +// Solidity: function createPod() returns(address) +func (_EigenPodManager *EigenPodManagerTransactor) CreatePod(opts *bind.TransactOpts) (*types.Transaction, error) { + return _EigenPodManager.contract.Transact(opts, "createPod") +} + +// CreatePod is a paid mutator transaction binding the contract method 0x84d81062. +// +// Solidity: function createPod() returns(address) +func (_EigenPodManager *EigenPodManagerSession) CreatePod() (*types.Transaction, error) { + return _EigenPodManager.Contract.CreatePod(&_EigenPodManager.TransactOpts) +} + +// CreatePod is a paid mutator transaction binding the contract method 0x84d81062. +// +// Solidity: function createPod() returns(address) +func (_EigenPodManager *EigenPodManagerTransactorSession) CreatePod() (*types.Transaction, error) { + return _EigenPodManager.Contract.CreatePod(&_EigenPodManager.TransactOpts) +} + +// Initialize is a paid mutator transaction binding the contract method 0xcf756fdf. +// +// Solidity: function initialize(address _beaconChainOracle, address initialOwner, address _pauserRegistry, uint256 _initPausedStatus) returns() +func (_EigenPodManager *EigenPodManagerTransactor) Initialize(opts *bind.TransactOpts, _beaconChainOracle common.Address, initialOwner common.Address, _pauserRegistry common.Address, _initPausedStatus *big.Int) (*types.Transaction, error) { + return _EigenPodManager.contract.Transact(opts, "initialize", _beaconChainOracle, initialOwner, _pauserRegistry, _initPausedStatus) +} + +// Initialize is a paid mutator transaction binding the contract method 0xcf756fdf. +// +// Solidity: function initialize(address _beaconChainOracle, address initialOwner, address _pauserRegistry, uint256 _initPausedStatus) returns() +func (_EigenPodManager *EigenPodManagerSession) Initialize(_beaconChainOracle common.Address, initialOwner common.Address, _pauserRegistry common.Address, _initPausedStatus *big.Int) (*types.Transaction, error) { + return _EigenPodManager.Contract.Initialize(&_EigenPodManager.TransactOpts, _beaconChainOracle, initialOwner, _pauserRegistry, _initPausedStatus) +} + +// Initialize is a paid mutator transaction binding the contract method 0xcf756fdf. +// +// Solidity: function initialize(address _beaconChainOracle, address initialOwner, address _pauserRegistry, uint256 _initPausedStatus) returns() +func (_EigenPodManager *EigenPodManagerTransactorSession) Initialize(_beaconChainOracle common.Address, initialOwner common.Address, _pauserRegistry common.Address, _initPausedStatus *big.Int) (*types.Transaction, error) { + return _EigenPodManager.Contract.Initialize(&_EigenPodManager.TransactOpts, _beaconChainOracle, initialOwner, _pauserRegistry, _initPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_EigenPodManager *EigenPodManagerTransactor) Pause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _EigenPodManager.contract.Transact(opts, "pause", newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_EigenPodManager *EigenPodManagerSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _EigenPodManager.Contract.Pause(&_EigenPodManager.TransactOpts, newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_EigenPodManager *EigenPodManagerTransactorSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _EigenPodManager.Contract.Pause(&_EigenPodManager.TransactOpts, newPausedStatus) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_EigenPodManager *EigenPodManagerTransactor) PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) { + return _EigenPodManager.contract.Transact(opts, "pauseAll") +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_EigenPodManager *EigenPodManagerSession) PauseAll() (*types.Transaction, error) { + return _EigenPodManager.Contract.PauseAll(&_EigenPodManager.TransactOpts) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_EigenPodManager *EigenPodManagerTransactorSession) PauseAll() (*types.Transaction, error) { + return _EigenPodManager.Contract.PauseAll(&_EigenPodManager.TransactOpts) +} + +// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xc2c51c40. +// +// 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) +} + +// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xc2c51c40. +// +// 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) +} + +// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xc2c51c40. +// +// 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) +} + +// RemoveShares is a paid mutator transaction binding the contract method 0xbeffbb89. +// +// 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) +} + +// RemoveShares is a paid mutator transaction binding the contract method 0xbeffbb89. +// +// 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) +} + +// RemoveShares is a paid mutator transaction binding the contract method 0xbeffbb89. +// +// 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) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_EigenPodManager *EigenPodManagerTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _EigenPodManager.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_EigenPodManager *EigenPodManagerSession) RenounceOwnership() (*types.Transaction, error) { + return _EigenPodManager.Contract.RenounceOwnership(&_EigenPodManager.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_EigenPodManager *EigenPodManagerTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _EigenPodManager.Contract.RenounceOwnership(&_EigenPodManager.TransactOpts) +} + +// SetDenebForkTimestamp is a paid mutator transaction binding the contract method 0x463db038. +// +// Solidity: function setDenebForkTimestamp(uint64 newDenebForkTimestamp) returns() +func (_EigenPodManager *EigenPodManagerTransactor) SetDenebForkTimestamp(opts *bind.TransactOpts, newDenebForkTimestamp uint64) (*types.Transaction, error) { + return _EigenPodManager.contract.Transact(opts, "setDenebForkTimestamp", newDenebForkTimestamp) +} + +// SetDenebForkTimestamp is a paid mutator transaction binding the contract method 0x463db038. +// +// Solidity: function setDenebForkTimestamp(uint64 newDenebForkTimestamp) returns() +func (_EigenPodManager *EigenPodManagerSession) SetDenebForkTimestamp(newDenebForkTimestamp uint64) (*types.Transaction, error) { + return _EigenPodManager.Contract.SetDenebForkTimestamp(&_EigenPodManager.TransactOpts, newDenebForkTimestamp) +} + +// SetDenebForkTimestamp is a paid mutator transaction binding the contract method 0x463db038. +// +// Solidity: function setDenebForkTimestamp(uint64 newDenebForkTimestamp) returns() +func (_EigenPodManager *EigenPodManagerTransactorSession) SetDenebForkTimestamp(newDenebForkTimestamp uint64) (*types.Transaction, error) { + return _EigenPodManager.Contract.SetDenebForkTimestamp(&_EigenPodManager.TransactOpts, newDenebForkTimestamp) +} + +// 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() +func (_EigenPodManager *EigenPodManagerTransactor) Stake(opts *bind.TransactOpts, pubkey []byte, signature []byte, depositDataRoot [32]byte) (*types.Transaction, error) { + return _EigenPodManager.contract.Transact(opts, "stake", pubkey, signature, depositDataRoot) +} + +// Stake is a paid mutator transaction binding the contract method 0x9b4e4634. +// +// Solidity: function stake(bytes pubkey, bytes signature, bytes32 depositDataRoot) payable returns() +func (_EigenPodManager *EigenPodManagerSession) Stake(pubkey []byte, signature []byte, depositDataRoot [32]byte) (*types.Transaction, error) { + return _EigenPodManager.Contract.Stake(&_EigenPodManager.TransactOpts, pubkey, signature, depositDataRoot) +} + +// Stake is a paid mutator transaction binding the contract method 0x9b4e4634. +// +// Solidity: function stake(bytes pubkey, bytes signature, bytes32 depositDataRoot) payable returns() +func (_EigenPodManager *EigenPodManagerTransactorSession) Stake(pubkey []byte, signature []byte, depositDataRoot [32]byte) (*types.Transaction, error) { + return _EigenPodManager.Contract.Stake(&_EigenPodManager.TransactOpts, pubkey, signature, depositDataRoot) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_EigenPodManager *EigenPodManagerTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _EigenPodManager.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_EigenPodManager *EigenPodManagerSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _EigenPodManager.Contract.TransferOwnership(&_EigenPodManager.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_EigenPodManager *EigenPodManagerTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _EigenPodManager.Contract.TransferOwnership(&_EigenPodManager.TransactOpts, newOwner) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_EigenPodManager *EigenPodManagerTransactor) Unpause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _EigenPodManager.contract.Transact(opts, "unpause", newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_EigenPodManager *EigenPodManagerSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _EigenPodManager.Contract.Unpause(&_EigenPodManager.TransactOpts, newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_EigenPodManager *EigenPodManagerTransactorSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _EigenPodManager.Contract.Unpause(&_EigenPodManager.TransactOpts, newPausedStatus) +} + +// UpdateBeaconChainOracle is a paid mutator transaction binding the contract method 0xc1de3aef. +// +// Solidity: function updateBeaconChainOracle(address newBeaconChainOracle) returns() +func (_EigenPodManager *EigenPodManagerTransactor) UpdateBeaconChainOracle(opts *bind.TransactOpts, newBeaconChainOracle common.Address) (*types.Transaction, error) { + return _EigenPodManager.contract.Transact(opts, "updateBeaconChainOracle", newBeaconChainOracle) +} + +// UpdateBeaconChainOracle is a paid mutator transaction binding the contract method 0xc1de3aef. +// +// Solidity: function updateBeaconChainOracle(address newBeaconChainOracle) returns() +func (_EigenPodManager *EigenPodManagerSession) UpdateBeaconChainOracle(newBeaconChainOracle common.Address) (*types.Transaction, error) { + return _EigenPodManager.Contract.UpdateBeaconChainOracle(&_EigenPodManager.TransactOpts, newBeaconChainOracle) +} + +// UpdateBeaconChainOracle is a paid mutator transaction binding the contract method 0xc1de3aef. +// +// Solidity: function updateBeaconChainOracle(address newBeaconChainOracle) returns() +func (_EigenPodManager *EigenPodManagerTransactorSession) UpdateBeaconChainOracle(newBeaconChainOracle common.Address) (*types.Transaction, error) { + return _EigenPodManager.Contract.UpdateBeaconChainOracle(&_EigenPodManager.TransactOpts, newBeaconChainOracle) +} + +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x387b1300. +// +// 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) +} + +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x387b1300. +// +// 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) +} + +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x387b1300. +// +// 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) +} + +// 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. +type EigenPodManagerBeaconChainETHDepositedIterator struct { + Event *EigenPodManagerBeaconChainETHDeposited // Event containing the contract specifics 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 *EigenPodManagerBeaconChainETHDepositedIterator) 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(EigenPodManagerBeaconChainETHDeposited) + 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(EigenPodManagerBeaconChainETHDeposited) + 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 *EigenPodManagerBeaconChainETHDepositedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodManagerBeaconChainETHDepositedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodManagerBeaconChainETHDeposited represents a BeaconChainETHDeposited event raised by the EigenPodManager contract. +type EigenPodManagerBeaconChainETHDeposited struct { + PodOwner common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconChainETHDeposited is a free log retrieval operation binding the contract event 0x35a85cabc603f48abb2b71d9fbd8adea7c449d7f0be900ae7a2986ea369c3d0d. +// +// Solidity: event BeaconChainETHDeposited(address indexed podOwner, uint256 amount) +func (_EigenPodManager *EigenPodManagerFilterer) FilterBeaconChainETHDeposited(opts *bind.FilterOpts, podOwner []common.Address) (*EigenPodManagerBeaconChainETHDepositedIterator, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _EigenPodManager.contract.FilterLogs(opts, "BeaconChainETHDeposited", podOwnerRule) + if err != nil { + return nil, err + } + return &EigenPodManagerBeaconChainETHDepositedIterator{contract: _EigenPodManager.contract, event: "BeaconChainETHDeposited", logs: logs, sub: sub}, nil +} + +// WatchBeaconChainETHDeposited is a free log subscription operation binding the contract event 0x35a85cabc603f48abb2b71d9fbd8adea7c449d7f0be900ae7a2986ea369c3d0d. +// +// Solidity: event BeaconChainETHDeposited(address indexed podOwner, uint256 amount) +func (_EigenPodManager *EigenPodManagerFilterer) WatchBeaconChainETHDeposited(opts *bind.WatchOpts, sink chan<- *EigenPodManagerBeaconChainETHDeposited, podOwner []common.Address) (event.Subscription, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _EigenPodManager.contract.WatchLogs(opts, "BeaconChainETHDeposited", podOwnerRule) + 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(EigenPodManagerBeaconChainETHDeposited) + if err := _EigenPodManager.contract.UnpackLog(event, "BeaconChainETHDeposited", 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 +} + +// ParseBeaconChainETHDeposited is a log parse operation binding the contract event 0x35a85cabc603f48abb2b71d9fbd8adea7c449d7f0be900ae7a2986ea369c3d0d. +// +// Solidity: event BeaconChainETHDeposited(address indexed podOwner, uint256 amount) +func (_EigenPodManager *EigenPodManagerFilterer) ParseBeaconChainETHDeposited(log types.Log) (*EigenPodManagerBeaconChainETHDeposited, error) { + event := new(EigenPodManagerBeaconChainETHDeposited) + if err := _EigenPodManager.contract.UnpackLog(event, "BeaconChainETHDeposited", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodManagerBeaconChainETHWithdrawalCompletedIterator is returned from FilterBeaconChainETHWithdrawalCompleted and is used to iterate over the raw logs and unpacked data for BeaconChainETHWithdrawalCompleted events raised by the EigenPodManager contract. +type EigenPodManagerBeaconChainETHWithdrawalCompletedIterator struct { + Event *EigenPodManagerBeaconChainETHWithdrawalCompleted // Event containing the contract specifics 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 *EigenPodManagerBeaconChainETHWithdrawalCompletedIterator) 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(EigenPodManagerBeaconChainETHWithdrawalCompleted) + 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(EigenPodManagerBeaconChainETHWithdrawalCompleted) + 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 *EigenPodManagerBeaconChainETHWithdrawalCompletedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodManagerBeaconChainETHWithdrawalCompletedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodManagerBeaconChainETHWithdrawalCompleted represents a BeaconChainETHWithdrawalCompleted event raised by the EigenPodManager contract. +type EigenPodManagerBeaconChainETHWithdrawalCompleted struct { + PodOwner common.Address + Shares *big.Int + Nonce *big.Int + DelegatedAddress common.Address + Withdrawer common.Address + WithdrawalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconChainETHWithdrawalCompleted is a free log retrieval operation binding the contract event 0xa6bab1d55a361fcea2eee2bc9491e4f01e6cf333df03c9c4f2c144466429f7d6. +// +// Solidity: event BeaconChainETHWithdrawalCompleted(address indexed podOwner, uint256 shares, uint96 nonce, address delegatedAddress, address withdrawer, bytes32 withdrawalRoot) +func (_EigenPodManager *EigenPodManagerFilterer) FilterBeaconChainETHWithdrawalCompleted(opts *bind.FilterOpts, podOwner []common.Address) (*EigenPodManagerBeaconChainETHWithdrawalCompletedIterator, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _EigenPodManager.contract.FilterLogs(opts, "BeaconChainETHWithdrawalCompleted", podOwnerRule) + if err != nil { + return nil, err + } + return &EigenPodManagerBeaconChainETHWithdrawalCompletedIterator{contract: _EigenPodManager.contract, event: "BeaconChainETHWithdrawalCompleted", logs: logs, sub: sub}, nil +} + +// WatchBeaconChainETHWithdrawalCompleted is a free log subscription operation binding the contract event 0xa6bab1d55a361fcea2eee2bc9491e4f01e6cf333df03c9c4f2c144466429f7d6. +// +// Solidity: event BeaconChainETHWithdrawalCompleted(address indexed podOwner, uint256 shares, uint96 nonce, address delegatedAddress, address withdrawer, bytes32 withdrawalRoot) +func (_EigenPodManager *EigenPodManagerFilterer) WatchBeaconChainETHWithdrawalCompleted(opts *bind.WatchOpts, sink chan<- *EigenPodManagerBeaconChainETHWithdrawalCompleted, podOwner []common.Address) (event.Subscription, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _EigenPodManager.contract.WatchLogs(opts, "BeaconChainETHWithdrawalCompleted", podOwnerRule) + 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(EigenPodManagerBeaconChainETHWithdrawalCompleted) + if err := _EigenPodManager.contract.UnpackLog(event, "BeaconChainETHWithdrawalCompleted", 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 +} + +// ParseBeaconChainETHWithdrawalCompleted is a log parse operation binding the contract event 0xa6bab1d55a361fcea2eee2bc9491e4f01e6cf333df03c9c4f2c144466429f7d6. +// +// Solidity: event BeaconChainETHWithdrawalCompleted(address indexed podOwner, uint256 shares, uint96 nonce, address delegatedAddress, address withdrawer, bytes32 withdrawalRoot) +func (_EigenPodManager *EigenPodManagerFilterer) ParseBeaconChainETHWithdrawalCompleted(log types.Log) (*EigenPodManagerBeaconChainETHWithdrawalCompleted, error) { + event := new(EigenPodManagerBeaconChainETHWithdrawalCompleted) + if err := _EigenPodManager.contract.UnpackLog(event, "BeaconChainETHWithdrawalCompleted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodManagerBeaconOracleUpdatedIterator is returned from FilterBeaconOracleUpdated and is used to iterate over the raw logs and unpacked data for BeaconOracleUpdated events raised by the EigenPodManager contract. +type EigenPodManagerBeaconOracleUpdatedIterator struct { + Event *EigenPodManagerBeaconOracleUpdated // Event containing the contract specifics 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 *EigenPodManagerBeaconOracleUpdatedIterator) 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(EigenPodManagerBeaconOracleUpdated) + 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(EigenPodManagerBeaconOracleUpdated) + 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 *EigenPodManagerBeaconOracleUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodManagerBeaconOracleUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodManagerBeaconOracleUpdated represents a BeaconOracleUpdated event raised by the EigenPodManager contract. +type EigenPodManagerBeaconOracleUpdated struct { + NewOracleAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconOracleUpdated is a free log retrieval operation binding the contract event 0x08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f6. +// +// Solidity: event BeaconOracleUpdated(address indexed newOracleAddress) +func (_EigenPodManager *EigenPodManagerFilterer) FilterBeaconOracleUpdated(opts *bind.FilterOpts, newOracleAddress []common.Address) (*EigenPodManagerBeaconOracleUpdatedIterator, error) { + + var newOracleAddressRule []interface{} + for _, newOracleAddressItem := range newOracleAddress { + newOracleAddressRule = append(newOracleAddressRule, newOracleAddressItem) + } + + logs, sub, err := _EigenPodManager.contract.FilterLogs(opts, "BeaconOracleUpdated", newOracleAddressRule) + if err != nil { + return nil, err + } + return &EigenPodManagerBeaconOracleUpdatedIterator{contract: _EigenPodManager.contract, event: "BeaconOracleUpdated", logs: logs, sub: sub}, nil +} + +// WatchBeaconOracleUpdated is a free log subscription operation binding the contract event 0x08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f6. +// +// Solidity: event BeaconOracleUpdated(address indexed newOracleAddress) +func (_EigenPodManager *EigenPodManagerFilterer) WatchBeaconOracleUpdated(opts *bind.WatchOpts, sink chan<- *EigenPodManagerBeaconOracleUpdated, newOracleAddress []common.Address) (event.Subscription, error) { + + var newOracleAddressRule []interface{} + for _, newOracleAddressItem := range newOracleAddress { + newOracleAddressRule = append(newOracleAddressRule, newOracleAddressItem) + } + + logs, sub, err := _EigenPodManager.contract.WatchLogs(opts, "BeaconOracleUpdated", newOracleAddressRule) + 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(EigenPodManagerBeaconOracleUpdated) + if err := _EigenPodManager.contract.UnpackLog(event, "BeaconOracleUpdated", 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 +} + +// ParseBeaconOracleUpdated is a log parse operation binding the contract event 0x08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f6. +// +// Solidity: event BeaconOracleUpdated(address indexed newOracleAddress) +func (_EigenPodManager *EigenPodManagerFilterer) ParseBeaconOracleUpdated(log types.Log) (*EigenPodManagerBeaconOracleUpdated, error) { + event := new(EigenPodManagerBeaconOracleUpdated) + if err := _EigenPodManager.contract.UnpackLog(event, "BeaconOracleUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodManagerDenebForkTimestampUpdatedIterator is returned from FilterDenebForkTimestampUpdated and is used to iterate over the raw logs and unpacked data for DenebForkTimestampUpdated events raised by the EigenPodManager contract. +type EigenPodManagerDenebForkTimestampUpdatedIterator struct { + Event *EigenPodManagerDenebForkTimestampUpdated // Event containing the contract specifics 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 *EigenPodManagerDenebForkTimestampUpdatedIterator) 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(EigenPodManagerDenebForkTimestampUpdated) + 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(EigenPodManagerDenebForkTimestampUpdated) + 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 *EigenPodManagerDenebForkTimestampUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodManagerDenebForkTimestampUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodManagerDenebForkTimestampUpdated represents a DenebForkTimestampUpdated event raised by the EigenPodManager contract. +type EigenPodManagerDenebForkTimestampUpdated struct { + NewValue uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDenebForkTimestampUpdated is a free log retrieval operation binding the contract event 0x19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db. +// +// Solidity: event DenebForkTimestampUpdated(uint64 newValue) +func (_EigenPodManager *EigenPodManagerFilterer) FilterDenebForkTimestampUpdated(opts *bind.FilterOpts) (*EigenPodManagerDenebForkTimestampUpdatedIterator, error) { + + logs, sub, err := _EigenPodManager.contract.FilterLogs(opts, "DenebForkTimestampUpdated") + if err != nil { + return nil, err + } + return &EigenPodManagerDenebForkTimestampUpdatedIterator{contract: _EigenPodManager.contract, event: "DenebForkTimestampUpdated", logs: logs, sub: sub}, nil +} + +// WatchDenebForkTimestampUpdated is a free log subscription operation binding the contract event 0x19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db. +// +// Solidity: event DenebForkTimestampUpdated(uint64 newValue) +func (_EigenPodManager *EigenPodManagerFilterer) WatchDenebForkTimestampUpdated(opts *bind.WatchOpts, sink chan<- *EigenPodManagerDenebForkTimestampUpdated) (event.Subscription, error) { + + logs, sub, err := _EigenPodManager.contract.WatchLogs(opts, "DenebForkTimestampUpdated") + 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(EigenPodManagerDenebForkTimestampUpdated) + if err := _EigenPodManager.contract.UnpackLog(event, "DenebForkTimestampUpdated", 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 +} + +// ParseDenebForkTimestampUpdated is a log parse operation binding the contract event 0x19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db. +// +// Solidity: event DenebForkTimestampUpdated(uint64 newValue) +func (_EigenPodManager *EigenPodManagerFilterer) ParseDenebForkTimestampUpdated(log types.Log) (*EigenPodManagerDenebForkTimestampUpdated, error) { + event := new(EigenPodManagerDenebForkTimestampUpdated) + if err := _EigenPodManager.contract.UnpackLog(event, "DenebForkTimestampUpdated", 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 + + 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 *EigenPodManagerInitializedIterator) 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(EigenPodManagerInitialized) + 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(EigenPodManagerInitialized) + 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 *EigenPodManagerInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodManagerInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodManagerInitialized represents a Initialized event raised by the EigenPodManager contract. +type EigenPodManagerInitialized 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 (_EigenPodManager *EigenPodManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*EigenPodManagerInitializedIterator, error) { + + logs, sub, err := _EigenPodManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &EigenPodManagerInitializedIterator{contract: _EigenPodManager.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 (_EigenPodManager *EigenPodManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *EigenPodManagerInitialized) (event.Subscription, error) { + + logs, sub, err := _EigenPodManager.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(EigenPodManagerInitialized) + if err := _EigenPodManager.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 (_EigenPodManager *EigenPodManagerFilterer) ParseInitialized(log types.Log) (*EigenPodManagerInitialized, error) { + event := new(EigenPodManagerInitialized) + if err := _EigenPodManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodManagerOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the EigenPodManager contract. +type EigenPodManagerOwnershipTransferredIterator struct { + Event *EigenPodManagerOwnershipTransferred // Event containing the contract specifics 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 *EigenPodManagerOwnershipTransferredIterator) 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(EigenPodManagerOwnershipTransferred) + 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(EigenPodManagerOwnershipTransferred) + 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 *EigenPodManagerOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodManagerOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodManagerOwnershipTransferred represents a OwnershipTransferred event raised by the EigenPodManager contract. +type EigenPodManagerOwnershipTransferred 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 (_EigenPodManager *EigenPodManagerFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*EigenPodManagerOwnershipTransferredIterator, 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 := _EigenPodManager.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &EigenPodManagerOwnershipTransferredIterator{contract: _EigenPodManager.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 (_EigenPodManager *EigenPodManagerFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *EigenPodManagerOwnershipTransferred, 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 := _EigenPodManager.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(EigenPodManagerOwnershipTransferred) + if err := _EigenPodManager.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 (_EigenPodManager *EigenPodManagerFilterer) ParseOwnershipTransferred(log types.Log) (*EigenPodManagerOwnershipTransferred, error) { + event := new(EigenPodManagerOwnershipTransferred) + if err := _EigenPodManager.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodManagerPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the EigenPodManager contract. +type EigenPodManagerPausedIterator struct { + Event *EigenPodManagerPaused // Event containing the contract specifics 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 *EigenPodManagerPausedIterator) 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(EigenPodManagerPaused) + 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(EigenPodManagerPaused) + 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 *EigenPodManagerPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodManagerPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodManagerPaused represents a Paused event raised by the EigenPodManager contract. +type EigenPodManagerPaused 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 (_EigenPodManager *EigenPodManagerFilterer) FilterPaused(opts *bind.FilterOpts, account []common.Address) (*EigenPodManagerPausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _EigenPodManager.contract.FilterLogs(opts, "Paused", accountRule) + if err != nil { + return nil, err + } + return &EigenPodManagerPausedIterator{contract: _EigenPodManager.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 (_EigenPodManager *EigenPodManagerFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *EigenPodManagerPaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _EigenPodManager.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(EigenPodManagerPaused) + if err := _EigenPodManager.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 (_EigenPodManager *EigenPodManagerFilterer) ParsePaused(log types.Log) (*EigenPodManagerPaused, error) { + event := new(EigenPodManagerPaused) + if err := _EigenPodManager.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + 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 + + 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 *EigenPodManagerPodDeployedIterator) 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(EigenPodManagerPodDeployed) + 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(EigenPodManagerPodDeployed) + 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 *EigenPodManagerPodDeployedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodManagerPodDeployedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodManagerPodDeployed represents a PodDeployed event raised by the EigenPodManager contract. +type EigenPodManagerPodDeployed struct { + EigenPod common.Address + PodOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPodDeployed is a free log retrieval operation binding the contract event 0x21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a. +// +// Solidity: event PodDeployed(address indexed eigenPod, address indexed podOwner) +func (_EigenPodManager *EigenPodManagerFilterer) FilterPodDeployed(opts *bind.FilterOpts, eigenPod []common.Address, podOwner []common.Address) (*EigenPodManagerPodDeployedIterator, error) { + + var eigenPodRule []interface{} + for _, eigenPodItem := range eigenPod { + eigenPodRule = append(eigenPodRule, eigenPodItem) + } + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _EigenPodManager.contract.FilterLogs(opts, "PodDeployed", eigenPodRule, podOwnerRule) + if err != nil { + return nil, err + } + return &EigenPodManagerPodDeployedIterator{contract: _EigenPodManager.contract, event: "PodDeployed", logs: logs, sub: sub}, nil +} + +// WatchPodDeployed is a free log subscription operation binding the contract event 0x21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a. +// +// Solidity: event PodDeployed(address indexed eigenPod, address indexed podOwner) +func (_EigenPodManager *EigenPodManagerFilterer) WatchPodDeployed(opts *bind.WatchOpts, sink chan<- *EigenPodManagerPodDeployed, eigenPod []common.Address, podOwner []common.Address) (event.Subscription, error) { + + var eigenPodRule []interface{} + for _, eigenPodItem := range eigenPod { + eigenPodRule = append(eigenPodRule, eigenPodItem) + } + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _EigenPodManager.contract.WatchLogs(opts, "PodDeployed", eigenPodRule, podOwnerRule) + 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(EigenPodManagerPodDeployed) + if err := _EigenPodManager.contract.UnpackLog(event, "PodDeployed", 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 +} + +// ParsePodDeployed is a log parse operation binding the contract event 0x21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a. +// +// Solidity: event PodDeployed(address indexed eigenPod, address indexed podOwner) +func (_EigenPodManager *EigenPodManagerFilterer) ParsePodDeployed(log types.Log) (*EigenPodManagerPodDeployed, error) { + event := new(EigenPodManagerPodDeployed) + if err := _EigenPodManager.contract.UnpackLog(event, "PodDeployed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodManagerPodSharesUpdatedIterator is returned from FilterPodSharesUpdated and is used to iterate over the raw logs and unpacked data for PodSharesUpdated events raised by the EigenPodManager contract. +type EigenPodManagerPodSharesUpdatedIterator struct { + Event *EigenPodManagerPodSharesUpdated // Event containing the contract specifics 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 *EigenPodManagerPodSharesUpdatedIterator) 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(EigenPodManagerPodSharesUpdated) + 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(EigenPodManagerPodSharesUpdated) + 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 *EigenPodManagerPodSharesUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodManagerPodSharesUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodManagerPodSharesUpdated represents a PodSharesUpdated event raised by the EigenPodManager contract. +type EigenPodManagerPodSharesUpdated struct { + PodOwner common.Address + SharesDelta *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPodSharesUpdated is a free log retrieval operation binding the contract event 0x4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193. +// +// Solidity: event PodSharesUpdated(address indexed podOwner, int256 sharesDelta) +func (_EigenPodManager *EigenPodManagerFilterer) FilterPodSharesUpdated(opts *bind.FilterOpts, podOwner []common.Address) (*EigenPodManagerPodSharesUpdatedIterator, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _EigenPodManager.contract.FilterLogs(opts, "PodSharesUpdated", podOwnerRule) + if err != nil { + return nil, err + } + return &EigenPodManagerPodSharesUpdatedIterator{contract: _EigenPodManager.contract, event: "PodSharesUpdated", logs: logs, sub: sub}, nil +} + +// WatchPodSharesUpdated is a free log subscription operation binding the contract event 0x4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193. +// +// Solidity: event PodSharesUpdated(address indexed podOwner, int256 sharesDelta) +func (_EigenPodManager *EigenPodManagerFilterer) WatchPodSharesUpdated(opts *bind.WatchOpts, sink chan<- *EigenPodManagerPodSharesUpdated, podOwner []common.Address) (event.Subscription, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _EigenPodManager.contract.WatchLogs(opts, "PodSharesUpdated", podOwnerRule) + 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(EigenPodManagerPodSharesUpdated) + if err := _EigenPodManager.contract.UnpackLog(event, "PodSharesUpdated", 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 +} + +// ParsePodSharesUpdated is a log parse operation binding the contract event 0x4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193. +// +// Solidity: event PodSharesUpdated(address indexed podOwner, int256 sharesDelta) +func (_EigenPodManager *EigenPodManagerFilterer) ParsePodSharesUpdated(log types.Log) (*EigenPodManagerPodSharesUpdated, error) { + event := new(EigenPodManagerPodSharesUpdated) + if err := _EigenPodManager.contract.UnpackLog(event, "PodSharesUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodManagerUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the EigenPodManager contract. +type EigenPodManagerUnpausedIterator struct { + Event *EigenPodManagerUnpaused // Event containing the contract specifics 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 *EigenPodManagerUnpausedIterator) 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(EigenPodManagerUnpaused) + 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(EigenPodManagerUnpaused) + 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 *EigenPodManagerUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodManagerUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodManagerUnpaused represents a Unpaused event raised by the EigenPodManager contract. +type EigenPodManagerUnpaused 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 (_EigenPodManager *EigenPodManagerFilterer) FilterUnpaused(opts *bind.FilterOpts, account []common.Address) (*EigenPodManagerUnpausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _EigenPodManager.contract.FilterLogs(opts, "Unpaused", accountRule) + if err != nil { + return nil, err + } + return &EigenPodManagerUnpausedIterator{contract: _EigenPodManager.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 (_EigenPodManager *EigenPodManagerFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *EigenPodManagerUnpaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _EigenPodManager.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(EigenPodManagerUnpaused) + if err := _EigenPodManager.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 (_EigenPodManager *EigenPodManagerFilterer) ParseUnpaused(log types.Log) (*EigenPodManagerUnpaused, error) { + event := new(EigenPodManagerUnpaused) + if err := _EigenPodManager.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/EigenPodManager/tmp.abi b/pkg/bindings/EigenPodManager/tmp.abi new file mode 100644 index 000000000..63d7a734d --- /dev/null +++ b/pkg/bindings/EigenPodManager/tmp.abi @@ -0,0 +1,757 @@ +[ + { + "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": "_slasher", + "type": "address", + "internalType": "contract ISlasher" + }, + { + "name": "_delegationManager", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "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": "contract IStrategy" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "beaconChainOracle", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBeaconChainOracle" + } + ], + "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": "denebForkTimestamp", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "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": "getBlockRootAtTimestamp", + "inputs": [ + { + "name": "timestamp", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "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": "_beaconChainOracle", + "type": "address", + "internalType": "contract IBeaconChainOracle" + }, + { + "name": "initialOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "_pauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + }, + { + "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": "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": "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": "setDenebForkTimestamp", + "inputs": [ + { + "name": "newDenebForkTimestamp", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "slasher", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ISlasher" + } + ], + "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": "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": "updateBeaconChainOracle", + "inputs": [ + { + "name": "newBeaconChainOracle", + "type": "address", + "internalType": "contract IBeaconChainOracle" + } + ], + "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": "BeaconOracleUpdated", + "inputs": [ + { + "name": "newOracleAddress", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DenebForkTimestampUpdated", + "inputs": [ + { + "name": "newValue", + "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": "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": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "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 + } +] diff --git a/pkg/bindings/EigenPodManager/tmp.bin b/pkg/bindings/EigenPodManager/tmp.bin new file mode 100644 index 000000000..26eb55e5e --- /dev/null +++ b/pkg/bindings/EigenPodManager/tmp.bin @@ -0,0 +1 @@ +0x6101206040523480156200001257600080fd5b50604051620034e7380380620034e783398101604081905262000035916200014b565b6001600160a01b0380861660805280851660a05280841660c05280831660e0528116610100526200006562000070565b5050505050620001cb565b600054610100900460ff1615620000dd5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000130576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014857600080fd5b50565b600080600080600060a086880312156200016457600080fd5b8551620001718162000132565b6020870151909550620001848162000132565b6040870151909450620001978162000132565b6060870151909350620001aa8162000132565b6080870151909250620001bd8162000132565b809150509295509295909350565b60805160a05160c05160e051610100516132a66200024160003960008181610636015281816106e001528181610b0e015281816113e70152818161187c015261196c01526000610542015260006102e601526000818161027a01528181611366015261203a0152600061041401526132a66000f3fe6080604052600436106101ee5760003560e01c80638da5cb5b1161010d578063c052bd61116100a0578063d1c64cc91161006f578063d1c64cc914610604578063ea4d3c9b14610624578063f2fde38b14610658578063f6848d2414610678578063fabc1cbc146106b357600080fd5b8063c052bd6114610584578063c1de3aef146105a4578063c2c51c40146105c4578063cf756fdf146105e457600080fd5b8063a38406a3116100dc578063a38406a3146104fa578063a6a509be1461051a578063b134427114610530578063beffbb891461056457600080fd5b80638da5cb5b1461046b5780639104c319146104895780639b4e4634146104b15780639ba06275146104c457600080fd5b8063595c6a6711610185578063715018a611610154578063715018a6146103ed57806374cdd7981461040257806384d8106214610436578063886f11951461044b57600080fd5b8063595c6a67146103565780635ac86ab71461036b5780635c975abb146103ab57806360f4062b146103c057600080fd5b8063387b1300116101c1578063387b1300146102b457806339b70e38146102d457806344e71c8014610308578063463db0381461033657600080fd5b80630e81073c146101f357806310d67a2f14610226578063136439dd14610248578063292b7b2b14610268575b600080fd5b3480156101ff57600080fd5b5061021361020e366004612406565b6106d3565b6040519081526020015b60405180910390f35b34801561023257600080fd5b50610246610241366004612432565b610911565b005b34801561025457600080fd5b5061024661026336600461244f565b6109c4565b34801561027457600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161021d565b3480156102c057600080fd5b506102466102cf366004612468565b610b03565b3480156102e057600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561031457600080fd5b5061031d610ea1565b60405167ffffffffffffffff909116815260200161021d565b34801561034257600080fd5b506102466103513660046124a9565b610eca565b34801561036257600080fd5b50610246611056565b34801561037757600080fd5b5061039b6103863660046124d3565b606654600160ff9092169190911b9081161490565b604051901515815260200161021d565b3480156103b757600080fd5b50606654610213565b3480156103cc57600080fd5b506102136103db366004612432565b609b6020526000908152604090205481565b3480156103f957600080fd5b5061024661111d565b34801561040e57600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561044257600080fd5b5061029c611131565b34801561045757600080fd5b5060655461029c906001600160a01b031681565b34801561047757600080fd5b506033546001600160a01b031661029c565b34801561049557600080fd5b5061029c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102466104bf36600461253f565b61121b565b3480156104d057600080fd5b5061029c6104df366004612432565b6098602052600090815260409020546001600160a01b031681565b34801561050657600080fd5b5061029c610515366004612432565b61130a565b34801561052657600080fd5b5061021360995481565b34801561053c57600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561057057600080fd5b5061024661057f366004612406565b6113dc565b34801561059057600080fd5b5060975461029c906001600160a01b031681565b3480156105b057600080fd5b506102466105bf366004612432565b6115f3565b3480156105d057600080fd5b506102466105df366004612406565b611604565b3480156105f057600080fd5b506102466105ff3660046125b3565b611a07565b34801561061057600080fd5b5061021361061f3660046124a9565b611b30565b34801561063057600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561066457600080fd5b50610246610673366004612432565b611c3b565b34801561068457600080fd5b5061039b610693366004612432565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156106bf57600080fd5b506102466106ce36600461244f565b611cb1565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107265760405162461bcd60e51b815260040161071d90612604565b60405180910390fd5b6001600160a01b0383166107a25760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f2061646472657373000000000000606482015260840161071d565b60008212156108105760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b606482015260840161071d565b61081e633b9aca0083612678565b156108915760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e74000000606482015260840161071d565b6001600160a01b0383166000908152609b6020526040812054906108b584836126a2565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020613231833981519152906108f49087815260200190565b60405180910390a26109068282611e0d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906126e3565b6001600160a01b0316336001600160a01b0316146109b85760405162461bcd60e51b815260040161071d90612700565b6109c181611e4f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a30919061274a565b610a4c5760405162461bcd60e51b815260040161071d9061276c565b60665481811614610ac55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b4b5760405162461bcd60e51b815260040161071d90612604565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526047602482015260008051602061325183398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a40161071d565b6001600160a01b038216610c425760405162461bcd60e51b815260206004820152604a602482015260008051602061325183398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a40161071d565b6000811215610cb15760405162461bcd60e51b8152602060048201526041602482015260008051602061325183398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a40161071d565b610cbf633b9aca0082612678565b15610d335760405162461bcd60e51b815260206004820152604a602482015260008051602061325183398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a40161071d565b6001600160a01b0383166000908152609b602052604081205490811215610e26576000610d5f826127b4565b905080831115610dc4576001600160a01b0385166000908152609b6020526040812055610d8c81846127d1565b9250846001600160a01b031660008051602061323183398151915282604051610db791815260200190565b60405180910390a2610e24565b6001600160a01b0385166000908152609b602052604081208054859290610dec9084906126a2565b90915550506040518381526001600160a01b038616906000805160206132318339815191529060200160405180910390a25050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b5050505050505050565b609c5460009067ffffffffffffffff1680610ec55767ffffffffffffffff91505090565b919050565b610ed2611f46565b67ffffffffffffffff8116610f645760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f7420736574206e657744656e6562466f726b546960648201526b06d657374616d7020746f20360a41b608482015260a40161071d565b609c5467ffffffffffffffff16156110005760405162461bcd60e51b815260206004820152605360248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f74207365742064656e6562466f726b54696d657360648201527274616d70206d6f7265207468616e206f6e636560681b608482015260a40161071d565b609c805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527f19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db9060200160405180910390a150565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561109e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c2919061274a565b6110de5760405162461bcd60e51b815260040161071d9061276c565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611125611f46565b61112f6000611fa0565b565b6066546000908190600190811614156111885760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03161561120a5760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b606482015260840161071d565b6000611214611ff2565b9250505090565b606654600090600190811614156112705760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03168061129957611296611ff2565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906112cf908b908b908b908b908b90600401612811565b6000604051808303818588803b1580156112e857600080fd5b505af11580156112fc573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061090b576113d5836001600160a01b031660001b60405180610940016040528061090e815260200161292361090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526113ba9291602001612886565b60405160208183030381529060405280519060200120612157565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114245760405162461bcd60e51b815260040161071d90612604565b600081121561149b5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e65676174697665000000000000000000606482015260840161071d565b6114a9633b9aca0082612678565b1561151e576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e74606482015260840161071d565b6001600160a01b0382166000908152609b602052604081205461154290839061289b565b905060008112156115d35760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a40161071d565b6001600160a01b039092166000908152609b602052604090209190915550565b6115fb611f46565b6109c1816121b3565b6001600160a01b03808316600090815260986020526040902054839116331461167f5760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b606482015260840161071d565b600260c95414156116d25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b600260c9556001600160a01b03831661176e5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a40161071d565b61177c633b9aca00836128da565b156118155760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a40161071d565b6001600160a01b0383166000908152609b60205260408120549061183984836126a2565b6001600160a01b0386166000908152609b602052604081208290559091506118618383611e0d565b905080156119c957600081121561192c576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118c0856127b4565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561190f57600080fd5b505af1158015611923573d6000803e3d6000fd5b505050506119c9565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156119b057600080fd5b505af11580156119c4573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020613231833981519152866040516119f291815260200190565b60405180910390a25050600160c95550505050565b600054610100900460ff1615808015611a275750600054600160ff909116105b80611a415750303b158015611a41575060005460ff166001145b611aa45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161071d565b6000805460ff191660011790558015611ac7576000805461ff0019166101001790555b611ad0856121b3565b611ad984611fa0565b611ae383836121fd565b8015611b29576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60975460405163321accf960e11b815267ffffffffffffffff8316600482015260009182916001600160a01b039091169063643599f290602401602060405180830381865afa158015611b87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bab91906128ee565b90508061090b5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e676574426c6f636b526f6f744174546960448201527f6d657374616d703a20737461746520726f6f742061742074696d657374616d70606482015271081b9bdd081e595d08199a5b985b1a5e995960721b608482015260a40161071d565b611c43611f46565b6001600160a01b038116611ca85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b6109c181611fa0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2891906126e3565b6001600160a01b0316336001600160a01b031614611d585760405162461bcd60e51b815260040161071d90612700565b606654198119606654191614611dd65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610af8565b6000808313611e2d5760008213611e265750600061090b565b508061090b565b60008213611e4557611e3e836127b4565b905061090b565b611e3e838361289b565b6001600160a01b038116611edd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161071d565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461112f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060996000815461200390612907565b9091555060408051610940810190915261090e8082526000916120a291839133916129236020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f198184030181529082905261208e9291602001612886565b6040516020818303038152906040526122e7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156120e657600080fd5b505af11580156120fa573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000906113d5565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f690600090a250565b6065546001600160a01b031615801561221e57506001600160a01b03821615155b6122a05760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26122e382611e4f565b5050565b6000808447101561233a5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161071d565b82516123885760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161071d565b8383516020850187f590506001600160a01b0381166123e95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161071d565b949350505050565b6001600160a01b03811681146109c157600080fd5b6000806040838503121561241957600080fd5b8235612424816123f1565b946020939093013593505050565b60006020828403121561244457600080fd5b81356113d5816123f1565b60006020828403121561246157600080fd5b5035919050565b60008060006060848603121561247d57600080fd5b8335612488816123f1565b92506020840135612498816123f1565b929592945050506040919091013590565b6000602082840312156124bb57600080fd5b813567ffffffffffffffff811681146113d557600080fd5b6000602082840312156124e557600080fd5b813560ff811681146113d557600080fd5b60008083601f84011261250857600080fd5b50813567ffffffffffffffff81111561252057600080fd5b60208301915083602082850101111561253857600080fd5b9250929050565b60008060008060006060868803121561255757600080fd5b853567ffffffffffffffff8082111561256f57600080fd5b61257b89838a016124f6565b9097509550602088013591508082111561259457600080fd5b506125a1888289016124f6565b96999598509660400135949350505050565b600080600080608085870312156125c957600080fd5b84356125d4816123f1565b935060208501356125e4816123f1565b925060408501356125f4816123f1565b9396929550929360600135925050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261268757612687612662565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b03849003851316156126c4576126c461268c565b600160ff1b83900384128116156126dd576126dd61268c565b50500190565b6000602082840312156126f557600080fd5b81516113d5816123f1565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561275c57600080fd5b815180151581146113d557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b8214156127ca576127ca61268c565b5060000390565b6000828210156127e3576127e361268c565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006128256060830187896127e8565b82810360208401526128388186886127e8565b9150508260408301529695505050505050565b6000815160005b8181101561286c5760208185018101518683015201612852565b8181111561287b576000828601525b509290920192915050565b60006123e9612895838661284b565b8461284b565b60008083128015600160ff1b8501841216156128b9576128b961268c565b6001600160ff1b03840183138116156128d4576128d461268c565b50500390565b6000826128e9576128e9612662565b500790565b60006020828403121561290057600080fd5b5051919050565b600060001982141561291b5761291b61268c565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a2646970667358221220ef9d154f27412f8804701de43ed742e1e51f046ef0dd3d1937547afcbb00037164736f6c634300080c0033 diff --git a/pkg/bindings/EigenPodManagerStorage/binding.go b/pkg/bindings/EigenPodManagerStorage/binding.go new file mode 100644 index 000000000..928919851 --- /dev/null +++ b/pkg/bindings/EigenPodManagerStorage/binding.go @@ -0,0 +1,2255 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package EigenPodManagerStorage + +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 +) + +// 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\":\"beaconChainOracle\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBeaconChainOracle\"}],\"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\":\"denebForkTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"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\":\"getBlockRootAtTimestamp\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"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\":\"setDenebForkTimestamp\",\"inputs\":[{\"name\":\"newDenebForkTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"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\":\"updateBeaconChainOracle\",\"inputs\":[{\"name\":\"newBeaconChainOracle\",\"type\":\"address\",\"internalType\":\"contractIBeaconChainOracle\"}],\"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\":\"BeaconOracleUpdated\",\"inputs\":[{\"name\":\"newOracleAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DenebForkTimestampUpdated\",\"inputs\":[{\"name\":\"newValue\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"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}]", +} + +// EigenPodManagerStorageABI is the input ABI used to generate the binding from. +// Deprecated: Use EigenPodManagerStorageMetaData.ABI instead. +var EigenPodManagerStorageABI = EigenPodManagerStorageMetaData.ABI + +// EigenPodManagerStorage is an auto generated Go binding around an Ethereum contract. +type EigenPodManagerStorage struct { + EigenPodManagerStorageCaller // Read-only binding to the contract + EigenPodManagerStorageTransactor // Write-only binding to the contract + EigenPodManagerStorageFilterer // Log filterer for contract events +} + +// EigenPodManagerStorageCaller is an auto generated read-only Go binding around an Ethereum contract. +type EigenPodManagerStorageCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// EigenPodManagerStorageTransactor is an auto generated write-only Go binding around an Ethereum contract. +type EigenPodManagerStorageTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// EigenPodManagerStorageFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type EigenPodManagerStorageFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// EigenPodManagerStorageSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type EigenPodManagerStorageSession struct { + Contract *EigenPodManagerStorage // 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 +} + +// EigenPodManagerStorageCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type EigenPodManagerStorageCallerSession struct { + Contract *EigenPodManagerStorageCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// EigenPodManagerStorageTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type EigenPodManagerStorageTransactorSession struct { + Contract *EigenPodManagerStorageTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// EigenPodManagerStorageRaw is an auto generated low-level Go binding around an Ethereum contract. +type EigenPodManagerStorageRaw struct { + Contract *EigenPodManagerStorage // Generic contract binding to access the raw methods on +} + +// EigenPodManagerStorageCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type EigenPodManagerStorageCallerRaw struct { + Contract *EigenPodManagerStorageCaller // Generic read-only contract binding to access the raw methods on +} + +// EigenPodManagerStorageTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type EigenPodManagerStorageTransactorRaw struct { + Contract *EigenPodManagerStorageTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewEigenPodManagerStorage creates a new instance of EigenPodManagerStorage, bound to a specific deployed contract. +func NewEigenPodManagerStorage(address common.Address, backend bind.ContractBackend) (*EigenPodManagerStorage, error) { + contract, err := bindEigenPodManagerStorage(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &EigenPodManagerStorage{EigenPodManagerStorageCaller: EigenPodManagerStorageCaller{contract: contract}, EigenPodManagerStorageTransactor: EigenPodManagerStorageTransactor{contract: contract}, EigenPodManagerStorageFilterer: EigenPodManagerStorageFilterer{contract: contract}}, nil +} + +// NewEigenPodManagerStorageCaller creates a new read-only instance of EigenPodManagerStorage, bound to a specific deployed contract. +func NewEigenPodManagerStorageCaller(address common.Address, caller bind.ContractCaller) (*EigenPodManagerStorageCaller, error) { + contract, err := bindEigenPodManagerStorage(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &EigenPodManagerStorageCaller{contract: contract}, nil +} + +// NewEigenPodManagerStorageTransactor creates a new write-only instance of EigenPodManagerStorage, bound to a specific deployed contract. +func NewEigenPodManagerStorageTransactor(address common.Address, transactor bind.ContractTransactor) (*EigenPodManagerStorageTransactor, error) { + contract, err := bindEigenPodManagerStorage(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &EigenPodManagerStorageTransactor{contract: contract}, nil +} + +// NewEigenPodManagerStorageFilterer creates a new log filterer instance of EigenPodManagerStorage, bound to a specific deployed contract. +func NewEigenPodManagerStorageFilterer(address common.Address, filterer bind.ContractFilterer) (*EigenPodManagerStorageFilterer, error) { + contract, err := bindEigenPodManagerStorage(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &EigenPodManagerStorageFilterer{contract: contract}, nil +} + +// bindEigenPodManagerStorage binds a generic wrapper to an already deployed contract. +func bindEigenPodManagerStorage(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := EigenPodManagerStorageMetaData.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 (_EigenPodManagerStorage *EigenPodManagerStorageRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _EigenPodManagerStorage.Contract.EigenPodManagerStorageCaller.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 (_EigenPodManagerStorage *EigenPodManagerStorageRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _EigenPodManagerStorage.Contract.EigenPodManagerStorageTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_EigenPodManagerStorage *EigenPodManagerStorageRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _EigenPodManagerStorage.Contract.EigenPodManagerStorageTransactor.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 (_EigenPodManagerStorage *EigenPodManagerStorageCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _EigenPodManagerStorage.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 (_EigenPodManagerStorage *EigenPodManagerStorageTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _EigenPodManagerStorage.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_EigenPodManagerStorage *EigenPodManagerStorageTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _EigenPodManagerStorage.Contract.contract.Transact(opts, method, params...) +} + +// BeaconChainETHStrategy is a free data retrieval call binding the contract method 0x9104c319. +// +// Solidity: function beaconChainETHStrategy() view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) BeaconChainETHStrategy(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _EigenPodManagerStorage.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 (_EigenPodManagerStorage *EigenPodManagerStorageSession) BeaconChainETHStrategy() (common.Address, error) { + return _EigenPodManagerStorage.Contract.BeaconChainETHStrategy(&_EigenPodManagerStorage.CallOpts) +} + +// BeaconChainETHStrategy is a free data retrieval call binding the contract method 0x9104c319. +// +// Solidity: function beaconChainETHStrategy() view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) BeaconChainETHStrategy() (common.Address, error) { + return _EigenPodManagerStorage.Contract.BeaconChainETHStrategy(&_EigenPodManagerStorage.CallOpts) +} + +// BeaconChainOracle is a free data retrieval call binding the contract method 0xc052bd61. +// +// Solidity: function beaconChainOracle() view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) BeaconChainOracle(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _EigenPodManagerStorage.contract.Call(opts, &out, "beaconChainOracle") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// BeaconChainOracle is a free data retrieval call binding the contract method 0xc052bd61. +// +// Solidity: function beaconChainOracle() view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageSession) BeaconChainOracle() (common.Address, error) { + return _EigenPodManagerStorage.Contract.BeaconChainOracle(&_EigenPodManagerStorage.CallOpts) +} + +// BeaconChainOracle is a free data retrieval call binding the contract method 0xc052bd61. +// +// Solidity: function beaconChainOracle() view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) BeaconChainOracle() (common.Address, error) { + return _EigenPodManagerStorage.Contract.BeaconChainOracle(&_EigenPodManagerStorage.CallOpts) +} + +// DelegationManager is a free data retrieval call binding the contract method 0xea4d3c9b. +// +// Solidity: function delegationManager() view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) DelegationManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _EigenPodManagerStorage.contract.Call(opts, &out, "delegationManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// DelegationManager is a free data retrieval call binding the contract method 0xea4d3c9b. +// +// Solidity: function delegationManager() view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageSession) DelegationManager() (common.Address, error) { + return _EigenPodManagerStorage.Contract.DelegationManager(&_EigenPodManagerStorage.CallOpts) +} + +// DelegationManager is a free data retrieval call binding the contract method 0xea4d3c9b. +// +// Solidity: function delegationManager() view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) DelegationManager() (common.Address, error) { + return _EigenPodManagerStorage.Contract.DelegationManager(&_EigenPodManagerStorage.CallOpts) +} + +// DenebForkTimestamp is a free data retrieval call binding the contract method 0x44e71c80. +// +// Solidity: function denebForkTimestamp() view returns(uint64) +func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) DenebForkTimestamp(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _EigenPodManagerStorage.contract.Call(opts, &out, "denebForkTimestamp") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// DenebForkTimestamp is a free data retrieval call binding the contract method 0x44e71c80. +// +// Solidity: function denebForkTimestamp() view returns(uint64) +func (_EigenPodManagerStorage *EigenPodManagerStorageSession) DenebForkTimestamp() (uint64, error) { + return _EigenPodManagerStorage.Contract.DenebForkTimestamp(&_EigenPodManagerStorage.CallOpts) +} + +// DenebForkTimestamp is a free data retrieval call binding the contract method 0x44e71c80. +// +// Solidity: function denebForkTimestamp() view returns(uint64) +func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) DenebForkTimestamp() (uint64, error) { + return _EigenPodManagerStorage.Contract.DenebForkTimestamp(&_EigenPodManagerStorage.CallOpts) +} + +// EigenPodBeacon is a free data retrieval call binding the contract method 0x292b7b2b. +// +// Solidity: function eigenPodBeacon() view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) EigenPodBeacon(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _EigenPodManagerStorage.contract.Call(opts, &out, "eigenPodBeacon") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EigenPodBeacon is a free data retrieval call binding the contract method 0x292b7b2b. +// +// Solidity: function eigenPodBeacon() view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageSession) EigenPodBeacon() (common.Address, error) { + return _EigenPodManagerStorage.Contract.EigenPodBeacon(&_EigenPodManagerStorage.CallOpts) +} + +// EigenPodBeacon is a free data retrieval call binding the contract method 0x292b7b2b. +// +// Solidity: function eigenPodBeacon() view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) EigenPodBeacon() (common.Address, error) { + return _EigenPodManagerStorage.Contract.EigenPodBeacon(&_EigenPodManagerStorage.CallOpts) +} + +// EthPOS is a free data retrieval call binding the contract method 0x74cdd798. +// +// Solidity: function ethPOS() view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) EthPOS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _EigenPodManagerStorage.contract.Call(opts, &out, "ethPOS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EthPOS is a free data retrieval call binding the contract method 0x74cdd798. +// +// Solidity: function ethPOS() view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageSession) EthPOS() (common.Address, error) { + return _EigenPodManagerStorage.Contract.EthPOS(&_EigenPodManagerStorage.CallOpts) +} + +// EthPOS is a free data retrieval call binding the contract method 0x74cdd798. +// +// Solidity: function ethPOS() view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) EthPOS() (common.Address, error) { + return _EigenPodManagerStorage.Contract.EthPOS(&_EigenPodManagerStorage.CallOpts) +} + +// GetBlockRootAtTimestamp is a free data retrieval call binding the contract method 0xd1c64cc9. +// +// Solidity: function getBlockRootAtTimestamp(uint64 timestamp) view returns(bytes32) +func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) GetBlockRootAtTimestamp(opts *bind.CallOpts, timestamp uint64) ([32]byte, error) { + var out []interface{} + err := _EigenPodManagerStorage.contract.Call(opts, &out, "getBlockRootAtTimestamp", timestamp) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetBlockRootAtTimestamp is a free data retrieval call binding the contract method 0xd1c64cc9. +// +// Solidity: function getBlockRootAtTimestamp(uint64 timestamp) view returns(bytes32) +func (_EigenPodManagerStorage *EigenPodManagerStorageSession) GetBlockRootAtTimestamp(timestamp uint64) ([32]byte, error) { + return _EigenPodManagerStorage.Contract.GetBlockRootAtTimestamp(&_EigenPodManagerStorage.CallOpts, timestamp) +} + +// GetBlockRootAtTimestamp is a free data retrieval call binding the contract method 0xd1c64cc9. +// +// Solidity: function getBlockRootAtTimestamp(uint64 timestamp) view returns(bytes32) +func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) GetBlockRootAtTimestamp(timestamp uint64) ([32]byte, error) { + return _EigenPodManagerStorage.Contract.GetBlockRootAtTimestamp(&_EigenPodManagerStorage.CallOpts, timestamp) +} + +// GetPod is a free data retrieval call binding the contract method 0xa38406a3. +// +// Solidity: function getPod(address podOwner) view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) GetPod(opts *bind.CallOpts, podOwner common.Address) (common.Address, error) { + var out []interface{} + err := _EigenPodManagerStorage.contract.Call(opts, &out, "getPod", podOwner) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetPod is a free data retrieval call binding the contract method 0xa38406a3. +// +// Solidity: function getPod(address podOwner) view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageSession) GetPod(podOwner common.Address) (common.Address, error) { + return _EigenPodManagerStorage.Contract.GetPod(&_EigenPodManagerStorage.CallOpts, podOwner) +} + +// GetPod is a free data retrieval call binding the contract method 0xa38406a3. +// +// Solidity: function getPod(address podOwner) view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) GetPod(podOwner common.Address) (common.Address, error) { + return _EigenPodManagerStorage.Contract.GetPod(&_EigenPodManagerStorage.CallOpts, podOwner) +} + +// HasPod is a free data retrieval call binding the contract method 0xf6848d24. +// +// Solidity: function hasPod(address podOwner) view returns(bool) +func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) HasPod(opts *bind.CallOpts, podOwner common.Address) (bool, error) { + var out []interface{} + err := _EigenPodManagerStorage.contract.Call(opts, &out, "hasPod", podOwner) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasPod is a free data retrieval call binding the contract method 0xf6848d24. +// +// Solidity: function hasPod(address podOwner) view returns(bool) +func (_EigenPodManagerStorage *EigenPodManagerStorageSession) HasPod(podOwner common.Address) (bool, error) { + return _EigenPodManagerStorage.Contract.HasPod(&_EigenPodManagerStorage.CallOpts, podOwner) +} + +// HasPod is a free data retrieval call binding the contract method 0xf6848d24. +// +// Solidity: function hasPod(address podOwner) view returns(bool) +func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) HasPod(podOwner common.Address) (bool, error) { + return _EigenPodManagerStorage.Contract.HasPod(&_EigenPodManagerStorage.CallOpts, podOwner) +} + +// NumPods is a free data retrieval call binding the contract method 0xa6a509be. +// +// Solidity: function numPods() view returns(uint256) +func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) NumPods(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _EigenPodManagerStorage.contract.Call(opts, &out, "numPods") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// NumPods is a free data retrieval call binding the contract method 0xa6a509be. +// +// Solidity: function numPods() view returns(uint256) +func (_EigenPodManagerStorage *EigenPodManagerStorageSession) NumPods() (*big.Int, error) { + return _EigenPodManagerStorage.Contract.NumPods(&_EigenPodManagerStorage.CallOpts) +} + +// NumPods is a free data retrieval call binding the contract method 0xa6a509be. +// +// Solidity: function numPods() view returns(uint256) +func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) NumPods() (*big.Int, error) { + return _EigenPodManagerStorage.Contract.NumPods(&_EigenPodManagerStorage.CallOpts) +} + +// 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) { + var out []interface{} + err := _EigenPodManagerStorage.contract.Call(opts, &out, "ownerToPod", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// 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) +} + +// 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) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) Paused(opts *bind.CallOpts, index uint8) (bool, error) { + var out []interface{} + err := _EigenPodManagerStorage.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 (_EigenPodManagerStorage *EigenPodManagerStorageSession) Paused(index uint8) (bool, error) { + return _EigenPodManagerStorage.Contract.Paused(&_EigenPodManagerStorage.CallOpts, index) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) Paused(index uint8) (bool, error) { + return _EigenPodManagerStorage.Contract.Paused(&_EigenPodManagerStorage.CallOpts, index) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) Paused0(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _EigenPodManagerStorage.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 (_EigenPodManagerStorage *EigenPodManagerStorageSession) Paused0() (*big.Int, error) { + return _EigenPodManagerStorage.Contract.Paused0(&_EigenPodManagerStorage.CallOpts) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) Paused0() (*big.Int, error) { + return _EigenPodManagerStorage.Contract.Paused0(&_EigenPodManagerStorage.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) PauserRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _EigenPodManagerStorage.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 (_EigenPodManagerStorage *EigenPodManagerStorageSession) PauserRegistry() (common.Address, error) { + return _EigenPodManagerStorage.Contract.PauserRegistry(&_EigenPodManagerStorage.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) PauserRegistry() (common.Address, error) { + return _EigenPodManagerStorage.Contract.PauserRegistry(&_EigenPodManagerStorage.CallOpts) +} + +// PodOwnerShares is a free data retrieval call binding the contract method 0x60f4062b. +// +// Solidity: function podOwnerShares(address ) view returns(int256) +func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) PodOwnerShares(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var out []interface{} + err := _EigenPodManagerStorage.contract.Call(opts, &out, "podOwnerShares", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// PodOwnerShares is a free data retrieval call binding the contract method 0x60f4062b. +// +// Solidity: function podOwnerShares(address ) view returns(int256) +func (_EigenPodManagerStorage *EigenPodManagerStorageSession) PodOwnerShares(arg0 common.Address) (*big.Int, error) { + return _EigenPodManagerStorage.Contract.PodOwnerShares(&_EigenPodManagerStorage.CallOpts, arg0) +} + +// PodOwnerShares is a free data retrieval call binding the contract method 0x60f4062b. +// +// Solidity: function podOwnerShares(address ) view returns(int256) +func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) PodOwnerShares(arg0 common.Address) (*big.Int, error) { + return _EigenPodManagerStorage.Contract.PodOwnerShares(&_EigenPodManagerStorage.CallOpts, arg0) +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageCaller) Slasher(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _EigenPodManagerStorage.contract.Call(opts, &out, "slasher") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_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 + } + + 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 (_EigenPodManagerStorage *EigenPodManagerStorageSession) StrategyManager() (common.Address, error) { + return _EigenPodManagerStorage.Contract.StrategyManager(&_EigenPodManagerStorage.CallOpts) +} + +// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. +// +// Solidity: function strategyManager() view returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageCallerSession) StrategyManager() (common.Address, error) { + return _EigenPodManagerStorage.Contract.StrategyManager(&_EigenPodManagerStorage.CallOpts) +} + +// AddShares is a paid mutator transaction binding the contract method 0x0e81073c. +// +// 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) +} + +// AddShares is a paid mutator transaction binding the contract method 0x0e81073c. +// +// 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) +} + +// AddShares is a paid mutator transaction binding the contract method 0x0e81073c. +// +// 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) +} + +// CreatePod is a paid mutator transaction binding the contract method 0x84d81062. +// +// Solidity: function createPod() returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageTransactor) CreatePod(opts *bind.TransactOpts) (*types.Transaction, error) { + return _EigenPodManagerStorage.contract.Transact(opts, "createPod") +} + +// CreatePod is a paid mutator transaction binding the contract method 0x84d81062. +// +// Solidity: function createPod() returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageSession) CreatePod() (*types.Transaction, error) { + return _EigenPodManagerStorage.Contract.CreatePod(&_EigenPodManagerStorage.TransactOpts) +} + +// CreatePod is a paid mutator transaction binding the contract method 0x84d81062. +// +// Solidity: function createPod() returns(address) +func (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) CreatePod() (*types.Transaction, error) { + return _EigenPodManagerStorage.Contract.CreatePod(&_EigenPodManagerStorage.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_EigenPodManagerStorage *EigenPodManagerStorageTransactor) Pause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _EigenPodManagerStorage.contract.Transact(opts, "pause", newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_EigenPodManagerStorage *EigenPodManagerStorageSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _EigenPodManagerStorage.Contract.Pause(&_EigenPodManagerStorage.TransactOpts, newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _EigenPodManagerStorage.Contract.Pause(&_EigenPodManagerStorage.TransactOpts, newPausedStatus) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_EigenPodManagerStorage *EigenPodManagerStorageTransactor) PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) { + return _EigenPodManagerStorage.contract.Transact(opts, "pauseAll") +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_EigenPodManagerStorage *EigenPodManagerStorageSession) PauseAll() (*types.Transaction, error) { + return _EigenPodManagerStorage.Contract.PauseAll(&_EigenPodManagerStorage.TransactOpts) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) PauseAll() (*types.Transaction, error) { + 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. +// +// 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) +} + +// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xc2c51c40. +// +// 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) +} + +// RemoveShares is a paid mutator transaction binding the contract method 0xbeffbb89. +// +// 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) +} + +// RemoveShares is a paid mutator transaction binding the contract method 0xbeffbb89. +// +// 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) +} + +// RemoveShares is a paid mutator transaction binding the contract method 0xbeffbb89. +// +// 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) +} + +// SetDenebForkTimestamp is a paid mutator transaction binding the contract method 0x463db038. +// +// Solidity: function setDenebForkTimestamp(uint64 newDenebForkTimestamp) returns() +func (_EigenPodManagerStorage *EigenPodManagerStorageTransactor) SetDenebForkTimestamp(opts *bind.TransactOpts, newDenebForkTimestamp uint64) (*types.Transaction, error) { + return _EigenPodManagerStorage.contract.Transact(opts, "setDenebForkTimestamp", newDenebForkTimestamp) +} + +// SetDenebForkTimestamp is a paid mutator transaction binding the contract method 0x463db038. +// +// Solidity: function setDenebForkTimestamp(uint64 newDenebForkTimestamp) returns() +func (_EigenPodManagerStorage *EigenPodManagerStorageSession) SetDenebForkTimestamp(newDenebForkTimestamp uint64) (*types.Transaction, error) { + return _EigenPodManagerStorage.Contract.SetDenebForkTimestamp(&_EigenPodManagerStorage.TransactOpts, newDenebForkTimestamp) +} + +// SetDenebForkTimestamp is a paid mutator transaction binding the contract method 0x463db038. +// +// Solidity: function setDenebForkTimestamp(uint64 newDenebForkTimestamp) returns() +func (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) SetDenebForkTimestamp(newDenebForkTimestamp uint64) (*types.Transaction, error) { + return _EigenPodManagerStorage.Contract.SetDenebForkTimestamp(&_EigenPodManagerStorage.TransactOpts, newDenebForkTimestamp) +} + +// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f. +// +// 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) +} + +// Stake is a paid mutator transaction binding the contract method 0x9b4e4634. +// +// Solidity: function stake(bytes pubkey, bytes signature, bytes32 depositDataRoot) payable returns() +func (_EigenPodManagerStorage *EigenPodManagerStorageTransactor) Stake(opts *bind.TransactOpts, pubkey []byte, signature []byte, depositDataRoot [32]byte) (*types.Transaction, error) { + return _EigenPodManagerStorage.contract.Transact(opts, "stake", pubkey, signature, depositDataRoot) +} + +// Stake is a paid mutator transaction binding the contract method 0x9b4e4634. +// +// Solidity: function stake(bytes pubkey, bytes signature, bytes32 depositDataRoot) payable returns() +func (_EigenPodManagerStorage *EigenPodManagerStorageSession) Stake(pubkey []byte, signature []byte, depositDataRoot [32]byte) (*types.Transaction, error) { + return _EigenPodManagerStorage.Contract.Stake(&_EigenPodManagerStorage.TransactOpts, pubkey, signature, depositDataRoot) +} + +// Stake is a paid mutator transaction binding the contract method 0x9b4e4634. +// +// Solidity: function stake(bytes pubkey, bytes signature, bytes32 depositDataRoot) payable returns() +func (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) Stake(pubkey []byte, signature []byte, depositDataRoot [32]byte) (*types.Transaction, error) { + return _EigenPodManagerStorage.Contract.Stake(&_EigenPodManagerStorage.TransactOpts, pubkey, signature, depositDataRoot) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_EigenPodManagerStorage *EigenPodManagerStorageTransactor) Unpause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _EigenPodManagerStorage.contract.Transact(opts, "unpause", newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_EigenPodManagerStorage *EigenPodManagerStorageSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _EigenPodManagerStorage.Contract.Unpause(&_EigenPodManagerStorage.TransactOpts, newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _EigenPodManagerStorage.Contract.Unpause(&_EigenPodManagerStorage.TransactOpts, newPausedStatus) +} + +// UpdateBeaconChainOracle is a paid mutator transaction binding the contract method 0xc1de3aef. +// +// Solidity: function updateBeaconChainOracle(address newBeaconChainOracle) returns() +func (_EigenPodManagerStorage *EigenPodManagerStorageTransactor) UpdateBeaconChainOracle(opts *bind.TransactOpts, newBeaconChainOracle common.Address) (*types.Transaction, error) { + return _EigenPodManagerStorage.contract.Transact(opts, "updateBeaconChainOracle", newBeaconChainOracle) +} + +// UpdateBeaconChainOracle is a paid mutator transaction binding the contract method 0xc1de3aef. +// +// Solidity: function updateBeaconChainOracle(address newBeaconChainOracle) returns() +func (_EigenPodManagerStorage *EigenPodManagerStorageSession) UpdateBeaconChainOracle(newBeaconChainOracle common.Address) (*types.Transaction, error) { + return _EigenPodManagerStorage.Contract.UpdateBeaconChainOracle(&_EigenPodManagerStorage.TransactOpts, newBeaconChainOracle) +} + +// UpdateBeaconChainOracle is a paid mutator transaction binding the contract method 0xc1de3aef. +// +// Solidity: function updateBeaconChainOracle(address newBeaconChainOracle) returns() +func (_EigenPodManagerStorage *EigenPodManagerStorageTransactorSession) UpdateBeaconChainOracle(newBeaconChainOracle common.Address) (*types.Transaction, error) { + return _EigenPodManagerStorage.Contract.UpdateBeaconChainOracle(&_EigenPodManagerStorage.TransactOpts, newBeaconChainOracle) +} + +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x387b1300. +// +// 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) +} + +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x387b1300. +// +// 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) +} + +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x387b1300. +// +// 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) +} + +// 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. +type EigenPodManagerStorageBeaconChainETHDepositedIterator struct { + Event *EigenPodManagerStorageBeaconChainETHDeposited // Event containing the contract specifics 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 *EigenPodManagerStorageBeaconChainETHDepositedIterator) 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(EigenPodManagerStorageBeaconChainETHDeposited) + 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(EigenPodManagerStorageBeaconChainETHDeposited) + 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 *EigenPodManagerStorageBeaconChainETHDepositedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodManagerStorageBeaconChainETHDepositedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodManagerStorageBeaconChainETHDeposited represents a BeaconChainETHDeposited event raised by the EigenPodManagerStorage contract. +type EigenPodManagerStorageBeaconChainETHDeposited struct { + PodOwner common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconChainETHDeposited is a free log retrieval operation binding the contract event 0x35a85cabc603f48abb2b71d9fbd8adea7c449d7f0be900ae7a2986ea369c3d0d. +// +// Solidity: event BeaconChainETHDeposited(address indexed podOwner, uint256 amount) +func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) FilterBeaconChainETHDeposited(opts *bind.FilterOpts, podOwner []common.Address) (*EigenPodManagerStorageBeaconChainETHDepositedIterator, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _EigenPodManagerStorage.contract.FilterLogs(opts, "BeaconChainETHDeposited", podOwnerRule) + if err != nil { + return nil, err + } + return &EigenPodManagerStorageBeaconChainETHDepositedIterator{contract: _EigenPodManagerStorage.contract, event: "BeaconChainETHDeposited", logs: logs, sub: sub}, nil +} + +// WatchBeaconChainETHDeposited is a free log subscription operation binding the contract event 0x35a85cabc603f48abb2b71d9fbd8adea7c449d7f0be900ae7a2986ea369c3d0d. +// +// Solidity: event BeaconChainETHDeposited(address indexed podOwner, uint256 amount) +func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchBeaconChainETHDeposited(opts *bind.WatchOpts, sink chan<- *EigenPodManagerStorageBeaconChainETHDeposited, podOwner []common.Address) (event.Subscription, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _EigenPodManagerStorage.contract.WatchLogs(opts, "BeaconChainETHDeposited", podOwnerRule) + 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(EigenPodManagerStorageBeaconChainETHDeposited) + if err := _EigenPodManagerStorage.contract.UnpackLog(event, "BeaconChainETHDeposited", 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 +} + +// ParseBeaconChainETHDeposited is a log parse operation binding the contract event 0x35a85cabc603f48abb2b71d9fbd8adea7c449d7f0be900ae7a2986ea369c3d0d. +// +// Solidity: event BeaconChainETHDeposited(address indexed podOwner, uint256 amount) +func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) ParseBeaconChainETHDeposited(log types.Log) (*EigenPodManagerStorageBeaconChainETHDeposited, error) { + event := new(EigenPodManagerStorageBeaconChainETHDeposited) + if err := _EigenPodManagerStorage.contract.UnpackLog(event, "BeaconChainETHDeposited", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodManagerStorageBeaconChainETHWithdrawalCompletedIterator is returned from FilterBeaconChainETHWithdrawalCompleted and is used to iterate over the raw logs and unpacked data for BeaconChainETHWithdrawalCompleted events raised by the EigenPodManagerStorage contract. +type EigenPodManagerStorageBeaconChainETHWithdrawalCompletedIterator struct { + Event *EigenPodManagerStorageBeaconChainETHWithdrawalCompleted // Event containing the contract specifics 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 *EigenPodManagerStorageBeaconChainETHWithdrawalCompletedIterator) 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(EigenPodManagerStorageBeaconChainETHWithdrawalCompleted) + 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(EigenPodManagerStorageBeaconChainETHWithdrawalCompleted) + 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 *EigenPodManagerStorageBeaconChainETHWithdrawalCompletedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodManagerStorageBeaconChainETHWithdrawalCompletedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodManagerStorageBeaconChainETHWithdrawalCompleted represents a BeaconChainETHWithdrawalCompleted event raised by the EigenPodManagerStorage contract. +type EigenPodManagerStorageBeaconChainETHWithdrawalCompleted struct { + PodOwner common.Address + Shares *big.Int + Nonce *big.Int + DelegatedAddress common.Address + Withdrawer common.Address + WithdrawalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconChainETHWithdrawalCompleted is a free log retrieval operation binding the contract event 0xa6bab1d55a361fcea2eee2bc9491e4f01e6cf333df03c9c4f2c144466429f7d6. +// +// Solidity: event BeaconChainETHWithdrawalCompleted(address indexed podOwner, uint256 shares, uint96 nonce, address delegatedAddress, address withdrawer, bytes32 withdrawalRoot) +func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) FilterBeaconChainETHWithdrawalCompleted(opts *bind.FilterOpts, podOwner []common.Address) (*EigenPodManagerStorageBeaconChainETHWithdrawalCompletedIterator, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _EigenPodManagerStorage.contract.FilterLogs(opts, "BeaconChainETHWithdrawalCompleted", podOwnerRule) + if err != nil { + return nil, err + } + return &EigenPodManagerStorageBeaconChainETHWithdrawalCompletedIterator{contract: _EigenPodManagerStorage.contract, event: "BeaconChainETHWithdrawalCompleted", logs: logs, sub: sub}, nil +} + +// WatchBeaconChainETHWithdrawalCompleted is a free log subscription operation binding the contract event 0xa6bab1d55a361fcea2eee2bc9491e4f01e6cf333df03c9c4f2c144466429f7d6. +// +// Solidity: event BeaconChainETHWithdrawalCompleted(address indexed podOwner, uint256 shares, uint96 nonce, address delegatedAddress, address withdrawer, bytes32 withdrawalRoot) +func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchBeaconChainETHWithdrawalCompleted(opts *bind.WatchOpts, sink chan<- *EigenPodManagerStorageBeaconChainETHWithdrawalCompleted, podOwner []common.Address) (event.Subscription, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _EigenPodManagerStorage.contract.WatchLogs(opts, "BeaconChainETHWithdrawalCompleted", podOwnerRule) + 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(EigenPodManagerStorageBeaconChainETHWithdrawalCompleted) + if err := _EigenPodManagerStorage.contract.UnpackLog(event, "BeaconChainETHWithdrawalCompleted", 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 +} + +// ParseBeaconChainETHWithdrawalCompleted is a log parse operation binding the contract event 0xa6bab1d55a361fcea2eee2bc9491e4f01e6cf333df03c9c4f2c144466429f7d6. +// +// Solidity: event BeaconChainETHWithdrawalCompleted(address indexed podOwner, uint256 shares, uint96 nonce, address delegatedAddress, address withdrawer, bytes32 withdrawalRoot) +func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) ParseBeaconChainETHWithdrawalCompleted(log types.Log) (*EigenPodManagerStorageBeaconChainETHWithdrawalCompleted, error) { + event := new(EigenPodManagerStorageBeaconChainETHWithdrawalCompleted) + if err := _EigenPodManagerStorage.contract.UnpackLog(event, "BeaconChainETHWithdrawalCompleted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodManagerStorageBeaconOracleUpdatedIterator is returned from FilterBeaconOracleUpdated and is used to iterate over the raw logs and unpacked data for BeaconOracleUpdated events raised by the EigenPodManagerStorage contract. +type EigenPodManagerStorageBeaconOracleUpdatedIterator struct { + Event *EigenPodManagerStorageBeaconOracleUpdated // Event containing the contract specifics 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 *EigenPodManagerStorageBeaconOracleUpdatedIterator) 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(EigenPodManagerStorageBeaconOracleUpdated) + 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(EigenPodManagerStorageBeaconOracleUpdated) + 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 *EigenPodManagerStorageBeaconOracleUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodManagerStorageBeaconOracleUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodManagerStorageBeaconOracleUpdated represents a BeaconOracleUpdated event raised by the EigenPodManagerStorage contract. +type EigenPodManagerStorageBeaconOracleUpdated struct { + NewOracleAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconOracleUpdated is a free log retrieval operation binding the contract event 0x08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f6. +// +// Solidity: event BeaconOracleUpdated(address indexed newOracleAddress) +func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) FilterBeaconOracleUpdated(opts *bind.FilterOpts, newOracleAddress []common.Address) (*EigenPodManagerStorageBeaconOracleUpdatedIterator, error) { + + var newOracleAddressRule []interface{} + for _, newOracleAddressItem := range newOracleAddress { + newOracleAddressRule = append(newOracleAddressRule, newOracleAddressItem) + } + + logs, sub, err := _EigenPodManagerStorage.contract.FilterLogs(opts, "BeaconOracleUpdated", newOracleAddressRule) + if err != nil { + return nil, err + } + return &EigenPodManagerStorageBeaconOracleUpdatedIterator{contract: _EigenPodManagerStorage.contract, event: "BeaconOracleUpdated", logs: logs, sub: sub}, nil +} + +// WatchBeaconOracleUpdated is a free log subscription operation binding the contract event 0x08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f6. +// +// Solidity: event BeaconOracleUpdated(address indexed newOracleAddress) +func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchBeaconOracleUpdated(opts *bind.WatchOpts, sink chan<- *EigenPodManagerStorageBeaconOracleUpdated, newOracleAddress []common.Address) (event.Subscription, error) { + + var newOracleAddressRule []interface{} + for _, newOracleAddressItem := range newOracleAddress { + newOracleAddressRule = append(newOracleAddressRule, newOracleAddressItem) + } + + logs, sub, err := _EigenPodManagerStorage.contract.WatchLogs(opts, "BeaconOracleUpdated", newOracleAddressRule) + 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(EigenPodManagerStorageBeaconOracleUpdated) + if err := _EigenPodManagerStorage.contract.UnpackLog(event, "BeaconOracleUpdated", 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 +} + +// ParseBeaconOracleUpdated is a log parse operation binding the contract event 0x08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f6. +// +// Solidity: event BeaconOracleUpdated(address indexed newOracleAddress) +func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) ParseBeaconOracleUpdated(log types.Log) (*EigenPodManagerStorageBeaconOracleUpdated, error) { + event := new(EigenPodManagerStorageBeaconOracleUpdated) + if err := _EigenPodManagerStorage.contract.UnpackLog(event, "BeaconOracleUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodManagerStorageDenebForkTimestampUpdatedIterator is returned from FilterDenebForkTimestampUpdated and is used to iterate over the raw logs and unpacked data for DenebForkTimestampUpdated events raised by the EigenPodManagerStorage contract. +type EigenPodManagerStorageDenebForkTimestampUpdatedIterator struct { + Event *EigenPodManagerStorageDenebForkTimestampUpdated // Event containing the contract specifics 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 *EigenPodManagerStorageDenebForkTimestampUpdatedIterator) 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(EigenPodManagerStorageDenebForkTimestampUpdated) + 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(EigenPodManagerStorageDenebForkTimestampUpdated) + 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 *EigenPodManagerStorageDenebForkTimestampUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodManagerStorageDenebForkTimestampUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodManagerStorageDenebForkTimestampUpdated represents a DenebForkTimestampUpdated event raised by the EigenPodManagerStorage contract. +type EigenPodManagerStorageDenebForkTimestampUpdated struct { + NewValue uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDenebForkTimestampUpdated is a free log retrieval operation binding the contract event 0x19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db. +// +// Solidity: event DenebForkTimestampUpdated(uint64 newValue) +func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) FilterDenebForkTimestampUpdated(opts *bind.FilterOpts) (*EigenPodManagerStorageDenebForkTimestampUpdatedIterator, error) { + + logs, sub, err := _EigenPodManagerStorage.contract.FilterLogs(opts, "DenebForkTimestampUpdated") + if err != nil { + return nil, err + } + return &EigenPodManagerStorageDenebForkTimestampUpdatedIterator{contract: _EigenPodManagerStorage.contract, event: "DenebForkTimestampUpdated", logs: logs, sub: sub}, nil +} + +// WatchDenebForkTimestampUpdated is a free log subscription operation binding the contract event 0x19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db. +// +// Solidity: event DenebForkTimestampUpdated(uint64 newValue) +func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchDenebForkTimestampUpdated(opts *bind.WatchOpts, sink chan<- *EigenPodManagerStorageDenebForkTimestampUpdated) (event.Subscription, error) { + + logs, sub, err := _EigenPodManagerStorage.contract.WatchLogs(opts, "DenebForkTimestampUpdated") + 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(EigenPodManagerStorageDenebForkTimestampUpdated) + if err := _EigenPodManagerStorage.contract.UnpackLog(event, "DenebForkTimestampUpdated", 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 +} + +// ParseDenebForkTimestampUpdated is a log parse operation binding the contract event 0x19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db. +// +// Solidity: event DenebForkTimestampUpdated(uint64 newValue) +func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) ParseDenebForkTimestampUpdated(log types.Log) (*EigenPodManagerStorageDenebForkTimestampUpdated, error) { + event := new(EigenPodManagerStorageDenebForkTimestampUpdated) + if err := _EigenPodManagerStorage.contract.UnpackLog(event, "DenebForkTimestampUpdated", 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 + + 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 *EigenPodManagerStoragePausedIterator) 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(EigenPodManagerStoragePaused) + 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(EigenPodManagerStoragePaused) + 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 *EigenPodManagerStoragePausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodManagerStoragePausedIterator) 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 +} + +// FilterPaused is a free log retrieval operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d. +// +// 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, "Paused", accountRule) + if err != nil { + return nil, err + } + return &EigenPodManagerStoragePausedIterator{contract: _EigenPodManagerStorage.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 (_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, "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(EigenPodManagerStoragePaused) + if err := _EigenPodManagerStorage.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 (_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 + 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 + + 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 *EigenPodManagerStoragePauserRegistrySetIterator) 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(EigenPodManagerStoragePauserRegistrySet) + 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(EigenPodManagerStoragePauserRegistrySet) + 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 *EigenPodManagerStoragePauserRegistrySetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodManagerStoragePauserRegistrySetIterator) 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 +} + +// FilterPauserRegistrySet is a free log retrieval operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6. +// +// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry) +func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) FilterPauserRegistrySet(opts *bind.FilterOpts) (*EigenPodManagerStoragePauserRegistrySetIterator, error) { + + logs, sub, err := _EigenPodManagerStorage.contract.FilterLogs(opts, "PauserRegistrySet") + if err != nil { + return nil, err + } + return &EigenPodManagerStoragePauserRegistrySetIterator{contract: _EigenPodManagerStorage.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 (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *EigenPodManagerStoragePauserRegistrySet) (event.Subscription, error) { + + logs, sub, err := _EigenPodManagerStorage.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(EigenPodManagerStoragePauserRegistrySet) + if err := _EigenPodManagerStorage.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 (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) ParsePauserRegistrySet(log types.Log) (*EigenPodManagerStoragePauserRegistrySet, error) { + event := new(EigenPodManagerStoragePauserRegistrySet) + if err := _EigenPodManagerStorage.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodManagerStoragePodDeployedIterator is returned from FilterPodDeployed and is used to iterate over the raw logs and unpacked data for PodDeployed events raised by the EigenPodManagerStorage contract. +type EigenPodManagerStoragePodDeployedIterator struct { + Event *EigenPodManagerStoragePodDeployed // Event containing the contract specifics 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 *EigenPodManagerStoragePodDeployedIterator) 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(EigenPodManagerStoragePodDeployed) + 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(EigenPodManagerStoragePodDeployed) + 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 *EigenPodManagerStoragePodDeployedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodManagerStoragePodDeployedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodManagerStoragePodDeployed represents a PodDeployed event raised by the EigenPodManagerStorage contract. +type EigenPodManagerStoragePodDeployed struct { + EigenPod common.Address + PodOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPodDeployed is a free log retrieval operation binding the contract event 0x21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a. +// +// Solidity: event PodDeployed(address indexed eigenPod, address indexed podOwner) +func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) FilterPodDeployed(opts *bind.FilterOpts, eigenPod []common.Address, podOwner []common.Address) (*EigenPodManagerStoragePodDeployedIterator, error) { + + var eigenPodRule []interface{} + for _, eigenPodItem := range eigenPod { + eigenPodRule = append(eigenPodRule, eigenPodItem) + } + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _EigenPodManagerStorage.contract.FilterLogs(opts, "PodDeployed", eigenPodRule, podOwnerRule) + if err != nil { + return nil, err + } + return &EigenPodManagerStoragePodDeployedIterator{contract: _EigenPodManagerStorage.contract, event: "PodDeployed", logs: logs, sub: sub}, nil +} + +// WatchPodDeployed is a free log subscription operation binding the contract event 0x21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a. +// +// Solidity: event PodDeployed(address indexed eigenPod, address indexed podOwner) +func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchPodDeployed(opts *bind.WatchOpts, sink chan<- *EigenPodManagerStoragePodDeployed, eigenPod []common.Address, podOwner []common.Address) (event.Subscription, error) { + + var eigenPodRule []interface{} + for _, eigenPodItem := range eigenPod { + eigenPodRule = append(eigenPodRule, eigenPodItem) + } + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _EigenPodManagerStorage.contract.WatchLogs(opts, "PodDeployed", eigenPodRule, podOwnerRule) + 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(EigenPodManagerStoragePodDeployed) + if err := _EigenPodManagerStorage.contract.UnpackLog(event, "PodDeployed", 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 +} + +// ParsePodDeployed is a log parse operation binding the contract event 0x21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a. +// +// Solidity: event PodDeployed(address indexed eigenPod, address indexed podOwner) +func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) ParsePodDeployed(log types.Log) (*EigenPodManagerStoragePodDeployed, error) { + event := new(EigenPodManagerStoragePodDeployed) + if err := _EigenPodManagerStorage.contract.UnpackLog(event, "PodDeployed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodManagerStoragePodSharesUpdatedIterator is returned from FilterPodSharesUpdated and is used to iterate over the raw logs and unpacked data for PodSharesUpdated events raised by the EigenPodManagerStorage contract. +type EigenPodManagerStoragePodSharesUpdatedIterator struct { + Event *EigenPodManagerStoragePodSharesUpdated // Event containing the contract specifics 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 *EigenPodManagerStoragePodSharesUpdatedIterator) 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(EigenPodManagerStoragePodSharesUpdated) + 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(EigenPodManagerStoragePodSharesUpdated) + 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 *EigenPodManagerStoragePodSharesUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodManagerStoragePodSharesUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodManagerStoragePodSharesUpdated represents a PodSharesUpdated event raised by the EigenPodManagerStorage contract. +type EigenPodManagerStoragePodSharesUpdated struct { + PodOwner common.Address + SharesDelta *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPodSharesUpdated is a free log retrieval operation binding the contract event 0x4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193. +// +// Solidity: event PodSharesUpdated(address indexed podOwner, int256 sharesDelta) +func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) FilterPodSharesUpdated(opts *bind.FilterOpts, podOwner []common.Address) (*EigenPodManagerStoragePodSharesUpdatedIterator, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _EigenPodManagerStorage.contract.FilterLogs(opts, "PodSharesUpdated", podOwnerRule) + if err != nil { + return nil, err + } + return &EigenPodManagerStoragePodSharesUpdatedIterator{contract: _EigenPodManagerStorage.contract, event: "PodSharesUpdated", logs: logs, sub: sub}, nil +} + +// WatchPodSharesUpdated is a free log subscription operation binding the contract event 0x4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193. +// +// Solidity: event PodSharesUpdated(address indexed podOwner, int256 sharesDelta) +func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchPodSharesUpdated(opts *bind.WatchOpts, sink chan<- *EigenPodManagerStoragePodSharesUpdated, podOwner []common.Address) (event.Subscription, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _EigenPodManagerStorage.contract.WatchLogs(opts, "PodSharesUpdated", podOwnerRule) + 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(EigenPodManagerStoragePodSharesUpdated) + if err := _EigenPodManagerStorage.contract.UnpackLog(event, "PodSharesUpdated", 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 +} + +// ParsePodSharesUpdated is a log parse operation binding the contract event 0x4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193. +// +// Solidity: event PodSharesUpdated(address indexed podOwner, int256 sharesDelta) +func (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) ParsePodSharesUpdated(log types.Log) (*EigenPodManagerStoragePodSharesUpdated, error) { + event := new(EigenPodManagerStoragePodSharesUpdated) + if err := _EigenPodManagerStorage.contract.UnpackLog(event, "PodSharesUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// EigenPodManagerStorageUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the EigenPodManagerStorage contract. +type EigenPodManagerStorageUnpausedIterator struct { + Event *EigenPodManagerStorageUnpaused // Event containing the contract specifics 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 *EigenPodManagerStorageUnpausedIterator) 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(EigenPodManagerStorageUnpaused) + 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(EigenPodManagerStorageUnpaused) + 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 *EigenPodManagerStorageUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *EigenPodManagerStorageUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// EigenPodManagerStorageUnpaused represents a Unpaused event raised by the EigenPodManagerStorage contract. +type EigenPodManagerStorageUnpaused 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 (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) FilterUnpaused(opts *bind.FilterOpts, account []common.Address) (*EigenPodManagerStorageUnpausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _EigenPodManagerStorage.contract.FilterLogs(opts, "Unpaused", accountRule) + if err != nil { + return nil, err + } + return &EigenPodManagerStorageUnpausedIterator{contract: _EigenPodManagerStorage.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 (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *EigenPodManagerStorageUnpaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _EigenPodManagerStorage.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(EigenPodManagerStorageUnpaused) + if err := _EigenPodManagerStorage.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 (_EigenPodManagerStorage *EigenPodManagerStorageFilterer) ParseUnpaused(log types.Log) (*EigenPodManagerStorageUnpaused, error) { + event := new(EigenPodManagerStorageUnpaused) + if err := _EigenPodManagerStorage.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/EigenPodManagerStorage/tmp.abi b/pkg/bindings/EigenPodManagerStorage/tmp.abi new file mode 100644 index 000000000..e0e59e1fe --- /dev/null +++ b/pkg/bindings/EigenPodManagerStorage/tmp.abi @@ -0,0 +1,633 @@ +[ + { + "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": "contract IStrategy" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "beaconChainOracle", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBeaconChainOracle" + } + ], + "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": "denebForkTimestamp", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "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": "getBlockRootAtTimestamp", + "inputs": [ + { + "name": "timestamp", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "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": "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": "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": "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": "setDenebForkTimestamp", + "inputs": [ + { + "name": "newDenebForkTimestamp", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "slasher", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ISlasher" + } + ], + "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": "contract IStrategyManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "unpause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateBeaconChainOracle", + "inputs": [ + { + "name": "newBeaconChainOracle", + "type": "address", + "internalType": "contract IBeaconChainOracle" + } + ], + "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": "BeaconOracleUpdated", + "inputs": [ + { + "name": "newOracleAddress", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DenebForkTimestampUpdated", + "inputs": [ + { + "name": "newValue", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } + ], + "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": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "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 + } +] diff --git a/pkg/bindings/EigenPodManagerStorage/tmp.bin b/pkg/bindings/EigenPodManagerStorage/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/EigenPodManagerStorage/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/EigenPodPausingConstants/binding.go b/pkg/bindings/EigenPodPausingConstants/binding.go new file mode 100644 index 000000000..7ddb12164 --- /dev/null +++ b/pkg/bindings/EigenPodPausingConstants/binding.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package EigenPodPausingConstants + +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 +) + +// EigenPodPausingConstantsMetaData contains all meta data concerning the EigenPodPausingConstants contract. +var EigenPodPausingConstantsMetaData = &bind.MetaData{ + ABI: "[]", +} + +// EigenPodPausingConstantsABI is the input ABI used to generate the binding from. +// Deprecated: Use EigenPodPausingConstantsMetaData.ABI instead. +var EigenPodPausingConstantsABI = EigenPodPausingConstantsMetaData.ABI + +// EigenPodPausingConstants is an auto generated Go binding around an Ethereum contract. +type EigenPodPausingConstants struct { + EigenPodPausingConstantsCaller // Read-only binding to the contract + EigenPodPausingConstantsTransactor // Write-only binding to the contract + EigenPodPausingConstantsFilterer // Log filterer for contract events +} + +// EigenPodPausingConstantsCaller is an auto generated read-only Go binding around an Ethereum contract. +type EigenPodPausingConstantsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// EigenPodPausingConstantsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type EigenPodPausingConstantsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// EigenPodPausingConstantsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type EigenPodPausingConstantsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// EigenPodPausingConstantsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type EigenPodPausingConstantsSession struct { + Contract *EigenPodPausingConstants // 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 +} + +// EigenPodPausingConstantsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type EigenPodPausingConstantsCallerSession struct { + Contract *EigenPodPausingConstantsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// EigenPodPausingConstantsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type EigenPodPausingConstantsTransactorSession struct { + Contract *EigenPodPausingConstantsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// EigenPodPausingConstantsRaw is an auto generated low-level Go binding around an Ethereum contract. +type EigenPodPausingConstantsRaw struct { + Contract *EigenPodPausingConstants // Generic contract binding to access the raw methods on +} + +// EigenPodPausingConstantsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type EigenPodPausingConstantsCallerRaw struct { + Contract *EigenPodPausingConstantsCaller // Generic read-only contract binding to access the raw methods on +} + +// EigenPodPausingConstantsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type EigenPodPausingConstantsTransactorRaw struct { + Contract *EigenPodPausingConstantsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewEigenPodPausingConstants creates a new instance of EigenPodPausingConstants, bound to a specific deployed contract. +func NewEigenPodPausingConstants(address common.Address, backend bind.ContractBackend) (*EigenPodPausingConstants, error) { + contract, err := bindEigenPodPausingConstants(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &EigenPodPausingConstants{EigenPodPausingConstantsCaller: EigenPodPausingConstantsCaller{contract: contract}, EigenPodPausingConstantsTransactor: EigenPodPausingConstantsTransactor{contract: contract}, EigenPodPausingConstantsFilterer: EigenPodPausingConstantsFilterer{contract: contract}}, nil +} + +// NewEigenPodPausingConstantsCaller creates a new read-only instance of EigenPodPausingConstants, bound to a specific deployed contract. +func NewEigenPodPausingConstantsCaller(address common.Address, caller bind.ContractCaller) (*EigenPodPausingConstantsCaller, error) { + contract, err := bindEigenPodPausingConstants(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &EigenPodPausingConstantsCaller{contract: contract}, nil +} + +// NewEigenPodPausingConstantsTransactor creates a new write-only instance of EigenPodPausingConstants, bound to a specific deployed contract. +func NewEigenPodPausingConstantsTransactor(address common.Address, transactor bind.ContractTransactor) (*EigenPodPausingConstantsTransactor, error) { + contract, err := bindEigenPodPausingConstants(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &EigenPodPausingConstantsTransactor{contract: contract}, nil +} + +// NewEigenPodPausingConstantsFilterer creates a new log filterer instance of EigenPodPausingConstants, bound to a specific deployed contract. +func NewEigenPodPausingConstantsFilterer(address common.Address, filterer bind.ContractFilterer) (*EigenPodPausingConstantsFilterer, error) { + contract, err := bindEigenPodPausingConstants(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &EigenPodPausingConstantsFilterer{contract: contract}, nil +} + +// bindEigenPodPausingConstants binds a generic wrapper to an already deployed contract. +func bindEigenPodPausingConstants(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := EigenPodPausingConstantsMetaData.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 (_EigenPodPausingConstants *EigenPodPausingConstantsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _EigenPodPausingConstants.Contract.EigenPodPausingConstantsCaller.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 (_EigenPodPausingConstants *EigenPodPausingConstantsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _EigenPodPausingConstants.Contract.EigenPodPausingConstantsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_EigenPodPausingConstants *EigenPodPausingConstantsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _EigenPodPausingConstants.Contract.EigenPodPausingConstantsTransactor.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 (_EigenPodPausingConstants *EigenPodPausingConstantsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _EigenPodPausingConstants.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 (_EigenPodPausingConstants *EigenPodPausingConstantsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _EigenPodPausingConstants.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_EigenPodPausingConstants *EigenPodPausingConstantsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _EigenPodPausingConstants.Contract.contract.Transact(opts, method, params...) +} diff --git a/pkg/bindings/EigenPodPausingConstants/tmp.abi b/pkg/bindings/EigenPodPausingConstants/tmp.abi new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/pkg/bindings/EigenPodPausingConstants/tmp.abi @@ -0,0 +1 @@ +[] diff --git a/pkg/bindings/EigenPodPausingConstants/tmp.bin b/pkg/bindings/EigenPodPausingConstants/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/EigenPodPausingConstants/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/Endian/binding.go b/pkg/bindings/Endian/binding.go new file mode 100644 index 000000000..ea0210236 --- /dev/null +++ b/pkg/bindings/Endian/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 Endian + +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 +) + +// EndianMetaData contains all meta data concerning the Endian contract. +var EndianMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200884effd93adafa37f07e1e1c9a97fc8e8945bd214204873ecaf3c11da9286cc64736f6c634300080c0033", +} + +// EndianABI is the input ABI used to generate the binding from. +// Deprecated: Use EndianMetaData.ABI instead. +var EndianABI = EndianMetaData.ABI + +// EndianBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use EndianMetaData.Bin instead. +var EndianBin = EndianMetaData.Bin + +// DeployEndian deploys a new Ethereum contract, binding an instance of Endian to it. +func DeployEndian(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Endian, error) { + parsed, err := EndianMetaData.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(EndianBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Endian{EndianCaller: EndianCaller{contract: contract}, EndianTransactor: EndianTransactor{contract: contract}, EndianFilterer: EndianFilterer{contract: contract}}, nil +} + +// Endian is an auto generated Go binding around an Ethereum contract. +type Endian struct { + EndianCaller // Read-only binding to the contract + EndianTransactor // Write-only binding to the contract + EndianFilterer // Log filterer for contract events +} + +// EndianCaller is an auto generated read-only Go binding around an Ethereum contract. +type EndianCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// EndianTransactor is an auto generated write-only Go binding around an Ethereum contract. +type EndianTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// EndianFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type EndianFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// EndianSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type EndianSession struct { + Contract *Endian // 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 +} + +// EndianCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type EndianCallerSession struct { + Contract *EndianCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// EndianTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type EndianTransactorSession struct { + Contract *EndianTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// EndianRaw is an auto generated low-level Go binding around an Ethereum contract. +type EndianRaw struct { + Contract *Endian // Generic contract binding to access the raw methods on +} + +// EndianCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type EndianCallerRaw struct { + Contract *EndianCaller // Generic read-only contract binding to access the raw methods on +} + +// EndianTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type EndianTransactorRaw struct { + Contract *EndianTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewEndian creates a new instance of Endian, bound to a specific deployed contract. +func NewEndian(address common.Address, backend bind.ContractBackend) (*Endian, error) { + contract, err := bindEndian(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Endian{EndianCaller: EndianCaller{contract: contract}, EndianTransactor: EndianTransactor{contract: contract}, EndianFilterer: EndianFilterer{contract: contract}}, nil +} + +// NewEndianCaller creates a new read-only instance of Endian, bound to a specific deployed contract. +func NewEndianCaller(address common.Address, caller bind.ContractCaller) (*EndianCaller, error) { + contract, err := bindEndian(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &EndianCaller{contract: contract}, nil +} + +// NewEndianTransactor creates a new write-only instance of Endian, bound to a specific deployed contract. +func NewEndianTransactor(address common.Address, transactor bind.ContractTransactor) (*EndianTransactor, error) { + contract, err := bindEndian(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &EndianTransactor{contract: contract}, nil +} + +// NewEndianFilterer creates a new log filterer instance of Endian, bound to a specific deployed contract. +func NewEndianFilterer(address common.Address, filterer bind.ContractFilterer) (*EndianFilterer, error) { + contract, err := bindEndian(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &EndianFilterer{contract: contract}, nil +} + +// bindEndian binds a generic wrapper to an already deployed contract. +func bindEndian(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := EndianMetaData.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 (_Endian *EndianRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Endian.Contract.EndianCaller.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 (_Endian *EndianRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Endian.Contract.EndianTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Endian *EndianRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Endian.Contract.EndianTransactor.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 (_Endian *EndianCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Endian.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 (_Endian *EndianTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Endian.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Endian *EndianTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Endian.Contract.contract.Transact(opts, method, params...) +} diff --git a/pkg/bindings/Endian/tmp.abi b/pkg/bindings/Endian/tmp.abi new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/pkg/bindings/Endian/tmp.abi @@ -0,0 +1 @@ +[] diff --git a/pkg/bindings/Endian/tmp.bin b/pkg/bindings/Endian/tmp.bin new file mode 100644 index 000000000..ab0bb3536 --- /dev/null +++ b/pkg/bindings/Endian/tmp.bin @@ -0,0 +1 @@ +0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200884effd93adafa37f07e1e1c9a97fc8e8945bd214204873ecaf3c11da9286cc64736f6c634300080c0033 diff --git a/pkg/bindings/IAVSDirectory/binding.go b/pkg/bindings/IAVSDirectory/binding.go new file mode 100644 index 000000000..6ee8f3ce0 --- /dev/null +++ b/pkg/bindings/IAVSDirectory/binding.go @@ -0,0 +1,643 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package IAVSDirectory + +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 +) + +// ISignatureUtilsSignatureWithSaltAndExpiry is an auto generated low-level Go binding around an user-defined struct. +type ISignatureUtilsSignatureWithSaltAndExpiry struct { + Signature []byte + Salt [32]byte + Expiry *big.Int +} + +// 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\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"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\":\"enumIAVSDirectory.OperatorAVSRegistrationStatus\"}],\"anonymous\":false}]", +} + +// IAVSDirectoryABI is the input ABI used to generate the binding from. +// Deprecated: Use IAVSDirectoryMetaData.ABI instead. +var IAVSDirectoryABI = IAVSDirectoryMetaData.ABI + +// IAVSDirectory is an auto generated Go binding around an Ethereum contract. +type IAVSDirectory struct { + IAVSDirectoryCaller // Read-only binding to the contract + IAVSDirectoryTransactor // Write-only binding to the contract + IAVSDirectoryFilterer // Log filterer for contract events +} + +// IAVSDirectoryCaller is an auto generated read-only Go binding around an Ethereum contract. +type IAVSDirectoryCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IAVSDirectoryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IAVSDirectoryTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IAVSDirectoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IAVSDirectoryFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IAVSDirectorySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IAVSDirectorySession struct { + Contract *IAVSDirectory // 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 +} + +// IAVSDirectoryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IAVSDirectoryCallerSession struct { + Contract *IAVSDirectoryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IAVSDirectoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IAVSDirectoryTransactorSession struct { + Contract *IAVSDirectoryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IAVSDirectoryRaw is an auto generated low-level Go binding around an Ethereum contract. +type IAVSDirectoryRaw struct { + Contract *IAVSDirectory // Generic contract binding to access the raw methods on +} + +// IAVSDirectoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IAVSDirectoryCallerRaw struct { + Contract *IAVSDirectoryCaller // Generic read-only contract binding to access the raw methods on +} + +// IAVSDirectoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IAVSDirectoryTransactorRaw struct { + Contract *IAVSDirectoryTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIAVSDirectory creates a new instance of IAVSDirectory, bound to a specific deployed contract. +func NewIAVSDirectory(address common.Address, backend bind.ContractBackend) (*IAVSDirectory, error) { + contract, err := bindIAVSDirectory(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IAVSDirectory{IAVSDirectoryCaller: IAVSDirectoryCaller{contract: contract}, IAVSDirectoryTransactor: IAVSDirectoryTransactor{contract: contract}, IAVSDirectoryFilterer: IAVSDirectoryFilterer{contract: contract}}, nil +} + +// NewIAVSDirectoryCaller creates a new read-only instance of IAVSDirectory, bound to a specific deployed contract. +func NewIAVSDirectoryCaller(address common.Address, caller bind.ContractCaller) (*IAVSDirectoryCaller, error) { + contract, err := bindIAVSDirectory(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IAVSDirectoryCaller{contract: contract}, nil +} + +// NewIAVSDirectoryTransactor creates a new write-only instance of IAVSDirectory, bound to a specific deployed contract. +func NewIAVSDirectoryTransactor(address common.Address, transactor bind.ContractTransactor) (*IAVSDirectoryTransactor, error) { + contract, err := bindIAVSDirectory(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IAVSDirectoryTransactor{contract: contract}, nil +} + +// NewIAVSDirectoryFilterer creates a new log filterer instance of IAVSDirectory, bound to a specific deployed contract. +func NewIAVSDirectoryFilterer(address common.Address, filterer bind.ContractFilterer) (*IAVSDirectoryFilterer, error) { + contract, err := bindIAVSDirectory(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IAVSDirectoryFilterer{contract: contract}, nil +} + +// bindIAVSDirectory binds a generic wrapper to an already deployed contract. +func bindIAVSDirectory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IAVSDirectoryMetaData.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 (_IAVSDirectory *IAVSDirectoryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IAVSDirectory.Contract.IAVSDirectoryCaller.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 (_IAVSDirectory *IAVSDirectoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IAVSDirectory.Contract.IAVSDirectoryTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IAVSDirectory *IAVSDirectoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IAVSDirectory.Contract.IAVSDirectoryTransactor.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 (_IAVSDirectory *IAVSDirectoryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IAVSDirectory.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 (_IAVSDirectory *IAVSDirectoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IAVSDirectory.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IAVSDirectory *IAVSDirectoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IAVSDirectory.Contract.contract.Transact(opts, method, params...) +} + +// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab. +// +// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32) +func (_IAVSDirectory *IAVSDirectoryCaller) OPERATORAVSREGISTRATIONTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IAVSDirectory.contract.Call(opts, &out, "OPERATOR_AVS_REGISTRATION_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab. +// +// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32) +func (_IAVSDirectory *IAVSDirectorySession) OPERATORAVSREGISTRATIONTYPEHASH() ([32]byte, error) { + return _IAVSDirectory.Contract.OPERATORAVSREGISTRATIONTYPEHASH(&_IAVSDirectory.CallOpts) +} + +// OPERATORAVSREGISTRATIONTYPEHASH is a free data retrieval call binding the contract method 0xd79aceab. +// +// Solidity: function OPERATOR_AVS_REGISTRATION_TYPEHASH() view returns(bytes32) +func (_IAVSDirectory *IAVSDirectoryCallerSession) OPERATORAVSREGISTRATIONTYPEHASH() ([32]byte, error) { + return _IAVSDirectory.Contract.OPERATORAVSREGISTRATIONTYPEHASH(&_IAVSDirectory.CallOpts) +} + +// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88. +// +// Solidity: function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) view returns(bytes32) +func (_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, "calculateOperatorAVSRegistrationDigestHash", operator, avs, salt, expiry) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88. +// +// Solidity: function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) view returns(bytes32) +func (_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) +} + +// CalculateOperatorAVSRegistrationDigestHash is a free data retrieval call binding the contract method 0xa1060c88. +// +// Solidity: function calculateOperatorAVSRegistrationDigestHash(address operator, address avs, bytes32 salt, uint256 expiry) view returns(bytes32) +func (_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. +// +// Solidity: function operatorSaltIsSpent(address operator, bytes32 salt) view returns(bool) +func (_IAVSDirectory *IAVSDirectoryCaller) OperatorSaltIsSpent(opts *bind.CallOpts, operator common.Address, salt [32]byte) (bool, error) { + var out []interface{} + err := _IAVSDirectory.contract.Call(opts, &out, "operatorSaltIsSpent", operator, salt) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// OperatorSaltIsSpent is a free data retrieval call binding the contract method 0x374823b5. +// +// Solidity: function operatorSaltIsSpent(address operator, bytes32 salt) view returns(bool) +func (_IAVSDirectory *IAVSDirectorySession) OperatorSaltIsSpent(operator common.Address, salt [32]byte) (bool, error) { + return _IAVSDirectory.Contract.OperatorSaltIsSpent(&_IAVSDirectory.CallOpts, operator, salt) +} + +// OperatorSaltIsSpent is a free data retrieval call binding the contract method 0x374823b5. +// +// Solidity: function operatorSaltIsSpent(address operator, bytes32 salt) view returns(bool) +func (_IAVSDirectory *IAVSDirectoryCallerSession) OperatorSaltIsSpent(operator common.Address, salt [32]byte) (bool, error) { + return _IAVSDirectory.Contract.OperatorSaltIsSpent(&_IAVSDirectory.CallOpts, operator, salt) +} + +// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. +// +// Solidity: function deregisterOperatorFromAVS(address operator) returns() +func (_IAVSDirectory *IAVSDirectoryTransactor) DeregisterOperatorFromAVS(opts *bind.TransactOpts, operator common.Address) (*types.Transaction, error) { + return _IAVSDirectory.contract.Transact(opts, "deregisterOperatorFromAVS", operator) +} + +// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. +// +// Solidity: function deregisterOperatorFromAVS(address operator) returns() +func (_IAVSDirectory *IAVSDirectorySession) DeregisterOperatorFromAVS(operator common.Address) (*types.Transaction, error) { + return _IAVSDirectory.Contract.DeregisterOperatorFromAVS(&_IAVSDirectory.TransactOpts, operator) +} + +// DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. +// +// Solidity: function deregisterOperatorFromAVS(address operator) returns() +func (_IAVSDirectory *IAVSDirectoryTransactorSession) DeregisterOperatorFromAVS(operator common.Address) (*types.Transaction, error) { + return _IAVSDirectory.Contract.DeregisterOperatorFromAVS(&_IAVSDirectory.TransactOpts, operator) +} + +// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// +// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() +func (_IAVSDirectory *IAVSDirectoryTransactor) RegisterOperatorToAVS(opts *bind.TransactOpts, operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _IAVSDirectory.contract.Transact(opts, "registerOperatorToAVS", operator, operatorSignature) +} + +// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// +// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() +func (_IAVSDirectory *IAVSDirectorySession) RegisterOperatorToAVS(operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _IAVSDirectory.Contract.RegisterOperatorToAVS(&_IAVSDirectory.TransactOpts, operator, operatorSignature) +} + +// RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. +// +// Solidity: function registerOperatorToAVS(address operator, (bytes,bytes32,uint256) operatorSignature) returns() +func (_IAVSDirectory *IAVSDirectoryTransactorSession) RegisterOperatorToAVS(operator common.Address, operatorSignature ISignatureUtilsSignatureWithSaltAndExpiry) (*types.Transaction, error) { + return _IAVSDirectory.Contract.RegisterOperatorToAVS(&_IAVSDirectory.TransactOpts, operator, operatorSignature) +} + +// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa98fb355. +// +// Solidity: function updateAVSMetadataURI(string metadataURI) returns() +func (_IAVSDirectory *IAVSDirectoryTransactor) UpdateAVSMetadataURI(opts *bind.TransactOpts, metadataURI string) (*types.Transaction, error) { + return _IAVSDirectory.contract.Transact(opts, "updateAVSMetadataURI", metadataURI) +} + +// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa98fb355. +// +// Solidity: function updateAVSMetadataURI(string metadataURI) returns() +func (_IAVSDirectory *IAVSDirectorySession) UpdateAVSMetadataURI(metadataURI string) (*types.Transaction, error) { + return _IAVSDirectory.Contract.UpdateAVSMetadataURI(&_IAVSDirectory.TransactOpts, metadataURI) +} + +// UpdateAVSMetadataURI is a paid mutator transaction binding the contract method 0xa98fb355. +// +// Solidity: function updateAVSMetadataURI(string metadataURI) returns() +func (_IAVSDirectory *IAVSDirectoryTransactorSession) UpdateAVSMetadataURI(metadataURI string) (*types.Transaction, error) { + return _IAVSDirectory.Contract.UpdateAVSMetadataURI(&_IAVSDirectory.TransactOpts, metadataURI) +} + +// IAVSDirectoryAVSMetadataURIUpdatedIterator is returned from FilterAVSMetadataURIUpdated and is used to iterate over the raw logs and unpacked data for AVSMetadataURIUpdated events raised by the IAVSDirectory contract. +type IAVSDirectoryAVSMetadataURIUpdatedIterator struct { + Event *IAVSDirectoryAVSMetadataURIUpdated // Event containing the contract specifics 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 *IAVSDirectoryAVSMetadataURIUpdatedIterator) 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(IAVSDirectoryAVSMetadataURIUpdated) + 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(IAVSDirectoryAVSMetadataURIUpdated) + 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 *IAVSDirectoryAVSMetadataURIUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IAVSDirectoryAVSMetadataURIUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IAVSDirectoryAVSMetadataURIUpdated represents a AVSMetadataURIUpdated event raised by the IAVSDirectory contract. +type IAVSDirectoryAVSMetadataURIUpdated 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 (_IAVSDirectory *IAVSDirectoryFilterer) FilterAVSMetadataURIUpdated(opts *bind.FilterOpts, avs []common.Address) (*IAVSDirectoryAVSMetadataURIUpdatedIterator, error) { + + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _IAVSDirectory.contract.FilterLogs(opts, "AVSMetadataURIUpdated", avsRule) + if err != nil { + return nil, err + } + return &IAVSDirectoryAVSMetadataURIUpdatedIterator{contract: _IAVSDirectory.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 (_IAVSDirectory *IAVSDirectoryFilterer) WatchAVSMetadataURIUpdated(opts *bind.WatchOpts, sink chan<- *IAVSDirectoryAVSMetadataURIUpdated, avs []common.Address) (event.Subscription, error) { + + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _IAVSDirectory.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(IAVSDirectoryAVSMetadataURIUpdated) + if err := _IAVSDirectory.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 (_IAVSDirectory *IAVSDirectoryFilterer) ParseAVSMetadataURIUpdated(log types.Log) (*IAVSDirectoryAVSMetadataURIUpdated, error) { + event := new(IAVSDirectoryAVSMetadataURIUpdated) + if err := _IAVSDirectory.contract.UnpackLog(event, "AVSMetadataURIUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IAVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator is returned from FilterOperatorAVSRegistrationStatusUpdated and is used to iterate over the raw logs and unpacked data for OperatorAVSRegistrationStatusUpdated events raised by the IAVSDirectory contract. +type IAVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator struct { + Event *IAVSDirectoryOperatorAVSRegistrationStatusUpdated // Event containing the contract specifics 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 *IAVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator) 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(IAVSDirectoryOperatorAVSRegistrationStatusUpdated) + 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(IAVSDirectoryOperatorAVSRegistrationStatusUpdated) + 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 *IAVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IAVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IAVSDirectoryOperatorAVSRegistrationStatusUpdated represents a OperatorAVSRegistrationStatusUpdated event raised by the IAVSDirectory contract. +type IAVSDirectoryOperatorAVSRegistrationStatusUpdated struct { + Operator common.Address + Avs common.Address + Status uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorAVSRegistrationStatusUpdated is a free log retrieval operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// +// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) +func (_IAVSDirectory *IAVSDirectoryFilterer) FilterOperatorAVSRegistrationStatusUpdated(opts *bind.FilterOpts, operator []common.Address, avs []common.Address) (*IAVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _IAVSDirectory.contract.FilterLogs(opts, "OperatorAVSRegistrationStatusUpdated", operatorRule, avsRule) + if err != nil { + return nil, err + } + return &IAVSDirectoryOperatorAVSRegistrationStatusUpdatedIterator{contract: _IAVSDirectory.contract, event: "OperatorAVSRegistrationStatusUpdated", logs: logs, sub: sub}, nil +} + +// WatchOperatorAVSRegistrationStatusUpdated is a free log subscription operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// +// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) +func (_IAVSDirectory *IAVSDirectoryFilterer) WatchOperatorAVSRegistrationStatusUpdated(opts *bind.WatchOpts, sink chan<- *IAVSDirectoryOperatorAVSRegistrationStatusUpdated, operator []common.Address, avs []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var avsRule []interface{} + for _, avsItem := range avs { + avsRule = append(avsRule, avsItem) + } + + logs, sub, err := _IAVSDirectory.contract.WatchLogs(opts, "OperatorAVSRegistrationStatusUpdated", operatorRule, avsRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IAVSDirectoryOperatorAVSRegistrationStatusUpdated) + if err := _IAVSDirectory.contract.UnpackLog(event, "OperatorAVSRegistrationStatusUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorAVSRegistrationStatusUpdated is a log parse operation binding the contract event 0xf0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41. +// +// Solidity: event OperatorAVSRegistrationStatusUpdated(address indexed operator, address indexed avs, uint8 status) +func (_IAVSDirectory *IAVSDirectoryFilterer) ParseOperatorAVSRegistrationStatusUpdated(log types.Log) (*IAVSDirectoryOperatorAVSRegistrationStatusUpdated, error) { + event := new(IAVSDirectoryOperatorAVSRegistrationStatusUpdated) + if err := _IAVSDirectory.contract.UnpackLog(event, "OperatorAVSRegistrationStatusUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/IAVSDirectory/tmp.abi b/pkg/bindings/IAVSDirectory/tmp.abi new file mode 100644 index 000000000..5db9b7e2e --- /dev/null +++ b/pkg/bindings/IAVSDirectory/tmp.abi @@ -0,0 +1,178 @@ +[ + { + "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": "deregisterOperatorFromAVS", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "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": "struct ISignatureUtils.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": "enum IAVSDirectory.OperatorAVSRegistrationStatus" + } + ], + "anonymous": false + } +] diff --git a/pkg/bindings/IAVSDirectory/tmp.bin b/pkg/bindings/IAVSDirectory/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/IAVSDirectory/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/IBeaconChainOracle/binding.go b/pkg/bindings/IBeaconChainOracle/binding.go new file mode 100644 index 000000000..f46878adf --- /dev/null +++ b/pkg/bindings/IBeaconChainOracle/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 IBeaconChainOracle + +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 +) + +// IBeaconChainOracleMetaData contains all meta data concerning the IBeaconChainOracle contract. +var IBeaconChainOracleMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"timestampToBlockRoot\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"}]", +} + +// IBeaconChainOracleABI is the input ABI used to generate the binding from. +// Deprecated: Use IBeaconChainOracleMetaData.ABI instead. +var IBeaconChainOracleABI = IBeaconChainOracleMetaData.ABI + +// IBeaconChainOracle is an auto generated Go binding around an Ethereum contract. +type IBeaconChainOracle struct { + IBeaconChainOracleCaller // Read-only binding to the contract + IBeaconChainOracleTransactor // Write-only binding to the contract + IBeaconChainOracleFilterer // Log filterer for contract events +} + +// IBeaconChainOracleCaller is an auto generated read-only Go binding around an Ethereum contract. +type IBeaconChainOracleCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IBeaconChainOracleTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IBeaconChainOracleTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IBeaconChainOracleFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IBeaconChainOracleFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IBeaconChainOracleSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IBeaconChainOracleSession struct { + Contract *IBeaconChainOracle // 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 +} + +// IBeaconChainOracleCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IBeaconChainOracleCallerSession struct { + Contract *IBeaconChainOracleCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IBeaconChainOracleTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IBeaconChainOracleTransactorSession struct { + Contract *IBeaconChainOracleTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IBeaconChainOracleRaw is an auto generated low-level Go binding around an Ethereum contract. +type IBeaconChainOracleRaw struct { + Contract *IBeaconChainOracle // Generic contract binding to access the raw methods on +} + +// IBeaconChainOracleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IBeaconChainOracleCallerRaw struct { + Contract *IBeaconChainOracleCaller // Generic read-only contract binding to access the raw methods on +} + +// IBeaconChainOracleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IBeaconChainOracleTransactorRaw struct { + Contract *IBeaconChainOracleTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIBeaconChainOracle creates a new instance of IBeaconChainOracle, bound to a specific deployed contract. +func NewIBeaconChainOracle(address common.Address, backend bind.ContractBackend) (*IBeaconChainOracle, error) { + contract, err := bindIBeaconChainOracle(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IBeaconChainOracle{IBeaconChainOracleCaller: IBeaconChainOracleCaller{contract: contract}, IBeaconChainOracleTransactor: IBeaconChainOracleTransactor{contract: contract}, IBeaconChainOracleFilterer: IBeaconChainOracleFilterer{contract: contract}}, nil +} + +// NewIBeaconChainOracleCaller creates a new read-only instance of IBeaconChainOracle, bound to a specific deployed contract. +func NewIBeaconChainOracleCaller(address common.Address, caller bind.ContractCaller) (*IBeaconChainOracleCaller, error) { + contract, err := bindIBeaconChainOracle(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IBeaconChainOracleCaller{contract: contract}, nil +} + +// NewIBeaconChainOracleTransactor creates a new write-only instance of IBeaconChainOracle, bound to a specific deployed contract. +func NewIBeaconChainOracleTransactor(address common.Address, transactor bind.ContractTransactor) (*IBeaconChainOracleTransactor, error) { + contract, err := bindIBeaconChainOracle(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IBeaconChainOracleTransactor{contract: contract}, nil +} + +// NewIBeaconChainOracleFilterer creates a new log filterer instance of IBeaconChainOracle, bound to a specific deployed contract. +func NewIBeaconChainOracleFilterer(address common.Address, filterer bind.ContractFilterer) (*IBeaconChainOracleFilterer, error) { + contract, err := bindIBeaconChainOracle(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IBeaconChainOracleFilterer{contract: contract}, nil +} + +// bindIBeaconChainOracle binds a generic wrapper to an already deployed contract. +func bindIBeaconChainOracle(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IBeaconChainOracleMetaData.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 (_IBeaconChainOracle *IBeaconChainOracleRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IBeaconChainOracle.Contract.IBeaconChainOracleCaller.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 (_IBeaconChainOracle *IBeaconChainOracleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IBeaconChainOracle.Contract.IBeaconChainOracleTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IBeaconChainOracle *IBeaconChainOracleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IBeaconChainOracle.Contract.IBeaconChainOracleTransactor.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 (_IBeaconChainOracle *IBeaconChainOracleCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IBeaconChainOracle.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 (_IBeaconChainOracle *IBeaconChainOracleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IBeaconChainOracle.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IBeaconChainOracle *IBeaconChainOracleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IBeaconChainOracle.Contract.contract.Transact(opts, method, params...) +} + +// TimestampToBlockRoot is a free data retrieval call binding the contract method 0x643599f2. +// +// Solidity: function timestampToBlockRoot(uint256 timestamp) view returns(bytes32) +func (_IBeaconChainOracle *IBeaconChainOracleCaller) TimestampToBlockRoot(opts *bind.CallOpts, timestamp *big.Int) ([32]byte, error) { + var out []interface{} + err := _IBeaconChainOracle.contract.Call(opts, &out, "timestampToBlockRoot", timestamp) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// TimestampToBlockRoot is a free data retrieval call binding the contract method 0x643599f2. +// +// Solidity: function timestampToBlockRoot(uint256 timestamp) view returns(bytes32) +func (_IBeaconChainOracle *IBeaconChainOracleSession) TimestampToBlockRoot(timestamp *big.Int) ([32]byte, error) { + return _IBeaconChainOracle.Contract.TimestampToBlockRoot(&_IBeaconChainOracle.CallOpts, timestamp) +} + +// TimestampToBlockRoot is a free data retrieval call binding the contract method 0x643599f2. +// +// Solidity: function timestampToBlockRoot(uint256 timestamp) view returns(bytes32) +func (_IBeaconChainOracle *IBeaconChainOracleCallerSession) TimestampToBlockRoot(timestamp *big.Int) ([32]byte, error) { + return _IBeaconChainOracle.Contract.TimestampToBlockRoot(&_IBeaconChainOracle.CallOpts, timestamp) +} diff --git a/pkg/bindings/IBeaconChainOracle/tmp.abi b/pkg/bindings/IBeaconChainOracle/tmp.abi new file mode 100644 index 000000000..4c6bd5130 --- /dev/null +++ b/pkg/bindings/IBeaconChainOracle/tmp.abi @@ -0,0 +1,21 @@ +[ + { + "type": "function", + "name": "timestampToBlockRoot", + "inputs": [ + { + "name": "timestamp", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + } +] diff --git a/pkg/bindings/IBeaconChainOracle/tmp.bin b/pkg/bindings/IBeaconChainOracle/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/IBeaconChainOracle/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/IDelayedWithdrawalRouter/binding.go b/pkg/bindings/IDelayedWithdrawalRouter/binding.go new file mode 100644 index 000000000..86d4473b4 --- /dev/null +++ b/pkg/bindings/IDelayedWithdrawalRouter/binding.go @@ -0,0 +1,902 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package IDelayedWithdrawalRouter + +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 +) + +// IDelayedWithdrawalRouterDelayedWithdrawal is an auto generated low-level Go binding around an user-defined struct. +type IDelayedWithdrawalRouterDelayedWithdrawal struct { + Amount *big.Int + BlockCreated uint32 +} + +// IDelayedWithdrawalRouterUserDelayedWithdrawals is an auto generated low-level Go binding around an user-defined struct. +type IDelayedWithdrawalRouterUserDelayedWithdrawals struct { + DelayedWithdrawalsCompleted *big.Int + DelayedWithdrawals []IDelayedWithdrawalRouterDelayedWithdrawal +} + +// IDelayedWithdrawalRouterMetaData contains all meta data concerning the IDelayedWithdrawalRouter contract. +var IDelayedWithdrawalRouterMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"canClaimDelayedWithdrawal\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimDelayedWithdrawals\",\"inputs\":[{\"name\":\"maxNumberOfWithdrawalsToClaim\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"claimDelayedWithdrawals\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"maxNumberOfWithdrawalsToClaim\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createDelayedWithdrawal\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"getClaimableUserDelayedWithdrawals\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIDelayedWithdrawalRouter.DelayedWithdrawal[]\",\"components\":[{\"name\":\"amount\",\"type\":\"uint224\",\"internalType\":\"uint224\"},{\"name\":\"blockCreated\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getUserDelayedWithdrawals\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structIDelayedWithdrawalRouter.DelayedWithdrawal[]\",\"components\":[{\"name\":\"amount\",\"type\":\"uint224\",\"internalType\":\"uint224\"},{\"name\":\"blockCreated\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setWithdrawalDelayBlocks\",\"inputs\":[{\"name\":\"newValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"userDelayedWithdrawalByIndex\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIDelayedWithdrawalRouter.DelayedWithdrawal\",\"components\":[{\"name\":\"amount\",\"type\":\"uint224\",\"internalType\":\"uint224\"},{\"name\":\"blockCreated\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"userWithdrawals\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIDelayedWithdrawalRouter.UserDelayedWithdrawals\",\"components\":[{\"name\":\"delayedWithdrawalsCompleted\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"delayedWithdrawals\",\"type\":\"tuple[]\",\"internalType\":\"structIDelayedWithdrawalRouter.DelayedWithdrawal[]\",\"components\":[{\"name\":\"amount\",\"type\":\"uint224\",\"internalType\":\"uint224\"},{\"name\":\"blockCreated\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"userWithdrawalsLength\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawalDelayBlocks\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"DelayedWithdrawalCreated\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"index\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelayedWithdrawalsClaimed\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amountClaimed\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"delayedWithdrawalsCompleted\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalDelayBlocksSet\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", +} + +// IDelayedWithdrawalRouterABI is the input ABI used to generate the binding from. +// Deprecated: Use IDelayedWithdrawalRouterMetaData.ABI instead. +var IDelayedWithdrawalRouterABI = IDelayedWithdrawalRouterMetaData.ABI + +// IDelayedWithdrawalRouter is an auto generated Go binding around an Ethereum contract. +type IDelayedWithdrawalRouter struct { + IDelayedWithdrawalRouterCaller // Read-only binding to the contract + IDelayedWithdrawalRouterTransactor // Write-only binding to the contract + IDelayedWithdrawalRouterFilterer // Log filterer for contract events +} + +// IDelayedWithdrawalRouterCaller is an auto generated read-only Go binding around an Ethereum contract. +type IDelayedWithdrawalRouterCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IDelayedWithdrawalRouterTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IDelayedWithdrawalRouterTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IDelayedWithdrawalRouterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IDelayedWithdrawalRouterFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IDelayedWithdrawalRouterSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IDelayedWithdrawalRouterSession struct { + Contract *IDelayedWithdrawalRouter // 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 +} + +// IDelayedWithdrawalRouterCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IDelayedWithdrawalRouterCallerSession struct { + Contract *IDelayedWithdrawalRouterCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IDelayedWithdrawalRouterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IDelayedWithdrawalRouterTransactorSession struct { + Contract *IDelayedWithdrawalRouterTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IDelayedWithdrawalRouterRaw is an auto generated low-level Go binding around an Ethereum contract. +type IDelayedWithdrawalRouterRaw struct { + Contract *IDelayedWithdrawalRouter // Generic contract binding to access the raw methods on +} + +// IDelayedWithdrawalRouterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IDelayedWithdrawalRouterCallerRaw struct { + Contract *IDelayedWithdrawalRouterCaller // Generic read-only contract binding to access the raw methods on +} + +// IDelayedWithdrawalRouterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IDelayedWithdrawalRouterTransactorRaw struct { + Contract *IDelayedWithdrawalRouterTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIDelayedWithdrawalRouter creates a new instance of IDelayedWithdrawalRouter, bound to a specific deployed contract. +func NewIDelayedWithdrawalRouter(address common.Address, backend bind.ContractBackend) (*IDelayedWithdrawalRouter, error) { + contract, err := bindIDelayedWithdrawalRouter(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IDelayedWithdrawalRouter{IDelayedWithdrawalRouterCaller: IDelayedWithdrawalRouterCaller{contract: contract}, IDelayedWithdrawalRouterTransactor: IDelayedWithdrawalRouterTransactor{contract: contract}, IDelayedWithdrawalRouterFilterer: IDelayedWithdrawalRouterFilterer{contract: contract}}, nil +} + +// NewIDelayedWithdrawalRouterCaller creates a new read-only instance of IDelayedWithdrawalRouter, bound to a specific deployed contract. +func NewIDelayedWithdrawalRouterCaller(address common.Address, caller bind.ContractCaller) (*IDelayedWithdrawalRouterCaller, error) { + contract, err := bindIDelayedWithdrawalRouter(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IDelayedWithdrawalRouterCaller{contract: contract}, nil +} + +// NewIDelayedWithdrawalRouterTransactor creates a new write-only instance of IDelayedWithdrawalRouter, bound to a specific deployed contract. +func NewIDelayedWithdrawalRouterTransactor(address common.Address, transactor bind.ContractTransactor) (*IDelayedWithdrawalRouterTransactor, error) { + contract, err := bindIDelayedWithdrawalRouter(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IDelayedWithdrawalRouterTransactor{contract: contract}, nil +} + +// NewIDelayedWithdrawalRouterFilterer creates a new log filterer instance of IDelayedWithdrawalRouter, bound to a specific deployed contract. +func NewIDelayedWithdrawalRouterFilterer(address common.Address, filterer bind.ContractFilterer) (*IDelayedWithdrawalRouterFilterer, error) { + contract, err := bindIDelayedWithdrawalRouter(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IDelayedWithdrawalRouterFilterer{contract: contract}, nil +} + +// bindIDelayedWithdrawalRouter binds a generic wrapper to an already deployed contract. +func bindIDelayedWithdrawalRouter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IDelayedWithdrawalRouterMetaData.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 (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IDelayedWithdrawalRouter.Contract.IDelayedWithdrawalRouterCaller.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 (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IDelayedWithdrawalRouter.Contract.IDelayedWithdrawalRouterTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IDelayedWithdrawalRouter.Contract.IDelayedWithdrawalRouterTransactor.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 (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IDelayedWithdrawalRouter.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 (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IDelayedWithdrawalRouter.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IDelayedWithdrawalRouter.Contract.contract.Transact(opts, method, params...) +} + +// CanClaimDelayedWithdrawal is a free data retrieval call binding the contract method 0x75608896. +// +// Solidity: function canClaimDelayedWithdrawal(address user, uint256 index) view returns(bool) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterCaller) CanClaimDelayedWithdrawal(opts *bind.CallOpts, user common.Address, index *big.Int) (bool, error) { + var out []interface{} + err := _IDelayedWithdrawalRouter.contract.Call(opts, &out, "canClaimDelayedWithdrawal", user, index) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// CanClaimDelayedWithdrawal is a free data retrieval call binding the contract method 0x75608896. +// +// Solidity: function canClaimDelayedWithdrawal(address user, uint256 index) view returns(bool) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterSession) CanClaimDelayedWithdrawal(user common.Address, index *big.Int) (bool, error) { + return _IDelayedWithdrawalRouter.Contract.CanClaimDelayedWithdrawal(&_IDelayedWithdrawalRouter.CallOpts, user, index) +} + +// CanClaimDelayedWithdrawal is a free data retrieval call binding the contract method 0x75608896. +// +// Solidity: function canClaimDelayedWithdrawal(address user, uint256 index) view returns(bool) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterCallerSession) CanClaimDelayedWithdrawal(user common.Address, index *big.Int) (bool, error) { + return _IDelayedWithdrawalRouter.Contract.CanClaimDelayedWithdrawal(&_IDelayedWithdrawalRouter.CallOpts, user, index) +} + +// GetClaimableUserDelayedWithdrawals is a free data retrieval call binding the contract method 0x1f39d87f. +// +// Solidity: function getClaimableUserDelayedWithdrawals(address user) view returns((uint224,uint32)[]) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterCaller) GetClaimableUserDelayedWithdrawals(opts *bind.CallOpts, user common.Address) ([]IDelayedWithdrawalRouterDelayedWithdrawal, error) { + var out []interface{} + err := _IDelayedWithdrawalRouter.contract.Call(opts, &out, "getClaimableUserDelayedWithdrawals", user) + + if err != nil { + return *new([]IDelayedWithdrawalRouterDelayedWithdrawal), err + } + + out0 := *abi.ConvertType(out[0], new([]IDelayedWithdrawalRouterDelayedWithdrawal)).(*[]IDelayedWithdrawalRouterDelayedWithdrawal) + + return out0, err + +} + +// GetClaimableUserDelayedWithdrawals is a free data retrieval call binding the contract method 0x1f39d87f. +// +// Solidity: function getClaimableUserDelayedWithdrawals(address user) view returns((uint224,uint32)[]) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterSession) GetClaimableUserDelayedWithdrawals(user common.Address) ([]IDelayedWithdrawalRouterDelayedWithdrawal, error) { + return _IDelayedWithdrawalRouter.Contract.GetClaimableUserDelayedWithdrawals(&_IDelayedWithdrawalRouter.CallOpts, user) +} + +// GetClaimableUserDelayedWithdrawals is a free data retrieval call binding the contract method 0x1f39d87f. +// +// Solidity: function getClaimableUserDelayedWithdrawals(address user) view returns((uint224,uint32)[]) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterCallerSession) GetClaimableUserDelayedWithdrawals(user common.Address) ([]IDelayedWithdrawalRouterDelayedWithdrawal, error) { + return _IDelayedWithdrawalRouter.Contract.GetClaimableUserDelayedWithdrawals(&_IDelayedWithdrawalRouter.CallOpts, user) +} + +// GetUserDelayedWithdrawals is a free data retrieval call binding the contract method 0x3e1de008. +// +// Solidity: function getUserDelayedWithdrawals(address user) view returns((uint224,uint32)[]) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterCaller) GetUserDelayedWithdrawals(opts *bind.CallOpts, user common.Address) ([]IDelayedWithdrawalRouterDelayedWithdrawal, error) { + var out []interface{} + err := _IDelayedWithdrawalRouter.contract.Call(opts, &out, "getUserDelayedWithdrawals", user) + + if err != nil { + return *new([]IDelayedWithdrawalRouterDelayedWithdrawal), err + } + + out0 := *abi.ConvertType(out[0], new([]IDelayedWithdrawalRouterDelayedWithdrawal)).(*[]IDelayedWithdrawalRouterDelayedWithdrawal) + + return out0, err + +} + +// GetUserDelayedWithdrawals is a free data retrieval call binding the contract method 0x3e1de008. +// +// Solidity: function getUserDelayedWithdrawals(address user) view returns((uint224,uint32)[]) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterSession) GetUserDelayedWithdrawals(user common.Address) ([]IDelayedWithdrawalRouterDelayedWithdrawal, error) { + return _IDelayedWithdrawalRouter.Contract.GetUserDelayedWithdrawals(&_IDelayedWithdrawalRouter.CallOpts, user) +} + +// GetUserDelayedWithdrawals is a free data retrieval call binding the contract method 0x3e1de008. +// +// Solidity: function getUserDelayedWithdrawals(address user) view returns((uint224,uint32)[]) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterCallerSession) GetUserDelayedWithdrawals(user common.Address) ([]IDelayedWithdrawalRouterDelayedWithdrawal, error) { + return _IDelayedWithdrawalRouter.Contract.GetUserDelayedWithdrawals(&_IDelayedWithdrawalRouter.CallOpts, user) +} + +// UserDelayedWithdrawalByIndex is a free data retrieval call binding the contract method 0x85594e58. +// +// Solidity: function userDelayedWithdrawalByIndex(address user, uint256 index) view returns((uint224,uint32)) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterCaller) UserDelayedWithdrawalByIndex(opts *bind.CallOpts, user common.Address, index *big.Int) (IDelayedWithdrawalRouterDelayedWithdrawal, error) { + var out []interface{} + err := _IDelayedWithdrawalRouter.contract.Call(opts, &out, "userDelayedWithdrawalByIndex", user, index) + + if err != nil { + return *new(IDelayedWithdrawalRouterDelayedWithdrawal), err + } + + out0 := *abi.ConvertType(out[0], new(IDelayedWithdrawalRouterDelayedWithdrawal)).(*IDelayedWithdrawalRouterDelayedWithdrawal) + + return out0, err + +} + +// UserDelayedWithdrawalByIndex is a free data retrieval call binding the contract method 0x85594e58. +// +// Solidity: function userDelayedWithdrawalByIndex(address user, uint256 index) view returns((uint224,uint32)) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterSession) UserDelayedWithdrawalByIndex(user common.Address, index *big.Int) (IDelayedWithdrawalRouterDelayedWithdrawal, error) { + return _IDelayedWithdrawalRouter.Contract.UserDelayedWithdrawalByIndex(&_IDelayedWithdrawalRouter.CallOpts, user, index) +} + +// UserDelayedWithdrawalByIndex is a free data retrieval call binding the contract method 0x85594e58. +// +// Solidity: function userDelayedWithdrawalByIndex(address user, uint256 index) view returns((uint224,uint32)) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterCallerSession) UserDelayedWithdrawalByIndex(user common.Address, index *big.Int) (IDelayedWithdrawalRouterDelayedWithdrawal, error) { + return _IDelayedWithdrawalRouter.Contract.UserDelayedWithdrawalByIndex(&_IDelayedWithdrawalRouter.CallOpts, user, index) +} + +// UserWithdrawals is a free data retrieval call binding the contract method 0xecb7cb1b. +// +// Solidity: function userWithdrawals(address user) view returns((uint256,(uint224,uint32)[])) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterCaller) UserWithdrawals(opts *bind.CallOpts, user common.Address) (IDelayedWithdrawalRouterUserDelayedWithdrawals, error) { + var out []interface{} + err := _IDelayedWithdrawalRouter.contract.Call(opts, &out, "userWithdrawals", user) + + if err != nil { + return *new(IDelayedWithdrawalRouterUserDelayedWithdrawals), err + } + + out0 := *abi.ConvertType(out[0], new(IDelayedWithdrawalRouterUserDelayedWithdrawals)).(*IDelayedWithdrawalRouterUserDelayedWithdrawals) + + return out0, err + +} + +// UserWithdrawals is a free data retrieval call binding the contract method 0xecb7cb1b. +// +// Solidity: function userWithdrawals(address user) view returns((uint256,(uint224,uint32)[])) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterSession) UserWithdrawals(user common.Address) (IDelayedWithdrawalRouterUserDelayedWithdrawals, error) { + return _IDelayedWithdrawalRouter.Contract.UserWithdrawals(&_IDelayedWithdrawalRouter.CallOpts, user) +} + +// UserWithdrawals is a free data retrieval call binding the contract method 0xecb7cb1b. +// +// Solidity: function userWithdrawals(address user) view returns((uint256,(uint224,uint32)[])) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterCallerSession) UserWithdrawals(user common.Address) (IDelayedWithdrawalRouterUserDelayedWithdrawals, error) { + return _IDelayedWithdrawalRouter.Contract.UserWithdrawals(&_IDelayedWithdrawalRouter.CallOpts, user) +} + +// UserWithdrawalsLength is a free data retrieval call binding the contract method 0xe4f4f887. +// +// Solidity: function userWithdrawalsLength(address user) view returns(uint256) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterCaller) UserWithdrawalsLength(opts *bind.CallOpts, user common.Address) (*big.Int, error) { + var out []interface{} + err := _IDelayedWithdrawalRouter.contract.Call(opts, &out, "userWithdrawalsLength", user) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UserWithdrawalsLength is a free data retrieval call binding the contract method 0xe4f4f887. +// +// Solidity: function userWithdrawalsLength(address user) view returns(uint256) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterSession) UserWithdrawalsLength(user common.Address) (*big.Int, error) { + return _IDelayedWithdrawalRouter.Contract.UserWithdrawalsLength(&_IDelayedWithdrawalRouter.CallOpts, user) +} + +// UserWithdrawalsLength is a free data retrieval call binding the contract method 0xe4f4f887. +// +// Solidity: function userWithdrawalsLength(address user) view returns(uint256) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterCallerSession) UserWithdrawalsLength(user common.Address) (*big.Int, error) { + return _IDelayedWithdrawalRouter.Contract.UserWithdrawalsLength(&_IDelayedWithdrawalRouter.CallOpts, user) +} + +// WithdrawalDelayBlocks is a free data retrieval call binding the contract method 0x50f73e7c. +// +// Solidity: function withdrawalDelayBlocks() view returns(uint256) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterCaller) WithdrawalDelayBlocks(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IDelayedWithdrawalRouter.contract.Call(opts, &out, "withdrawalDelayBlocks") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// WithdrawalDelayBlocks is a free data retrieval call binding the contract method 0x50f73e7c. +// +// Solidity: function withdrawalDelayBlocks() view returns(uint256) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterSession) WithdrawalDelayBlocks() (*big.Int, error) { + return _IDelayedWithdrawalRouter.Contract.WithdrawalDelayBlocks(&_IDelayedWithdrawalRouter.CallOpts) +} + +// WithdrawalDelayBlocks is a free data retrieval call binding the contract method 0x50f73e7c. +// +// Solidity: function withdrawalDelayBlocks() view returns(uint256) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterCallerSession) WithdrawalDelayBlocks() (*big.Int, error) { + return _IDelayedWithdrawalRouter.Contract.WithdrawalDelayBlocks(&_IDelayedWithdrawalRouter.CallOpts) +} + +// ClaimDelayedWithdrawals is a paid mutator transaction binding the contract method 0xd44e1b76. +// +// Solidity: function claimDelayedWithdrawals(uint256 maxNumberOfWithdrawalsToClaim) returns() +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterTransactor) ClaimDelayedWithdrawals(opts *bind.TransactOpts, maxNumberOfWithdrawalsToClaim *big.Int) (*types.Transaction, error) { + return _IDelayedWithdrawalRouter.contract.Transact(opts, "claimDelayedWithdrawals", maxNumberOfWithdrawalsToClaim) +} + +// ClaimDelayedWithdrawals is a paid mutator transaction binding the contract method 0xd44e1b76. +// +// Solidity: function claimDelayedWithdrawals(uint256 maxNumberOfWithdrawalsToClaim) returns() +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterSession) ClaimDelayedWithdrawals(maxNumberOfWithdrawalsToClaim *big.Int) (*types.Transaction, error) { + return _IDelayedWithdrawalRouter.Contract.ClaimDelayedWithdrawals(&_IDelayedWithdrawalRouter.TransactOpts, maxNumberOfWithdrawalsToClaim) +} + +// ClaimDelayedWithdrawals is a paid mutator transaction binding the contract method 0xd44e1b76. +// +// Solidity: function claimDelayedWithdrawals(uint256 maxNumberOfWithdrawalsToClaim) returns() +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterTransactorSession) ClaimDelayedWithdrawals(maxNumberOfWithdrawalsToClaim *big.Int) (*types.Transaction, error) { + return _IDelayedWithdrawalRouter.Contract.ClaimDelayedWithdrawals(&_IDelayedWithdrawalRouter.TransactOpts, maxNumberOfWithdrawalsToClaim) +} + +// ClaimDelayedWithdrawals0 is a paid mutator transaction binding the contract method 0xe5db06c0. +// +// Solidity: function claimDelayedWithdrawals(address recipient, uint256 maxNumberOfWithdrawalsToClaim) returns() +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterTransactor) ClaimDelayedWithdrawals0(opts *bind.TransactOpts, recipient common.Address, maxNumberOfWithdrawalsToClaim *big.Int) (*types.Transaction, error) { + return _IDelayedWithdrawalRouter.contract.Transact(opts, "claimDelayedWithdrawals0", recipient, maxNumberOfWithdrawalsToClaim) +} + +// ClaimDelayedWithdrawals0 is a paid mutator transaction binding the contract method 0xe5db06c0. +// +// Solidity: function claimDelayedWithdrawals(address recipient, uint256 maxNumberOfWithdrawalsToClaim) returns() +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterSession) ClaimDelayedWithdrawals0(recipient common.Address, maxNumberOfWithdrawalsToClaim *big.Int) (*types.Transaction, error) { + return _IDelayedWithdrawalRouter.Contract.ClaimDelayedWithdrawals0(&_IDelayedWithdrawalRouter.TransactOpts, recipient, maxNumberOfWithdrawalsToClaim) +} + +// ClaimDelayedWithdrawals0 is a paid mutator transaction binding the contract method 0xe5db06c0. +// +// Solidity: function claimDelayedWithdrawals(address recipient, uint256 maxNumberOfWithdrawalsToClaim) returns() +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterTransactorSession) ClaimDelayedWithdrawals0(recipient common.Address, maxNumberOfWithdrawalsToClaim *big.Int) (*types.Transaction, error) { + return _IDelayedWithdrawalRouter.Contract.ClaimDelayedWithdrawals0(&_IDelayedWithdrawalRouter.TransactOpts, recipient, maxNumberOfWithdrawalsToClaim) +} + +// CreateDelayedWithdrawal is a paid mutator transaction binding the contract method 0xc0db354c. +// +// Solidity: function createDelayedWithdrawal(address podOwner, address recipient) payable returns() +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterTransactor) CreateDelayedWithdrawal(opts *bind.TransactOpts, podOwner common.Address, recipient common.Address) (*types.Transaction, error) { + return _IDelayedWithdrawalRouter.contract.Transact(opts, "createDelayedWithdrawal", podOwner, recipient) +} + +// CreateDelayedWithdrawal is a paid mutator transaction binding the contract method 0xc0db354c. +// +// Solidity: function createDelayedWithdrawal(address podOwner, address recipient) payable returns() +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterSession) CreateDelayedWithdrawal(podOwner common.Address, recipient common.Address) (*types.Transaction, error) { + return _IDelayedWithdrawalRouter.Contract.CreateDelayedWithdrawal(&_IDelayedWithdrawalRouter.TransactOpts, podOwner, recipient) +} + +// CreateDelayedWithdrawal is a paid mutator transaction binding the contract method 0xc0db354c. +// +// Solidity: function createDelayedWithdrawal(address podOwner, address recipient) payable returns() +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterTransactorSession) CreateDelayedWithdrawal(podOwner common.Address, recipient common.Address) (*types.Transaction, error) { + return _IDelayedWithdrawalRouter.Contract.CreateDelayedWithdrawal(&_IDelayedWithdrawalRouter.TransactOpts, podOwner, recipient) +} + +// SetWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x4d50f9a4. +// +// Solidity: function setWithdrawalDelayBlocks(uint256 newValue) returns() +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterTransactor) SetWithdrawalDelayBlocks(opts *bind.TransactOpts, newValue *big.Int) (*types.Transaction, error) { + return _IDelayedWithdrawalRouter.contract.Transact(opts, "setWithdrawalDelayBlocks", newValue) +} + +// SetWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x4d50f9a4. +// +// Solidity: function setWithdrawalDelayBlocks(uint256 newValue) returns() +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterSession) SetWithdrawalDelayBlocks(newValue *big.Int) (*types.Transaction, error) { + return _IDelayedWithdrawalRouter.Contract.SetWithdrawalDelayBlocks(&_IDelayedWithdrawalRouter.TransactOpts, newValue) +} + +// SetWithdrawalDelayBlocks is a paid mutator transaction binding the contract method 0x4d50f9a4. +// +// Solidity: function setWithdrawalDelayBlocks(uint256 newValue) returns() +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterTransactorSession) SetWithdrawalDelayBlocks(newValue *big.Int) (*types.Transaction, error) { + return _IDelayedWithdrawalRouter.Contract.SetWithdrawalDelayBlocks(&_IDelayedWithdrawalRouter.TransactOpts, newValue) +} + +// IDelayedWithdrawalRouterDelayedWithdrawalCreatedIterator is returned from FilterDelayedWithdrawalCreated and is used to iterate over the raw logs and unpacked data for DelayedWithdrawalCreated events raised by the IDelayedWithdrawalRouter contract. +type IDelayedWithdrawalRouterDelayedWithdrawalCreatedIterator struct { + Event *IDelayedWithdrawalRouterDelayedWithdrawalCreated // Event containing the contract specifics 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 *IDelayedWithdrawalRouterDelayedWithdrawalCreatedIterator) 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(IDelayedWithdrawalRouterDelayedWithdrawalCreated) + 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(IDelayedWithdrawalRouterDelayedWithdrawalCreated) + 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 *IDelayedWithdrawalRouterDelayedWithdrawalCreatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IDelayedWithdrawalRouterDelayedWithdrawalCreatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IDelayedWithdrawalRouterDelayedWithdrawalCreated represents a DelayedWithdrawalCreated event raised by the IDelayedWithdrawalRouter contract. +type IDelayedWithdrawalRouterDelayedWithdrawalCreated struct { + PodOwner common.Address + Recipient common.Address + Amount *big.Int + Index *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelayedWithdrawalCreated is a free log retrieval operation binding the contract event 0xb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f59. +// +// Solidity: event DelayedWithdrawalCreated(address podOwner, address recipient, uint256 amount, uint256 index) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterFilterer) FilterDelayedWithdrawalCreated(opts *bind.FilterOpts) (*IDelayedWithdrawalRouterDelayedWithdrawalCreatedIterator, error) { + + logs, sub, err := _IDelayedWithdrawalRouter.contract.FilterLogs(opts, "DelayedWithdrawalCreated") + if err != nil { + return nil, err + } + return &IDelayedWithdrawalRouterDelayedWithdrawalCreatedIterator{contract: _IDelayedWithdrawalRouter.contract, event: "DelayedWithdrawalCreated", logs: logs, sub: sub}, nil +} + +// WatchDelayedWithdrawalCreated is a free log subscription operation binding the contract event 0xb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f59. +// +// Solidity: event DelayedWithdrawalCreated(address podOwner, address recipient, uint256 amount, uint256 index) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterFilterer) WatchDelayedWithdrawalCreated(opts *bind.WatchOpts, sink chan<- *IDelayedWithdrawalRouterDelayedWithdrawalCreated) (event.Subscription, error) { + + logs, sub, err := _IDelayedWithdrawalRouter.contract.WatchLogs(opts, "DelayedWithdrawalCreated") + 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(IDelayedWithdrawalRouterDelayedWithdrawalCreated) + if err := _IDelayedWithdrawalRouter.contract.UnpackLog(event, "DelayedWithdrawalCreated", 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 +} + +// ParseDelayedWithdrawalCreated is a log parse operation binding the contract event 0xb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f59. +// +// Solidity: event DelayedWithdrawalCreated(address podOwner, address recipient, uint256 amount, uint256 index) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterFilterer) ParseDelayedWithdrawalCreated(log types.Log) (*IDelayedWithdrawalRouterDelayedWithdrawalCreated, error) { + event := new(IDelayedWithdrawalRouterDelayedWithdrawalCreated) + if err := _IDelayedWithdrawalRouter.contract.UnpackLog(event, "DelayedWithdrawalCreated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IDelayedWithdrawalRouterDelayedWithdrawalsClaimedIterator is returned from FilterDelayedWithdrawalsClaimed and is used to iterate over the raw logs and unpacked data for DelayedWithdrawalsClaimed events raised by the IDelayedWithdrawalRouter contract. +type IDelayedWithdrawalRouterDelayedWithdrawalsClaimedIterator struct { + Event *IDelayedWithdrawalRouterDelayedWithdrawalsClaimed // Event containing the contract specifics 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 *IDelayedWithdrawalRouterDelayedWithdrawalsClaimedIterator) 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(IDelayedWithdrawalRouterDelayedWithdrawalsClaimed) + 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(IDelayedWithdrawalRouterDelayedWithdrawalsClaimed) + 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 *IDelayedWithdrawalRouterDelayedWithdrawalsClaimedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IDelayedWithdrawalRouterDelayedWithdrawalsClaimedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IDelayedWithdrawalRouterDelayedWithdrawalsClaimed represents a DelayedWithdrawalsClaimed event raised by the IDelayedWithdrawalRouter contract. +type IDelayedWithdrawalRouterDelayedWithdrawalsClaimed struct { + Recipient common.Address + AmountClaimed *big.Int + DelayedWithdrawalsCompleted *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDelayedWithdrawalsClaimed is a free log retrieval operation binding the contract event 0x6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb0943. +// +// Solidity: event DelayedWithdrawalsClaimed(address recipient, uint256 amountClaimed, uint256 delayedWithdrawalsCompleted) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterFilterer) FilterDelayedWithdrawalsClaimed(opts *bind.FilterOpts) (*IDelayedWithdrawalRouterDelayedWithdrawalsClaimedIterator, error) { + + logs, sub, err := _IDelayedWithdrawalRouter.contract.FilterLogs(opts, "DelayedWithdrawalsClaimed") + if err != nil { + return nil, err + } + return &IDelayedWithdrawalRouterDelayedWithdrawalsClaimedIterator{contract: _IDelayedWithdrawalRouter.contract, event: "DelayedWithdrawalsClaimed", logs: logs, sub: sub}, nil +} + +// WatchDelayedWithdrawalsClaimed is a free log subscription operation binding the contract event 0x6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb0943. +// +// Solidity: event DelayedWithdrawalsClaimed(address recipient, uint256 amountClaimed, uint256 delayedWithdrawalsCompleted) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterFilterer) WatchDelayedWithdrawalsClaimed(opts *bind.WatchOpts, sink chan<- *IDelayedWithdrawalRouterDelayedWithdrawalsClaimed) (event.Subscription, error) { + + logs, sub, err := _IDelayedWithdrawalRouter.contract.WatchLogs(opts, "DelayedWithdrawalsClaimed") + 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(IDelayedWithdrawalRouterDelayedWithdrawalsClaimed) + if err := _IDelayedWithdrawalRouter.contract.UnpackLog(event, "DelayedWithdrawalsClaimed", 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 +} + +// ParseDelayedWithdrawalsClaimed is a log parse operation binding the contract event 0x6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb0943. +// +// Solidity: event DelayedWithdrawalsClaimed(address recipient, uint256 amountClaimed, uint256 delayedWithdrawalsCompleted) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterFilterer) ParseDelayedWithdrawalsClaimed(log types.Log) (*IDelayedWithdrawalRouterDelayedWithdrawalsClaimed, error) { + event := new(IDelayedWithdrawalRouterDelayedWithdrawalsClaimed) + if err := _IDelayedWithdrawalRouter.contract.UnpackLog(event, "DelayedWithdrawalsClaimed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IDelayedWithdrawalRouterWithdrawalDelayBlocksSetIterator is returned from FilterWithdrawalDelayBlocksSet and is used to iterate over the raw logs and unpacked data for WithdrawalDelayBlocksSet events raised by the IDelayedWithdrawalRouter contract. +type IDelayedWithdrawalRouterWithdrawalDelayBlocksSetIterator struct { + Event *IDelayedWithdrawalRouterWithdrawalDelayBlocksSet // Event containing the contract specifics 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 *IDelayedWithdrawalRouterWithdrawalDelayBlocksSetIterator) 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(IDelayedWithdrawalRouterWithdrawalDelayBlocksSet) + 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(IDelayedWithdrawalRouterWithdrawalDelayBlocksSet) + 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 *IDelayedWithdrawalRouterWithdrawalDelayBlocksSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IDelayedWithdrawalRouterWithdrawalDelayBlocksSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IDelayedWithdrawalRouterWithdrawalDelayBlocksSet represents a WithdrawalDelayBlocksSet event raised by the IDelayedWithdrawalRouter contract. +type IDelayedWithdrawalRouterWithdrawalDelayBlocksSet struct { + PreviousValue *big.Int + NewValue *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawalDelayBlocksSet is a free log retrieval operation binding the contract event 0x4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e. +// +// Solidity: event WithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterFilterer) FilterWithdrawalDelayBlocksSet(opts *bind.FilterOpts) (*IDelayedWithdrawalRouterWithdrawalDelayBlocksSetIterator, error) { + + logs, sub, err := _IDelayedWithdrawalRouter.contract.FilterLogs(opts, "WithdrawalDelayBlocksSet") + if err != nil { + return nil, err + } + return &IDelayedWithdrawalRouterWithdrawalDelayBlocksSetIterator{contract: _IDelayedWithdrawalRouter.contract, event: "WithdrawalDelayBlocksSet", logs: logs, sub: sub}, nil +} + +// WatchWithdrawalDelayBlocksSet is a free log subscription operation binding the contract event 0x4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e. +// +// Solidity: event WithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterFilterer) WatchWithdrawalDelayBlocksSet(opts *bind.WatchOpts, sink chan<- *IDelayedWithdrawalRouterWithdrawalDelayBlocksSet) (event.Subscription, error) { + + logs, sub, err := _IDelayedWithdrawalRouter.contract.WatchLogs(opts, "WithdrawalDelayBlocksSet") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IDelayedWithdrawalRouterWithdrawalDelayBlocksSet) + if err := _IDelayedWithdrawalRouter.contract.UnpackLog(event, "WithdrawalDelayBlocksSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawalDelayBlocksSet is a log parse operation binding the contract event 0x4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e. +// +// Solidity: event WithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue) +func (_IDelayedWithdrawalRouter *IDelayedWithdrawalRouterFilterer) ParseWithdrawalDelayBlocksSet(log types.Log) (*IDelayedWithdrawalRouterWithdrawalDelayBlocksSet, error) { + event := new(IDelayedWithdrawalRouterWithdrawalDelayBlocksSet) + if err := _IDelayedWithdrawalRouter.contract.UnpackLog(event, "WithdrawalDelayBlocksSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/IDelayedWithdrawalRouter/tmp.abi b/pkg/bindings/IDelayedWithdrawalRouter/tmp.abi new file mode 100644 index 000000000..865b60f09 --- /dev/null +++ b/pkg/bindings/IDelayedWithdrawalRouter/tmp.abi @@ -0,0 +1,336 @@ +[ + { + "type": "function", + "name": "canClaimDelayedWithdrawal", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "claimDelayedWithdrawals", + "inputs": [ + { + "name": "maxNumberOfWithdrawalsToClaim", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "claimDelayedWithdrawals", + "inputs": [ + { + "name": "recipient", + "type": "address", + "internalType": "address" + }, + { + "name": "maxNumberOfWithdrawalsToClaim", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "createDelayedWithdrawal", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "getClaimableUserDelayedWithdrawals", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple[]", + "internalType": "struct IDelayedWithdrawalRouter.DelayedWithdrawal[]", + "components": [ + { + "name": "amount", + "type": "uint224", + "internalType": "uint224" + }, + { + "name": "blockCreated", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getUserDelayedWithdrawals", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple[]", + "internalType": "struct IDelayedWithdrawalRouter.DelayedWithdrawal[]", + "components": [ + { + "name": "amount", + "type": "uint224", + "internalType": "uint224" + }, + { + "name": "blockCreated", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setWithdrawalDelayBlocks", + "inputs": [ + { + "name": "newValue", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "userDelayedWithdrawalByIndex", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IDelayedWithdrawalRouter.DelayedWithdrawal", + "components": [ + { + "name": "amount", + "type": "uint224", + "internalType": "uint224" + }, + { + "name": "blockCreated", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "userWithdrawals", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IDelayedWithdrawalRouter.UserDelayedWithdrawals", + "components": [ + { + "name": "delayedWithdrawalsCompleted", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "delayedWithdrawals", + "type": "tuple[]", + "internalType": "struct IDelayedWithdrawalRouter.DelayedWithdrawal[]", + "components": [ + { + "name": "amount", + "type": "uint224", + "internalType": "uint224" + }, + { + "name": "blockCreated", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "userWithdrawalsLength", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "withdrawalDelayBlocks", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "DelayedWithdrawalCreated", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "recipient", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "index", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DelayedWithdrawalsClaimed", + "inputs": [ + { + "name": "recipient", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "amountClaimed", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "delayedWithdrawalsCompleted", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "WithdrawalDelayBlocksSet", + "inputs": [ + { + "name": "previousValue", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newValue", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] diff --git a/pkg/bindings/IDelayedWithdrawalRouter/tmp.bin b/pkg/bindings/IDelayedWithdrawalRouter/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/IDelayedWithdrawalRouter/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/IDelegationFaucet/binding.go b/pkg/bindings/IDelegationFaucet/binding.go new file mode 100644 index 000000000..9486264d0 --- /dev/null +++ b/pkg/bindings/IDelegationFaucet/binding.go @@ -0,0 +1,352 @@ +// 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/IDelegationFaucet/tmp.abi b/pkg/bindings/IDelegationFaucet/tmp.abi new file mode 100644 index 000000000..f36da7f9a --- /dev/null +++ b/pkg/bindings/IDelegationFaucet/tmp.abi @@ -0,0 +1,270 @@ +[ + { + "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": "struct IDelegationManager.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": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + }, + { + "name": "tokens", + "type": "address[]", + "internalType": "contract IERC20[]" + }, + { + "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": "contract IStrategy" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "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": "struct ISignatureUtils.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": "struct IDelegationManager.QueuedWithdrawalParams[]", + "components": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "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" + } +] diff --git a/pkg/bindings/IDelegationFaucet/tmp.bin b/pkg/bindings/IDelegationFaucet/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/IDelegationFaucet/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/IDelegationManager/binding.go b/pkg/bindings/IDelegationManager/binding.go new file mode 100644 index 000000000..51483a845 --- /dev/null +++ b/pkg/bindings/IDelegationManager/binding.go @@ -0,0 +1,3056 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package IDelegationManager + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IDelegationManagerOperatorDetails is an auto generated low-level Go binding around an user-defined struct. +type IDelegationManagerOperatorDetails struct { + EarningsReceiver common.Address + DelegationApprover common.Address + StakerOptOutWindowBlocks uint32 +} + +// IDelegationManagerQueuedWithdrawalParams is an auto generated low-level Go binding around an user-defined struct. +type IDelegationManagerQueuedWithdrawalParams struct { + Strategies []common.Address + Shares []*big.Int + Withdrawer common.Address +} + +// IDelegationManagerWithdrawal is an auto generated low-level Go binding around an user-defined struct. +type IDelegationManagerWithdrawal struct { + Staker common.Address + DelegatedTo common.Address + Withdrawer common.Address + Nonce *big.Int + StartBlock uint32 + Strategies []common.Address + Shares []*big.Int +} + +// ISignatureUtilsSignatureWithExpiry is an auto generated low-level Go binding around an user-defined struct. +type ISignatureUtilsSignatureWithExpiry struct { + Signature []byte + Expiry *big.Int +} + +// IStrategyManagerDeprecatedStructQueuedWithdrawal is an auto generated low-level Go binding around an user-defined struct. +type IStrategyManagerDeprecatedStructQueuedWithdrawal struct { + Strategies []common.Address + Shares []*big.Int + Staker common.Address + WithdrawerAndNonce IStrategyManagerDeprecatedStructWithdrawerAndNonce + WithdrawalStartBlock uint32 + DelegatedAddress common.Address +} + +// IStrategyManagerDeprecatedStructWithdrawerAndNonce is an auto generated low-level Go binding around an user-defined struct. +type IStrategyManagerDeprecatedStructWithdrawerAndNonce struct { + Withdrawer common.Address + Nonce *big.Int +} + +// 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\":\"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\":\"earningsReceiver\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"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\":\"migrateQueuedWithdrawals\",\"inputs\":[{\"name\":\"withdrawalsToQueue\",\"type\":\"tuple[]\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_QueuedWithdrawal[]\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"components\":[{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"minWithdrawalDelayBlocks\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"modifyOperatorDetails\",\"inputs\":[{\"name\":\"newOperatorDetails\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorDetails\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"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\":\"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\":\"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\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorMetadataURIUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"metadataURI\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRegistered\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorDetails\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManager.OperatorDetails\",\"components\":[{\"name\":\"earningsReceiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegationApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"stakerOptOutWindowBlocks\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSharesDecreased\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSharesIncreased\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"staker\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strategy\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIStrategy\"},{\"name\":\"shares\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"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\":\"WithdrawalMigrated\",\"inputs\":[{\"name\":\"oldWithdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"newWithdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalQueued\",\"inputs\":[{\"name\":\"withdrawalRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"withdrawal\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIDelegationManager.Withdrawal\",\"components\":[{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"delegatedTo\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}]}],\"anonymous\":false}]", +} + +// IDelegationManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use IDelegationManagerMetaData.ABI instead. +var IDelegationManagerABI = IDelegationManagerMetaData.ABI + +// IDelegationManager is an auto generated Go binding around an Ethereum contract. +type IDelegationManager struct { + IDelegationManagerCaller // Read-only binding to the contract + IDelegationManagerTransactor // Write-only binding to the contract + IDelegationManagerFilterer // Log filterer for contract events +} + +// IDelegationManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type IDelegationManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IDelegationManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IDelegationManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IDelegationManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IDelegationManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IDelegationManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IDelegationManagerSession struct { + Contract *IDelegationManager // 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 +} + +// IDelegationManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IDelegationManagerCallerSession struct { + Contract *IDelegationManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IDelegationManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IDelegationManagerTransactorSession struct { + Contract *IDelegationManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IDelegationManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type IDelegationManagerRaw struct { + Contract *IDelegationManager // Generic contract binding to access the raw methods on +} + +// IDelegationManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IDelegationManagerCallerRaw struct { + Contract *IDelegationManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// IDelegationManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IDelegationManagerTransactorRaw struct { + Contract *IDelegationManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIDelegationManager creates a new instance of IDelegationManager, bound to a specific deployed contract. +func NewIDelegationManager(address common.Address, backend bind.ContractBackend) (*IDelegationManager, error) { + contract, err := bindIDelegationManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IDelegationManager{IDelegationManagerCaller: IDelegationManagerCaller{contract: contract}, IDelegationManagerTransactor: IDelegationManagerTransactor{contract: contract}, IDelegationManagerFilterer: IDelegationManagerFilterer{contract: contract}}, nil +} + +// NewIDelegationManagerCaller creates a new read-only instance of IDelegationManager, bound to a specific deployed contract. +func NewIDelegationManagerCaller(address common.Address, caller bind.ContractCaller) (*IDelegationManagerCaller, error) { + contract, err := bindIDelegationManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IDelegationManagerCaller{contract: contract}, nil +} + +// NewIDelegationManagerTransactor creates a new write-only instance of IDelegationManager, bound to a specific deployed contract. +func NewIDelegationManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IDelegationManagerTransactor, error) { + contract, err := bindIDelegationManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IDelegationManagerTransactor{contract: contract}, nil +} + +// NewIDelegationManagerFilterer creates a new log filterer instance of IDelegationManager, bound to a specific deployed contract. +func NewIDelegationManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IDelegationManagerFilterer, error) { + contract, err := bindIDelegationManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IDelegationManagerFilterer{contract: contract}, nil +} + +// bindIDelegationManager binds a generic wrapper to an already deployed contract. +func bindIDelegationManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IDelegationManagerMetaData.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 (_IDelegationManager *IDelegationManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IDelegationManager.Contract.IDelegationManagerCaller.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 (_IDelegationManager *IDelegationManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IDelegationManager.Contract.IDelegationManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IDelegationManager *IDelegationManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IDelegationManager.Contract.IDelegationManagerTransactor.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 (_IDelegationManager *IDelegationManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IDelegationManager.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 (_IDelegationManager *IDelegationManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IDelegationManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IDelegationManager *IDelegationManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IDelegationManager.Contract.contract.Transact(opts, method, params...) +} + +// DELEGATIONAPPROVALTYPEHASH is a free data retrieval call binding the contract method 0x04a4f979. +// +// Solidity: function DELEGATION_APPROVAL_TYPEHASH() view returns(bytes32) +func (_IDelegationManager *IDelegationManagerCaller) DELEGATIONAPPROVALTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IDelegationManager.contract.Call(opts, &out, "DELEGATION_APPROVAL_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DELEGATIONAPPROVALTYPEHASH is a free data retrieval call binding the contract method 0x04a4f979. +// +// Solidity: function DELEGATION_APPROVAL_TYPEHASH() view returns(bytes32) +func (_IDelegationManager *IDelegationManagerSession) DELEGATIONAPPROVALTYPEHASH() ([32]byte, error) { + return _IDelegationManager.Contract.DELEGATIONAPPROVALTYPEHASH(&_IDelegationManager.CallOpts) +} + +// DELEGATIONAPPROVALTYPEHASH is a free data retrieval call binding the contract method 0x04a4f979. +// +// Solidity: function DELEGATION_APPROVAL_TYPEHASH() view returns(bytes32) +func (_IDelegationManager *IDelegationManagerCallerSession) DELEGATIONAPPROVALTYPEHASH() ([32]byte, error) { + 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) +} + +// 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) +func (_IDelegationManager *IDelegationManagerCaller) CalculateDelegationApprovalDigestHash(opts *bind.CallOpts, staker common.Address, operator common.Address, _delegationApprover common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) { + var out []interface{} + err := _IDelegationManager.contract.Call(opts, &out, "calculateDelegationApprovalDigestHash", staker, operator, _delegationApprover, approverSalt, expiry) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateDelegationApprovalDigestHash is a free data retrieval call binding the contract method 0x0b9f487a. +// +// Solidity: function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) view returns(bytes32) +func (_IDelegationManager *IDelegationManagerSession) CalculateDelegationApprovalDigestHash(staker common.Address, operator common.Address, _delegationApprover common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) { + return _IDelegationManager.Contract.CalculateDelegationApprovalDigestHash(&_IDelegationManager.CallOpts, staker, operator, _delegationApprover, approverSalt, expiry) +} + +// CalculateDelegationApprovalDigestHash is a free data retrieval call binding the contract method 0x0b9f487a. +// +// Solidity: function calculateDelegationApprovalDigestHash(address staker, address operator, address _delegationApprover, bytes32 approverSalt, uint256 expiry) view returns(bytes32) +func (_IDelegationManager *IDelegationManagerCallerSession) CalculateDelegationApprovalDigestHash(staker common.Address, operator common.Address, _delegationApprover common.Address, approverSalt [32]byte, expiry *big.Int) ([32]byte, error) { + return _IDelegationManager.Contract.CalculateDelegationApprovalDigestHash(&_IDelegationManager.CallOpts, staker, operator, _delegationApprover, approverSalt, expiry) +} + +// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111. +// +// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32) +func (_IDelegationManager *IDelegationManagerCaller) CalculateStakerDelegationDigestHash(opts *bind.CallOpts, staker common.Address, _stakerNonce *big.Int, operator common.Address, expiry *big.Int) ([32]byte, error) { + var out []interface{} + err := _IDelegationManager.contract.Call(opts, &out, "calculateStakerDelegationDigestHash", staker, _stakerNonce, operator, expiry) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111. +// +// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32) +func (_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) +} + +// CalculateStakerDelegationDigestHash is a free data retrieval call binding the contract method 0xc94b5111. +// +// Solidity: function calculateStakerDelegationDigestHash(address staker, uint256 _stakerNonce, address operator, uint256 expiry) view returns(bytes32) +func (_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) +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da. +// +// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32) +func (_IDelegationManager *IDelegationManagerCaller) CalculateWithdrawalRoot(opts *bind.CallOpts, withdrawal IDelegationManagerWithdrawal) ([32]byte, error) { + var out []interface{} + err := _IDelegationManager.contract.Call(opts, &out, "calculateWithdrawalRoot", withdrawal) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da. +// +// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32) +func (_IDelegationManager *IDelegationManagerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerWithdrawal) ([32]byte, error) { + return _IDelegationManager.Contract.CalculateWithdrawalRoot(&_IDelegationManager.CallOpts, withdrawal) +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0x597b36da. +// +// Solidity: function calculateWithdrawalRoot((address,address,address,uint256,uint32,address[],uint256[]) withdrawal) pure returns(bytes32) +func (_IDelegationManager *IDelegationManagerCallerSession) CalculateWithdrawalRoot(withdrawal IDelegationManagerWithdrawal) ([32]byte, error) { + return _IDelegationManager.Contract.CalculateWithdrawalRoot(&_IDelegationManager.CallOpts, withdrawal) +} + +// CumulativeWithdrawalsQueued is a free data retrieval call binding the contract method 0xa1788484. +// +// Solidity: function cumulativeWithdrawalsQueued(address staker) view returns(uint256) +func (_IDelegationManager *IDelegationManagerCaller) CumulativeWithdrawalsQueued(opts *bind.CallOpts, staker common.Address) (*big.Int, error) { + var out []interface{} + err := _IDelegationManager.contract.Call(opts, &out, "cumulativeWithdrawalsQueued", staker) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CumulativeWithdrawalsQueued is a free data retrieval call binding the contract method 0xa1788484. +// +// Solidity: function cumulativeWithdrawalsQueued(address staker) view returns(uint256) +func (_IDelegationManager *IDelegationManagerSession) CumulativeWithdrawalsQueued(staker common.Address) (*big.Int, error) { + return _IDelegationManager.Contract.CumulativeWithdrawalsQueued(&_IDelegationManager.CallOpts, staker) +} + +// CumulativeWithdrawalsQueued is a free data retrieval call binding the contract method 0xa1788484. +// +// Solidity: function cumulativeWithdrawalsQueued(address staker) view returns(uint256) +func (_IDelegationManager *IDelegationManagerCallerSession) CumulativeWithdrawalsQueued(staker common.Address) (*big.Int, error) { + return _IDelegationManager.Contract.CumulativeWithdrawalsQueued(&_IDelegationManager.CallOpts, staker) +} + +// DelegatedTo is a free data retrieval call binding the contract method 0x65da1264. +// +// Solidity: function delegatedTo(address staker) view returns(address) +func (_IDelegationManager *IDelegationManagerCaller) DelegatedTo(opts *bind.CallOpts, staker common.Address) (common.Address, error) { + var out []interface{} + err := _IDelegationManager.contract.Call(opts, &out, "delegatedTo", staker) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// DelegatedTo is a free data retrieval call binding the contract method 0x65da1264. +// +// Solidity: function delegatedTo(address staker) view returns(address) +func (_IDelegationManager *IDelegationManagerSession) DelegatedTo(staker common.Address) (common.Address, error) { + return _IDelegationManager.Contract.DelegatedTo(&_IDelegationManager.CallOpts, staker) +} + +// DelegatedTo is a free data retrieval call binding the contract method 0x65da1264. +// +// Solidity: function delegatedTo(address staker) view returns(address) +func (_IDelegationManager *IDelegationManagerCallerSession) DelegatedTo(staker common.Address) (common.Address, error) { + return _IDelegationManager.Contract.DelegatedTo(&_IDelegationManager.CallOpts, staker) +} + +// DelegationApprover is a free data retrieval call binding the contract method 0x3cdeb5e0. +// +// Solidity: function delegationApprover(address operator) view returns(address) +func (_IDelegationManager *IDelegationManagerCaller) DelegationApprover(opts *bind.CallOpts, operator common.Address) (common.Address, error) { + var out []interface{} + err := _IDelegationManager.contract.Call(opts, &out, "delegationApprover", operator) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// DelegationApprover is a free data retrieval call binding the contract method 0x3cdeb5e0. +// +// Solidity: function delegationApprover(address operator) view returns(address) +func (_IDelegationManager *IDelegationManagerSession) DelegationApprover(operator common.Address) (common.Address, error) { + return _IDelegationManager.Contract.DelegationApprover(&_IDelegationManager.CallOpts, operator) +} + +// DelegationApprover is a free data retrieval call binding the contract method 0x3cdeb5e0. +// +// Solidity: function delegationApprover(address operator) view returns(address) +func (_IDelegationManager *IDelegationManagerCallerSession) DelegationApprover(operator common.Address) (common.Address, error) { + return _IDelegationManager.Contract.DelegationApprover(&_IDelegationManager.CallOpts, operator) +} + +// DelegationApproverSaltIsSpent is a free data retrieval call binding the contract method 0xbb45fef2. +// +// Solidity: function delegationApproverSaltIsSpent(address _delegationApprover, bytes32 salt) view returns(bool) +func (_IDelegationManager *IDelegationManagerCaller) DelegationApproverSaltIsSpent(opts *bind.CallOpts, _delegationApprover common.Address, salt [32]byte) (bool, error) { + var out []interface{} + err := _IDelegationManager.contract.Call(opts, &out, "delegationApproverSaltIsSpent", _delegationApprover, salt) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// DelegationApproverSaltIsSpent is a free data retrieval call binding the contract method 0xbb45fef2. +// +// Solidity: function delegationApproverSaltIsSpent(address _delegationApprover, bytes32 salt) view returns(bool) +func (_IDelegationManager *IDelegationManagerSession) DelegationApproverSaltIsSpent(_delegationApprover common.Address, salt [32]byte) (bool, error) { + return _IDelegationManager.Contract.DelegationApproverSaltIsSpent(&_IDelegationManager.CallOpts, _delegationApprover, salt) +} + +// DelegationApproverSaltIsSpent is a free data retrieval call binding the contract method 0xbb45fef2. +// +// Solidity: function delegationApproverSaltIsSpent(address _delegationApprover, bytes32 salt) view returns(bool) +func (_IDelegationManager *IDelegationManagerCallerSession) DelegationApproverSaltIsSpent(_delegationApprover common.Address, salt [32]byte) (bool, error) { + return _IDelegationManager.Contract.DelegationApproverSaltIsSpent(&_IDelegationManager.CallOpts, _delegationApprover, salt) +} + +// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25. +// +// Solidity: function domainSeparator() view returns(bytes32) +func (_IDelegationManager *IDelegationManagerCaller) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IDelegationManager.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 (_IDelegationManager *IDelegationManagerSession) DomainSeparator() ([32]byte, error) { + return _IDelegationManager.Contract.DomainSeparator(&_IDelegationManager.CallOpts) +} + +// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25. +// +// Solidity: function domainSeparator() view returns(bytes32) +func (_IDelegationManager *IDelegationManagerCallerSession) DomainSeparator() ([32]byte, error) { + return _IDelegationManager.Contract.DomainSeparator(&_IDelegationManager.CallOpts) +} + +// EarningsReceiver is a free data retrieval call binding the contract method 0x5f966f14. +// +// Solidity: function earningsReceiver(address operator) view returns(address) +func (_IDelegationManager *IDelegationManagerCaller) EarningsReceiver(opts *bind.CallOpts, operator common.Address) (common.Address, error) { + var out []interface{} + err := _IDelegationManager.contract.Call(opts, &out, "earningsReceiver", operator) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EarningsReceiver is a free data retrieval call binding the contract method 0x5f966f14. +// +// Solidity: function earningsReceiver(address operator) view returns(address) +func (_IDelegationManager *IDelegationManagerSession) EarningsReceiver(operator common.Address) (common.Address, error) { + return _IDelegationManager.Contract.EarningsReceiver(&_IDelegationManager.CallOpts, operator) +} + +// EarningsReceiver is a free data retrieval call binding the contract method 0x5f966f14. +// +// Solidity: function earningsReceiver(address operator) view returns(address) +func (_IDelegationManager *IDelegationManagerCallerSession) EarningsReceiver(operator common.Address) (common.Address, error) { + return _IDelegationManager.Contract.EarningsReceiver(&_IDelegationManager.CallOpts, operator) +} + +// GetOperatorShares is a free data retrieval call binding the contract method 0x90041347. +// +// Solidity: function getOperatorShares(address operator, address[] strategies) view returns(uint256[]) +func (_IDelegationManager *IDelegationManagerCaller) GetOperatorShares(opts *bind.CallOpts, operator common.Address, strategies []common.Address) ([]*big.Int, error) { + var out []interface{} + err := _IDelegationManager.contract.Call(opts, &out, "getOperatorShares", operator, strategies) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// GetOperatorShares is a free data retrieval call binding the contract method 0x90041347. +// +// Solidity: function getOperatorShares(address operator, address[] strategies) view returns(uint256[]) +func (_IDelegationManager *IDelegationManagerSession) GetOperatorShares(operator common.Address, strategies []common.Address) ([]*big.Int, error) { + return _IDelegationManager.Contract.GetOperatorShares(&_IDelegationManager.CallOpts, operator, strategies) +} + +// GetOperatorShares is a free data retrieval call binding the contract method 0x90041347. +// +// Solidity: function getOperatorShares(address operator, address[] strategies) view returns(uint256[]) +func (_IDelegationManager *IDelegationManagerCallerSession) GetOperatorShares(operator common.Address, strategies []common.Address) ([]*big.Int, error) { + return _IDelegationManager.Contract.GetOperatorShares(&_IDelegationManager.CallOpts, operator, strategies) +} + +// GetWithdrawalDelay is a free data retrieval call binding the contract method 0x0449ca39. +// +// Solidity: function getWithdrawalDelay(address[] strategies) view returns(uint256) +func (_IDelegationManager *IDelegationManagerCaller) GetWithdrawalDelay(opts *bind.CallOpts, strategies []common.Address) (*big.Int, error) { + var out []interface{} + err := _IDelegationManager.contract.Call(opts, &out, "getWithdrawalDelay", strategies) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetWithdrawalDelay is a free data retrieval call binding the contract method 0x0449ca39. +// +// 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) +} + +// GetWithdrawalDelay is a free data retrieval call binding the contract method 0x0449ca39. +// +// 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) +} + +// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d. +// +// 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, "isDelegated", staker) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d. +// +// Solidity: function isDelegated(address staker) view returns(bool) +func (_IDelegationManager *IDelegationManagerSession) IsDelegated(staker common.Address) (bool, error) { + return _IDelegationManager.Contract.IsDelegated(&_IDelegationManager.CallOpts, staker) +} + +// IsDelegated is a free data retrieval call binding the contract method 0x3e28391d. +// +// Solidity: function isDelegated(address staker) view returns(bool) +func (_IDelegationManager *IDelegationManagerCallerSession) IsDelegated(staker common.Address) (bool, error) { + return _IDelegationManager.Contract.IsDelegated(&_IDelegationManager.CallOpts, staker) +} + +// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae. +// +// 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, "isOperator", operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae. +// +// Solidity: function isOperator(address operator) view returns(bool) +func (_IDelegationManager *IDelegationManagerSession) IsOperator(operator common.Address) (bool, error) { + return _IDelegationManager.Contract.IsOperator(&_IDelegationManager.CallOpts, operator) +} + +// IsOperator is a free data retrieval call binding the contract method 0x6d70f7ae. +// +// Solidity: function isOperator(address operator) view returns(bool) +func (_IDelegationManager *IDelegationManagerCallerSession) IsOperator(operator common.Address) (bool, error) { + return _IDelegationManager.Contract.IsOperator(&_IDelegationManager.CallOpts, operator) +} + +// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8. +// +// Solidity: function minWithdrawalDelayBlocks() view returns(uint256) +func (_IDelegationManager *IDelegationManagerCaller) MinWithdrawalDelayBlocks(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IDelegationManager.contract.Call(opts, &out, "minWithdrawalDelayBlocks") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8. +// +// Solidity: function minWithdrawalDelayBlocks() view returns(uint256) +func (_IDelegationManager *IDelegationManagerSession) MinWithdrawalDelayBlocks() (*big.Int, error) { + return _IDelegationManager.Contract.MinWithdrawalDelayBlocks(&_IDelegationManager.CallOpts) +} + +// MinWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc448feb8. +// +// Solidity: function minWithdrawalDelayBlocks() view returns(uint256) +func (_IDelegationManager *IDelegationManagerCallerSession) MinWithdrawalDelayBlocks() (*big.Int, error) { + return _IDelegationManager.Contract.MinWithdrawalDelayBlocks(&_IDelegationManager.CallOpts) +} + +// OperatorDetails is a free data retrieval call binding the contract method 0xc5e480db. +// +// Solidity: function operatorDetails(address operator) view returns((address,address,uint32)) +func (_IDelegationManager *IDelegationManagerCaller) OperatorDetails(opts *bind.CallOpts, operator common.Address) (IDelegationManagerOperatorDetails, error) { + var out []interface{} + err := _IDelegationManager.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 (_IDelegationManager *IDelegationManagerSession) OperatorDetails(operator common.Address) (IDelegationManagerOperatorDetails, error) { + return _IDelegationManager.Contract.OperatorDetails(&_IDelegationManager.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 (_IDelegationManager *IDelegationManagerCallerSession) OperatorDetails(operator common.Address) (IDelegationManagerOperatorDetails, error) { + return _IDelegationManager.Contract.OperatorDetails(&_IDelegationManager.CallOpts, operator) +} + +// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3. +// +// 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) { + var out []interface{} + err := _IDelegationManager.contract.Call(opts, &out, "operatorShares", operator, strategy) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3. +// +// Solidity: function operatorShares(address 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) +} + +// OperatorShares is a free data retrieval call binding the contract method 0x778e55f3. +// +// 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) +} + +// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f. +// +// Solidity: function stakerNonce(address staker) view returns(uint256) +func (_IDelegationManager *IDelegationManagerCaller) StakerNonce(opts *bind.CallOpts, staker common.Address) (*big.Int, error) { + var out []interface{} + err := _IDelegationManager.contract.Call(opts, &out, "stakerNonce", staker) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f. +// +// Solidity: function stakerNonce(address staker) view returns(uint256) +func (_IDelegationManager *IDelegationManagerSession) StakerNonce(staker common.Address) (*big.Int, error) { + return _IDelegationManager.Contract.StakerNonce(&_IDelegationManager.CallOpts, staker) +} + +// StakerNonce is a free data retrieval call binding the contract method 0x29c77d4f. +// +// 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) +} + +// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365. +// +// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256) +func (_IDelegationManager *IDelegationManagerCaller) StakerOptOutWindowBlocks(opts *bind.CallOpts, operator common.Address) (*big.Int, error) { + var out []interface{} + err := _IDelegationManager.contract.Call(opts, &out, "stakerOptOutWindowBlocks", operator) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365. +// +// Solidity: function stakerOptOutWindowBlocks(address operator) view returns(uint256) +func (_IDelegationManager *IDelegationManagerSession) StakerOptOutWindowBlocks(operator common.Address) (*big.Int, error) { + return _IDelegationManager.Contract.StakerOptOutWindowBlocks(&_IDelegationManager.CallOpts, operator) +} + +// StakerOptOutWindowBlocks is a free data retrieval call binding the contract method 0x16928365. +// +// 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) +} + +// StrategyWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc488375a. +// +// Solidity: function strategyWithdrawalDelayBlocks(address strategy) view returns(uint256) +func (_IDelegationManager *IDelegationManagerCaller) StrategyWithdrawalDelayBlocks(opts *bind.CallOpts, strategy common.Address) (*big.Int, error) { + var out []interface{} + err := _IDelegationManager.contract.Call(opts, &out, "strategyWithdrawalDelayBlocks", strategy) + + 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 strategy) view returns(uint256) +func (_IDelegationManager *IDelegationManagerSession) StrategyWithdrawalDelayBlocks(strategy common.Address) (*big.Int, error) { + return _IDelegationManager.Contract.StrategyWithdrawalDelayBlocks(&_IDelegationManager.CallOpts, strategy) +} + +// StrategyWithdrawalDelayBlocks is a free data retrieval call binding the contract method 0xc488375a. +// +// 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) +} + +// 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 (_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) +} + +// 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 (_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) +} + +// 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 (_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) +} + +// 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 (_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) +} + +// 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 (_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) +} + +// 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 (_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) +} + +// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967. +// +// 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) +} + +// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967. +// +// 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) +} + +// DecreaseDelegatedShares is a paid mutator transaction binding the contract method 0x132d4967. +// +// 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) +} + +// DelegateTo is a paid mutator transaction binding the contract method 0xeea9064b. +// +// Solidity: function delegateTo(address operator, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns() +func (_IDelegationManager *IDelegationManagerTransactor) DelegateTo(opts *bind.TransactOpts, operator common.Address, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) { + return _IDelegationManager.contract.Transact(opts, "delegateTo", operator, approverSignatureAndExpiry, approverSalt) +} + +// DelegateTo is a paid mutator transaction binding the contract method 0xeea9064b. +// +// Solidity: function delegateTo(address operator, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns() +func (_IDelegationManager *IDelegationManagerSession) DelegateTo(operator common.Address, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) { + return _IDelegationManager.Contract.DelegateTo(&_IDelegationManager.TransactOpts, operator, approverSignatureAndExpiry, approverSalt) +} + +// DelegateTo is a paid mutator transaction binding the contract method 0xeea9064b. +// +// Solidity: function delegateTo(address operator, (bytes,uint256) approverSignatureAndExpiry, bytes32 approverSalt) returns() +func (_IDelegationManager *IDelegationManagerTransactorSession) DelegateTo(operator common.Address, approverSignatureAndExpiry ISignatureUtilsSignatureWithExpiry, approverSalt [32]byte) (*types.Transaction, error) { + return _IDelegationManager.Contract.DelegateTo(&_IDelegationManager.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 (_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) +} + +// 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 (_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) +} + +// 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 (_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) +} + +// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae. +// +// 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) +} + +// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae. +// +// 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) +} + +// IncreaseDelegatedShares is a paid mutator transaction binding the contract method 0x28a573ae. +// +// 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) +} + +// MigrateQueuedWithdrawals is a paid mutator transaction binding the contract method 0x5cfe8d2c. +// +// Solidity: function migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[] withdrawalsToQueue) returns() +func (_IDelegationManager *IDelegationManagerTransactor) MigrateQueuedWithdrawals(opts *bind.TransactOpts, withdrawalsToQueue []IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _IDelegationManager.contract.Transact(opts, "migrateQueuedWithdrawals", withdrawalsToQueue) +} + +// MigrateQueuedWithdrawals is a paid mutator transaction binding the contract method 0x5cfe8d2c. +// +// Solidity: function migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[] withdrawalsToQueue) returns() +func (_IDelegationManager *IDelegationManagerSession) MigrateQueuedWithdrawals(withdrawalsToQueue []IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _IDelegationManager.Contract.MigrateQueuedWithdrawals(&_IDelegationManager.TransactOpts, withdrawalsToQueue) +} + +// MigrateQueuedWithdrawals is a paid mutator transaction binding the contract method 0x5cfe8d2c. +// +// Solidity: function migrateQueuedWithdrawals((address[],uint256[],address,(address,uint96),uint32,address)[] withdrawalsToQueue) returns() +func (_IDelegationManager *IDelegationManagerTransactorSession) MigrateQueuedWithdrawals(withdrawalsToQueue []IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _IDelegationManager.Contract.MigrateQueuedWithdrawals(&_IDelegationManager.TransactOpts, withdrawalsToQueue) +} + +// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0. +// +// 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) +} + +// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0. +// +// Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns() +func (_IDelegationManager *IDelegationManagerSession) ModifyOperatorDetails(newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) { + return _IDelegationManager.Contract.ModifyOperatorDetails(&_IDelegationManager.TransactOpts, newOperatorDetails) +} + +// ModifyOperatorDetails is a paid mutator transaction binding the contract method 0xf16172b0. +// +// Solidity: function modifyOperatorDetails((address,address,uint32) newOperatorDetails) returns() +func (_IDelegationManager *IDelegationManagerTransactorSession) ModifyOperatorDetails(newOperatorDetails IDelegationManagerOperatorDetails) (*types.Transaction, error) { + return _IDelegationManager.Contract.ModifyOperatorDetails(&_IDelegationManager.TransactOpts, newOperatorDetails) +} + +// 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) +} + +// 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) +} + +// 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) +} + +// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59. +// +// 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) +} + +// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59. +// +// 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) +} + +// RegisterAsOperator is a paid mutator transaction binding the contract method 0x0f589e59. +// +// 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) +} + +// Undelegate is a paid mutator transaction binding the contract method 0xda8be864. +// +// Solidity: function undelegate(address staker) returns(bytes32[] withdrawalRoot) +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) +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) +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. +// +// 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) +} + +// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8. +// +// Solidity: function updateOperatorMetadataURI(string metadataURI) returns() +func (_IDelegationManager *IDelegationManagerSession) UpdateOperatorMetadataURI(metadataURI string) (*types.Transaction, error) { + return _IDelegationManager.Contract.UpdateOperatorMetadataURI(&_IDelegationManager.TransactOpts, metadataURI) +} + +// UpdateOperatorMetadataURI is a paid mutator transaction binding the contract method 0x99be81c8. +// +// Solidity: function updateOperatorMetadataURI(string metadataURI) returns() +func (_IDelegationManager *IDelegationManagerTransactorSession) UpdateOperatorMetadataURI(metadataURI string) (*types.Transaction, error) { + return _IDelegationManager.Contract.UpdateOperatorMetadataURI(&_IDelegationManager.TransactOpts, 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 + + 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 *IDelegationManagerMinWithdrawalDelayBlocksSetIterator) 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(IDelegationManagerMinWithdrawalDelayBlocksSet) + 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(IDelegationManagerMinWithdrawalDelayBlocksSet) + 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 *IDelegationManagerMinWithdrawalDelayBlocksSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IDelegationManagerMinWithdrawalDelayBlocksSetIterator) 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 +} + +// FilterMinWithdrawalDelayBlocksSet is a free log retrieval operation binding the contract event 0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69. +// +// Solidity: event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue) +func (_IDelegationManager *IDelegationManagerFilterer) FilterMinWithdrawalDelayBlocksSet(opts *bind.FilterOpts) (*IDelegationManagerMinWithdrawalDelayBlocksSetIterator, error) { + + logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "MinWithdrawalDelayBlocksSet") + if err != nil { + return nil, err + } + return &IDelegationManagerMinWithdrawalDelayBlocksSetIterator{contract: _IDelegationManager.contract, event: "MinWithdrawalDelayBlocksSet", logs: logs, sub: sub}, nil +} + +// WatchMinWithdrawalDelayBlocksSet is a free log subscription operation binding the contract event 0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69. +// +// Solidity: event MinWithdrawalDelayBlocksSet(uint256 previousValue, uint256 newValue) +func (_IDelegationManager *IDelegationManagerFilterer) WatchMinWithdrawalDelayBlocksSet(opts *bind.WatchOpts, sink chan<- *IDelegationManagerMinWithdrawalDelayBlocksSet) (event.Subscription, error) { + + logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "MinWithdrawalDelayBlocksSet") + 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(IDelegationManagerMinWithdrawalDelayBlocksSet) + if err := _IDelegationManager.contract.UnpackLog(event, "MinWithdrawalDelayBlocksSet", 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 +} + +// ParseMinWithdrawalDelayBlocksSet is a log parse operation binding the contract event 0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69. +// +// 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 { + 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 + + 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 *IDelegationManagerOperatorDetailsModifiedIterator) 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(IDelegationManagerOperatorDetailsModified) + 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(IDelegationManagerOperatorDetailsModified) + 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 *IDelegationManagerOperatorDetailsModifiedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IDelegationManagerOperatorDetailsModifiedIterator) 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 +} + +// FilterOperatorDetailsModified is a free log retrieval operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac. +// +// 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) + } + + logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "OperatorDetailsModified", operatorRule) + if err != nil { + return nil, err + } + return &IDelegationManagerOperatorDetailsModifiedIterator{contract: _IDelegationManager.contract, event: "OperatorDetailsModified", logs: logs, sub: sub}, nil +} + +// WatchOperatorDetailsModified is a free log subscription operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac. +// +// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails) +func (_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) + } + + logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "OperatorDetailsModified", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IDelegationManagerOperatorDetailsModified) + if err := _IDelegationManager.contract.UnpackLog(event, "OperatorDetailsModified", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorDetailsModified is a log parse operation binding the contract event 0xfebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac. +// +// Solidity: event OperatorDetailsModified(address indexed operator, (address,address,uint32) newOperatorDetails) +func (_IDelegationManager *IDelegationManagerFilterer) ParseOperatorDetailsModified(log types.Log) (*IDelegationManagerOperatorDetailsModified, error) { + event := new(IDelegationManagerOperatorDetailsModified) + if err := _IDelegationManager.contract.UnpackLog(event, "OperatorDetailsModified", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IDelegationManagerOperatorMetadataURIUpdatedIterator is returned from FilterOperatorMetadataURIUpdated and is used to iterate over the raw logs and unpacked data for OperatorMetadataURIUpdated events raised by the IDelegationManager contract. +type IDelegationManagerOperatorMetadataURIUpdatedIterator struct { + Event *IDelegationManagerOperatorMetadataURIUpdated // Event containing the contract specifics 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 *IDelegationManagerOperatorMetadataURIUpdatedIterator) 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(IDelegationManagerOperatorMetadataURIUpdated) + 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(IDelegationManagerOperatorMetadataURIUpdated) + 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 *IDelegationManagerOperatorMetadataURIUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IDelegationManagerOperatorMetadataURIUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IDelegationManagerOperatorMetadataURIUpdated represents a OperatorMetadataURIUpdated event raised by the IDelegationManager contract. +type IDelegationManagerOperatorMetadataURIUpdated struct { + Operator common.Address + MetadataURI string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorMetadataURIUpdated is a free log retrieval operation binding the contract event 0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090. +// +// Solidity: event OperatorMetadataURIUpdated(address indexed operator, string metadataURI) +func (_IDelegationManager *IDelegationManagerFilterer) FilterOperatorMetadataURIUpdated(opts *bind.FilterOpts, operator []common.Address) (*IDelegationManagerOperatorMetadataURIUpdatedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "OperatorMetadataURIUpdated", operatorRule) + if err != nil { + return nil, err + } + return &IDelegationManagerOperatorMetadataURIUpdatedIterator{contract: _IDelegationManager.contract, event: "OperatorMetadataURIUpdated", logs: logs, sub: sub}, nil +} + +// WatchOperatorMetadataURIUpdated is a free log subscription operation binding the contract event 0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090. +// +// Solidity: event OperatorMetadataURIUpdated(address indexed operator, string metadataURI) +func (_IDelegationManager *IDelegationManagerFilterer) WatchOperatorMetadataURIUpdated(opts *bind.WatchOpts, sink chan<- *IDelegationManagerOperatorMetadataURIUpdated, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "OperatorMetadataURIUpdated", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IDelegationManagerOperatorMetadataURIUpdated) + if err := _IDelegationManager.contract.UnpackLog(event, "OperatorMetadataURIUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorMetadataURIUpdated is a log parse operation binding the contract event 0x02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b6708090. +// +// Solidity: event OperatorMetadataURIUpdated(address indexed operator, string metadataURI) +func (_IDelegationManager *IDelegationManagerFilterer) ParseOperatorMetadataURIUpdated(log types.Log) (*IDelegationManagerOperatorMetadataURIUpdated, error) { + event := new(IDelegationManagerOperatorMetadataURIUpdated) + if err := _IDelegationManager.contract.UnpackLog(event, "OperatorMetadataURIUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IDelegationManagerOperatorRegisteredIterator is returned from FilterOperatorRegistered and is used to iterate over the raw logs and unpacked data for OperatorRegistered events raised by the IDelegationManager contract. +type IDelegationManagerOperatorRegisteredIterator struct { + Event *IDelegationManagerOperatorRegistered // Event containing the contract specifics 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 *IDelegationManagerOperatorRegisteredIterator) 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(IDelegationManagerOperatorRegistered) + 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(IDelegationManagerOperatorRegistered) + 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 *IDelegationManagerOperatorRegisteredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IDelegationManagerOperatorRegisteredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// 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 +} + +// FilterOperatorRegistered is a free log retrieval operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2. +// +// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails) +func (_IDelegationManager *IDelegationManagerFilterer) FilterOperatorRegistered(opts *bind.FilterOpts, operator []common.Address) (*IDelegationManagerOperatorRegisteredIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "OperatorRegistered", operatorRule) + if err != nil { + return nil, err + } + return &IDelegationManagerOperatorRegisteredIterator{contract: _IDelegationManager.contract, event: "OperatorRegistered", logs: logs, sub: sub}, nil +} + +// WatchOperatorRegistered is a free log subscription operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2. +// +// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails) +func (_IDelegationManager *IDelegationManagerFilterer) WatchOperatorRegistered(opts *bind.WatchOpts, sink chan<- *IDelegationManagerOperatorRegistered, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "OperatorRegistered", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IDelegationManagerOperatorRegistered) + if err := _IDelegationManager.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorRegistered is a log parse operation binding the contract event 0x8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e2. +// +// Solidity: event OperatorRegistered(address indexed operator, (address,address,uint32) operatorDetails) +func (_IDelegationManager *IDelegationManagerFilterer) ParseOperatorRegistered(log types.Log) (*IDelegationManagerOperatorRegistered, error) { + event := new(IDelegationManagerOperatorRegistered) + if err := _IDelegationManager.contract.UnpackLog(event, "OperatorRegistered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IDelegationManagerOperatorSharesDecreasedIterator is returned from FilterOperatorSharesDecreased and is used to iterate over the raw logs and unpacked data for OperatorSharesDecreased events raised by the IDelegationManager contract. +type IDelegationManagerOperatorSharesDecreasedIterator struct { + Event *IDelegationManagerOperatorSharesDecreased // Event containing the contract specifics 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 *IDelegationManagerOperatorSharesDecreasedIterator) 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(IDelegationManagerOperatorSharesDecreased) + 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(IDelegationManagerOperatorSharesDecreased) + 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 *IDelegationManagerOperatorSharesDecreasedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IDelegationManagerOperatorSharesDecreasedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IDelegationManagerOperatorSharesDecreased represents a OperatorSharesDecreased event raised by the IDelegationManager contract. +type IDelegationManagerOperatorSharesDecreased struct { + Operator common.Address + Staker common.Address + Strategy common.Address + Shares *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSharesDecreased is a free log retrieval operation binding the contract event 0x6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd. +// +// Solidity: event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_IDelegationManager *IDelegationManagerFilterer) FilterOperatorSharesDecreased(opts *bind.FilterOpts, operator []common.Address) (*IDelegationManagerOperatorSharesDecreasedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "OperatorSharesDecreased", operatorRule) + if err != nil { + return nil, err + } + return &IDelegationManagerOperatorSharesDecreasedIterator{contract: _IDelegationManager.contract, event: "OperatorSharesDecreased", logs: logs, sub: sub}, nil +} + +// WatchOperatorSharesDecreased is a free log subscription operation binding the contract event 0x6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd. +// +// Solidity: event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_IDelegationManager *IDelegationManagerFilterer) WatchOperatorSharesDecreased(opts *bind.WatchOpts, sink chan<- *IDelegationManagerOperatorSharesDecreased, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "OperatorSharesDecreased", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IDelegationManagerOperatorSharesDecreased) + if err := _IDelegationManager.contract.UnpackLog(event, "OperatorSharesDecreased", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorSharesDecreased is a log parse operation binding the contract event 0x6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd. +// +// Solidity: event OperatorSharesDecreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_IDelegationManager *IDelegationManagerFilterer) ParseOperatorSharesDecreased(log types.Log) (*IDelegationManagerOperatorSharesDecreased, error) { + event := new(IDelegationManagerOperatorSharesDecreased) + if err := _IDelegationManager.contract.UnpackLog(event, "OperatorSharesDecreased", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IDelegationManagerOperatorSharesIncreasedIterator is returned from FilterOperatorSharesIncreased and is used to iterate over the raw logs and unpacked data for OperatorSharesIncreased events raised by the IDelegationManager contract. +type IDelegationManagerOperatorSharesIncreasedIterator struct { + Event *IDelegationManagerOperatorSharesIncreased // Event containing the contract specifics 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 *IDelegationManagerOperatorSharesIncreasedIterator) 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(IDelegationManagerOperatorSharesIncreased) + 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(IDelegationManagerOperatorSharesIncreased) + 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 *IDelegationManagerOperatorSharesIncreasedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IDelegationManagerOperatorSharesIncreasedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IDelegationManagerOperatorSharesIncreased represents a OperatorSharesIncreased event raised by the IDelegationManager contract. +type IDelegationManagerOperatorSharesIncreased struct { + Operator common.Address + Staker common.Address + Strategy common.Address + Shares *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOperatorSharesIncreased is a free log retrieval operation binding the contract event 0x1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c. +// +// Solidity: event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_IDelegationManager *IDelegationManagerFilterer) FilterOperatorSharesIncreased(opts *bind.FilterOpts, operator []common.Address) (*IDelegationManagerOperatorSharesIncreasedIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "OperatorSharesIncreased", operatorRule) + if err != nil { + return nil, err + } + return &IDelegationManagerOperatorSharesIncreasedIterator{contract: _IDelegationManager.contract, event: "OperatorSharesIncreased", logs: logs, sub: sub}, nil +} + +// WatchOperatorSharesIncreased is a free log subscription operation binding the contract event 0x1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c. +// +// Solidity: event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_IDelegationManager *IDelegationManagerFilterer) WatchOperatorSharesIncreased(opts *bind.WatchOpts, sink chan<- *IDelegationManagerOperatorSharesIncreased, operator []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "OperatorSharesIncreased", operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IDelegationManagerOperatorSharesIncreased) + if err := _IDelegationManager.contract.UnpackLog(event, "OperatorSharesIncreased", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOperatorSharesIncreased is a log parse operation binding the contract event 0x1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c. +// +// Solidity: event OperatorSharesIncreased(address indexed operator, address staker, address strategy, uint256 shares) +func (_IDelegationManager *IDelegationManagerFilterer) ParseOperatorSharesIncreased(log types.Log) (*IDelegationManagerOperatorSharesIncreased, error) { + event := new(IDelegationManagerOperatorSharesIncreased) + if err := _IDelegationManager.contract.UnpackLog(event, "OperatorSharesIncreased", log); err != nil { + return nil, err + } + event.Raw = log + 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 + + 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 *IDelegationManagerStakerDelegatedIterator) 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(IDelegationManagerStakerDelegated) + 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(IDelegationManagerStakerDelegated) + 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 *IDelegationManagerStakerDelegatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IDelegationManagerStakerDelegatedIterator) 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 +} + +// FilterStakerDelegated is a free log retrieval operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304. +// +// 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) + } + + logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "StakerDelegated", stakerRule, operatorRule) + if err != nil { + return nil, err + } + return &IDelegationManagerStakerDelegatedIterator{contract: _IDelegationManager.contract, event: "StakerDelegated", logs: logs, sub: sub}, nil +} + +// WatchStakerDelegated is a free log subscription operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304. +// +// Solidity: event StakerDelegated(address indexed staker, address indexed operator) +func (_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) + } + + logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "StakerDelegated", stakerRule, operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IDelegationManagerStakerDelegated) + if err := _IDelegationManager.contract.UnpackLog(event, "StakerDelegated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseStakerDelegated is a log parse operation binding the contract event 0xc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d8743304. +// +// Solidity: event StakerDelegated(address indexed staker, address indexed operator) +func (_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 +} + +// 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 + + 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 *IDelegationManagerStakerForceUndelegatedIterator) 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(IDelegationManagerStakerForceUndelegated) + 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(IDelegationManagerStakerForceUndelegated) + 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 *IDelegationManagerStakerForceUndelegatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IDelegationManagerStakerForceUndelegatedIterator) 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 +} + +// FilterStakerForceUndelegated is a free log retrieval operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a. +// +// 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) + } + + logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule) + if err != nil { + return nil, err + } + return &IDelegationManagerStakerForceUndelegatedIterator{contract: _IDelegationManager.contract, event: "StakerForceUndelegated", logs: logs, sub: sub}, nil +} + +// WatchStakerForceUndelegated is a free log subscription operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a. +// +// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator) +func (_IDelegationManager *IDelegationManagerFilterer) WatchStakerForceUndelegated(opts *bind.WatchOpts, sink chan<- *IDelegationManagerStakerForceUndelegated, 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 := _IDelegationManager.contract.WatchLogs(opts, "StakerForceUndelegated", stakerRule, operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IDelegationManagerStakerForceUndelegated) + if err := _IDelegationManager.contract.UnpackLog(event, "StakerForceUndelegated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseStakerForceUndelegated is a log parse operation binding the contract event 0xf0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a. +// +// Solidity: event StakerForceUndelegated(address indexed staker, address indexed operator) +func (_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 +} + +// 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 + + 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 *IDelegationManagerStakerUndelegatedIterator) 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(IDelegationManagerStakerUndelegated) + 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(IDelegationManagerStakerUndelegated) + 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 *IDelegationManagerStakerUndelegatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IDelegationManagerStakerUndelegatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// 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 +} + +// FilterStakerUndelegated is a free log retrieval operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676. +// +// Solidity: event StakerUndelegated(address indexed staker, address indexed operator) +func (_IDelegationManager *IDelegationManagerFilterer) FilterStakerUndelegated(opts *bind.FilterOpts, staker []common.Address, operator []common.Address) (*IDelegationManagerStakerUndelegatedIterator, 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.FilterLogs(opts, "StakerUndelegated", stakerRule, operatorRule) + if err != nil { + return nil, err + } + return &IDelegationManagerStakerUndelegatedIterator{contract: _IDelegationManager.contract, event: "StakerUndelegated", logs: logs, sub: sub}, nil +} + +// WatchStakerUndelegated is a free log subscription operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676. +// +// Solidity: event StakerUndelegated(address indexed staker, address indexed operator) +func (_IDelegationManager *IDelegationManagerFilterer) WatchStakerUndelegated(opts *bind.WatchOpts, sink chan<- *IDelegationManagerStakerUndelegated, 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 := _IDelegationManager.contract.WatchLogs(opts, "StakerUndelegated", stakerRule, operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IDelegationManagerStakerUndelegated) + if err := _IDelegationManager.contract.UnpackLog(event, "StakerUndelegated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseStakerUndelegated is a log parse operation binding the contract event 0xfee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af44676. +// +// Solidity: event StakerUndelegated(address indexed staker, address indexed operator) +func (_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 + 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 + + 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 *IDelegationManagerStrategyWithdrawalDelayBlocksSetIterator) 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(IDelegationManagerStrategyWithdrawalDelayBlocksSet) + 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(IDelegationManagerStrategyWithdrawalDelayBlocksSet) + 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 *IDelegationManagerStrategyWithdrawalDelayBlocksSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IDelegationManagerStrategyWithdrawalDelayBlocksSetIterator) 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 +} + +// FilterStrategyWithdrawalDelayBlocksSet is a free log retrieval operation binding the contract event 0x0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d. +// +// Solidity: event StrategyWithdrawalDelayBlocksSet(address strategy, uint256 previousValue, uint256 newValue) +func (_IDelegationManager *IDelegationManagerFilterer) FilterStrategyWithdrawalDelayBlocksSet(opts *bind.FilterOpts) (*IDelegationManagerStrategyWithdrawalDelayBlocksSetIterator, error) { + + logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "StrategyWithdrawalDelayBlocksSet") + if err != nil { + return nil, err + } + 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") + 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 +} + +// ParseStrategyWithdrawalDelayBlocksSet is a log parse operation binding the contract event 0x0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d. +// +// 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 + + 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 *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 + } + 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") + 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(IDelegationManagerWithdrawalCompleted) + if err := _IDelegationManager.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 (_IDelegationManager *IDelegationManagerFilterer) ParseWithdrawalCompleted(log types.Log) (*IDelegationManagerWithdrawalCompleted, error) { + event := new(IDelegationManagerWithdrawalCompleted) + if err := _IDelegationManager.contract.UnpackLog(event, "WithdrawalCompleted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IDelegationManagerWithdrawalMigratedIterator is returned from FilterWithdrawalMigrated and is used to iterate over the raw logs and unpacked data for WithdrawalMigrated events raised by the IDelegationManager contract. +type IDelegationManagerWithdrawalMigratedIterator struct { + Event *IDelegationManagerWithdrawalMigrated // Event containing the contract specifics 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 *IDelegationManagerWithdrawalMigratedIterator) 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(IDelegationManagerWithdrawalMigrated) + 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(IDelegationManagerWithdrawalMigrated) + 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 *IDelegationManagerWithdrawalMigratedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IDelegationManagerWithdrawalMigratedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IDelegationManagerWithdrawalMigrated represents a WithdrawalMigrated event raised by the IDelegationManager contract. +type IDelegationManagerWithdrawalMigrated struct { + OldWithdrawalRoot [32]byte + NewWithdrawalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawalMigrated is a free log retrieval operation binding the contract event 0xdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630. +// +// Solidity: event WithdrawalMigrated(bytes32 oldWithdrawalRoot, bytes32 newWithdrawalRoot) +func (_IDelegationManager *IDelegationManagerFilterer) FilterWithdrawalMigrated(opts *bind.FilterOpts) (*IDelegationManagerWithdrawalMigratedIterator, error) { + + logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "WithdrawalMigrated") + if err != nil { + return nil, err + } + return &IDelegationManagerWithdrawalMigratedIterator{contract: _IDelegationManager.contract, event: "WithdrawalMigrated", logs: logs, sub: sub}, nil +} + +// WatchWithdrawalMigrated is a free log subscription operation binding the contract event 0xdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630. +// +// Solidity: event WithdrawalMigrated(bytes32 oldWithdrawalRoot, bytes32 newWithdrawalRoot) +func (_IDelegationManager *IDelegationManagerFilterer) WatchWithdrawalMigrated(opts *bind.WatchOpts, sink chan<- *IDelegationManagerWithdrawalMigrated) (event.Subscription, error) { + + logs, sub, err := _IDelegationManager.contract.WatchLogs(opts, "WithdrawalMigrated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IDelegationManagerWithdrawalMigrated) + if err := _IDelegationManager.contract.UnpackLog(event, "WithdrawalMigrated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawalMigrated is a log parse operation binding the contract event 0xdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630. +// +// Solidity: event WithdrawalMigrated(bytes32 oldWithdrawalRoot, bytes32 newWithdrawalRoot) +func (_IDelegationManager *IDelegationManagerFilterer) ParseWithdrawalMigrated(log types.Log) (*IDelegationManagerWithdrawalMigrated, error) { + event := new(IDelegationManagerWithdrawalMigrated) + if err := _IDelegationManager.contract.UnpackLog(event, "WithdrawalMigrated", 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 + + 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 *IDelegationManagerWithdrawalQueuedIterator) 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(IDelegationManagerWithdrawalQueued) + 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(IDelegationManagerWithdrawalQueued) + 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 *IDelegationManagerWithdrawalQueuedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IDelegationManagerWithdrawalQueuedIterator) 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 +} + +// 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 (_IDelegationManager *IDelegationManagerFilterer) FilterWithdrawalQueued(opts *bind.FilterOpts) (*IDelegationManagerWithdrawalQueuedIterator, error) { + + logs, sub, err := _IDelegationManager.contract.FilterLogs(opts, "WithdrawalQueued") + if err != nil { + return nil, err + } + return &IDelegationManagerWithdrawalQueuedIterator{contract: _IDelegationManager.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 (_IDelegationManager *IDelegationManagerFilterer) WatchWithdrawalQueued(opts *bind.WatchOpts, sink chan<- *IDelegationManagerWithdrawalQueued) (event.Subscription, error) { + + logs, sub, err := _IDelegationManager.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(IDelegationManagerWithdrawalQueued) + if err := _IDelegationManager.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 (_IDelegationManager *IDelegationManagerFilterer) ParseWithdrawalQueued(log types.Log) (*IDelegationManagerWithdrawalQueued, error) { + event := new(IDelegationManagerWithdrawalQueued) + if err := _IDelegationManager.contract.UnpackLog(event, "WithdrawalQueued", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/IDelegationManager/tmp.abi b/pkg/bindings/IDelegationManager/tmp.abi new file mode 100644 index 000000000..d7babda0a --- /dev/null +++ b/pkg/bindings/IDelegationManager/tmp.abi @@ -0,0 +1,1323 @@ +[ + { + "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": "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": "struct IDelegationManager.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": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "completeQueuedWithdrawal", + "inputs": [ + { + "name": "withdrawal", + "type": "tuple", + "internalType": "struct IDelegationManager.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": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + }, + { + "name": "tokens", + "type": "address[]", + "internalType": "contract IERC20[]" + }, + { + "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": "struct IDelegationManager.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": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + }, + { + "name": "tokens", + "type": "address[][]", + "internalType": "contract IERC20[][]" + }, + { + "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": "contract IStrategy" + }, + { + "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": "struct ISignatureUtils.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": "struct ISignatureUtils.SignatureWithExpiry", + "components": [ + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "expiry", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "approverSignatureAndExpiry", + "type": "tuple", + "internalType": "struct ISignatureUtils.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": "earningsReceiver", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorShares", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getWithdrawalDelay", + "inputs": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "increaseDelegatedShares", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "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": "migrateQueuedWithdrawals", + "inputs": [ + { + "name": "withdrawalsToQueue", + "type": "tuple[]", + "internalType": "struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]", + "components": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "withdrawerAndNonce", + "type": "tuple", + "internalType": "struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce", + "components": [ + { + "name": "withdrawer", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "name": "withdrawalStartBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "delegatedAddress", + "type": "address", + "internalType": "address" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "minWithdrawalDelayBlocks", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "modifyOperatorDetails", + "inputs": [ + { + "name": "newOperatorDetails", + "type": "tuple", + "internalType": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "operatorDetails", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorShares", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "queueWithdrawals", + "inputs": [ + { + "name": "queuedWithdrawalParams", + "type": "tuple[]", + "internalType": "struct IDelegationManager.QueuedWithdrawalParams[]", + "components": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "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": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "name": "metadataURI", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "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": "contract IStrategy" + } + ], + "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": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorMetadataURIUpdated", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "metadataURI", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorRegistered", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "operatorDetails", + "type": "tuple", + "indexed": false, + "internalType": "struct IDelegationManager.OperatorDetails", + "components": [ + { + "name": "earningsReceiver", + "type": "address", + "internalType": "address" + }, + { + "name": "delegationApprover", + "type": "address", + "internalType": "address" + }, + { + "name": "stakerOptOutWindowBlocks", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OperatorSharesDecreased", + "inputs": [ + { + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "staker", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + }, + { + "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": "contract IStrategy" + }, + { + "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": "contract IStrategy" + }, + { + "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": "WithdrawalMigrated", + "inputs": [ + { + "name": "oldWithdrawalRoot", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "newWithdrawalRoot", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "WithdrawalQueued", + "inputs": [ + { + "name": "withdrawalRoot", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "withdrawal", + "type": "tuple", + "indexed": false, + "internalType": "struct IDelegationManager.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": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + } + ], + "anonymous": false + } +] diff --git a/pkg/bindings/IDelegationManager/tmp.bin b/pkg/bindings/IDelegationManager/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/IDelegationManager/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/IETHPOSDeposit/binding.go b/pkg/bindings/IETHPOSDeposit/binding.go new file mode 100644 index 000000000..5b344a707 --- /dev/null +++ b/pkg/bindings/IETHPOSDeposit/binding.go @@ -0,0 +1,402 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package IETHPOSDeposit + +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 +) + +// IETHPOSDepositMetaData contains all meta data concerning the IETHPOSDeposit contract. +var IETHPOSDepositMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"withdrawal_credentials\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"deposit_data_root\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"get_deposit_count\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"get_deposit_root\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"DepositEvent\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"withdrawal_credentials\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"signature\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false}]", +} + +// IETHPOSDepositABI is the input ABI used to generate the binding from. +// Deprecated: Use IETHPOSDepositMetaData.ABI instead. +var IETHPOSDepositABI = IETHPOSDepositMetaData.ABI + +// IETHPOSDeposit is an auto generated Go binding around an Ethereum contract. +type IETHPOSDeposit struct { + IETHPOSDepositCaller // Read-only binding to the contract + IETHPOSDepositTransactor // Write-only binding to the contract + IETHPOSDepositFilterer // Log filterer for contract events +} + +// IETHPOSDepositCaller is an auto generated read-only Go binding around an Ethereum contract. +type IETHPOSDepositCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IETHPOSDepositTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IETHPOSDepositTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IETHPOSDepositFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IETHPOSDepositFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IETHPOSDepositSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IETHPOSDepositSession struct { + Contract *IETHPOSDeposit // 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 +} + +// IETHPOSDepositCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IETHPOSDepositCallerSession struct { + Contract *IETHPOSDepositCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IETHPOSDepositTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IETHPOSDepositTransactorSession struct { + Contract *IETHPOSDepositTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IETHPOSDepositRaw is an auto generated low-level Go binding around an Ethereum contract. +type IETHPOSDepositRaw struct { + Contract *IETHPOSDeposit // Generic contract binding to access the raw methods on +} + +// IETHPOSDepositCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IETHPOSDepositCallerRaw struct { + Contract *IETHPOSDepositCaller // Generic read-only contract binding to access the raw methods on +} + +// IETHPOSDepositTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IETHPOSDepositTransactorRaw struct { + Contract *IETHPOSDepositTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIETHPOSDeposit creates a new instance of IETHPOSDeposit, bound to a specific deployed contract. +func NewIETHPOSDeposit(address common.Address, backend bind.ContractBackend) (*IETHPOSDeposit, error) { + contract, err := bindIETHPOSDeposit(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IETHPOSDeposit{IETHPOSDepositCaller: IETHPOSDepositCaller{contract: contract}, IETHPOSDepositTransactor: IETHPOSDepositTransactor{contract: contract}, IETHPOSDepositFilterer: IETHPOSDepositFilterer{contract: contract}}, nil +} + +// NewIETHPOSDepositCaller creates a new read-only instance of IETHPOSDeposit, bound to a specific deployed contract. +func NewIETHPOSDepositCaller(address common.Address, caller bind.ContractCaller) (*IETHPOSDepositCaller, error) { + contract, err := bindIETHPOSDeposit(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IETHPOSDepositCaller{contract: contract}, nil +} + +// NewIETHPOSDepositTransactor creates a new write-only instance of IETHPOSDeposit, bound to a specific deployed contract. +func NewIETHPOSDepositTransactor(address common.Address, transactor bind.ContractTransactor) (*IETHPOSDepositTransactor, error) { + contract, err := bindIETHPOSDeposit(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IETHPOSDepositTransactor{contract: contract}, nil +} + +// NewIETHPOSDepositFilterer creates a new log filterer instance of IETHPOSDeposit, bound to a specific deployed contract. +func NewIETHPOSDepositFilterer(address common.Address, filterer bind.ContractFilterer) (*IETHPOSDepositFilterer, error) { + contract, err := bindIETHPOSDeposit(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IETHPOSDepositFilterer{contract: contract}, nil +} + +// bindIETHPOSDeposit binds a generic wrapper to an already deployed contract. +func bindIETHPOSDeposit(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IETHPOSDepositMetaData.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 (_IETHPOSDeposit *IETHPOSDepositRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IETHPOSDeposit.Contract.IETHPOSDepositCaller.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 (_IETHPOSDeposit *IETHPOSDepositRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IETHPOSDeposit.Contract.IETHPOSDepositTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IETHPOSDeposit *IETHPOSDepositRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IETHPOSDeposit.Contract.IETHPOSDepositTransactor.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 (_IETHPOSDeposit *IETHPOSDepositCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IETHPOSDeposit.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 (_IETHPOSDeposit *IETHPOSDepositTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IETHPOSDeposit.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IETHPOSDeposit *IETHPOSDepositTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IETHPOSDeposit.Contract.contract.Transact(opts, method, params...) +} + +// GetDepositCount is a free data retrieval call binding the contract method 0x621fd130. +// +// Solidity: function get_deposit_count() view returns(bytes) +func (_IETHPOSDeposit *IETHPOSDepositCaller) GetDepositCount(opts *bind.CallOpts) ([]byte, error) { + var out []interface{} + err := _IETHPOSDeposit.contract.Call(opts, &out, "get_deposit_count") + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// GetDepositCount is a free data retrieval call binding the contract method 0x621fd130. +// +// Solidity: function get_deposit_count() view returns(bytes) +func (_IETHPOSDeposit *IETHPOSDepositSession) GetDepositCount() ([]byte, error) { + return _IETHPOSDeposit.Contract.GetDepositCount(&_IETHPOSDeposit.CallOpts) +} + +// GetDepositCount is a free data retrieval call binding the contract method 0x621fd130. +// +// Solidity: function get_deposit_count() view returns(bytes) +func (_IETHPOSDeposit *IETHPOSDepositCallerSession) GetDepositCount() ([]byte, error) { + return _IETHPOSDeposit.Contract.GetDepositCount(&_IETHPOSDeposit.CallOpts) +} + +// GetDepositRoot is a free data retrieval call binding the contract method 0xc5f2892f. +// +// Solidity: function get_deposit_root() view returns(bytes32) +func (_IETHPOSDeposit *IETHPOSDepositCaller) GetDepositRoot(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _IETHPOSDeposit.contract.Call(opts, &out, "get_deposit_root") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetDepositRoot is a free data retrieval call binding the contract method 0xc5f2892f. +// +// Solidity: function get_deposit_root() view returns(bytes32) +func (_IETHPOSDeposit *IETHPOSDepositSession) GetDepositRoot() ([32]byte, error) { + return _IETHPOSDeposit.Contract.GetDepositRoot(&_IETHPOSDeposit.CallOpts) +} + +// GetDepositRoot is a free data retrieval call binding the contract method 0xc5f2892f. +// +// Solidity: function get_deposit_root() view returns(bytes32) +func (_IETHPOSDeposit *IETHPOSDepositCallerSession) GetDepositRoot() ([32]byte, error) { + return _IETHPOSDeposit.Contract.GetDepositRoot(&_IETHPOSDeposit.CallOpts) +} + +// Deposit is a paid mutator transaction binding the contract method 0x22895118. +// +// Solidity: function deposit(bytes pubkey, bytes withdrawal_credentials, bytes signature, bytes32 deposit_data_root) payable returns() +func (_IETHPOSDeposit *IETHPOSDepositTransactor) Deposit(opts *bind.TransactOpts, pubkey []byte, withdrawal_credentials []byte, signature []byte, deposit_data_root [32]byte) (*types.Transaction, error) { + return _IETHPOSDeposit.contract.Transact(opts, "deposit", pubkey, withdrawal_credentials, signature, deposit_data_root) +} + +// Deposit is a paid mutator transaction binding the contract method 0x22895118. +// +// Solidity: function deposit(bytes pubkey, bytes withdrawal_credentials, bytes signature, bytes32 deposit_data_root) payable returns() +func (_IETHPOSDeposit *IETHPOSDepositSession) Deposit(pubkey []byte, withdrawal_credentials []byte, signature []byte, deposit_data_root [32]byte) (*types.Transaction, error) { + return _IETHPOSDeposit.Contract.Deposit(&_IETHPOSDeposit.TransactOpts, pubkey, withdrawal_credentials, signature, deposit_data_root) +} + +// Deposit is a paid mutator transaction binding the contract method 0x22895118. +// +// Solidity: function deposit(bytes pubkey, bytes withdrawal_credentials, bytes signature, bytes32 deposit_data_root) payable returns() +func (_IETHPOSDeposit *IETHPOSDepositTransactorSession) Deposit(pubkey []byte, withdrawal_credentials []byte, signature []byte, deposit_data_root [32]byte) (*types.Transaction, error) { + return _IETHPOSDeposit.Contract.Deposit(&_IETHPOSDeposit.TransactOpts, pubkey, withdrawal_credentials, signature, deposit_data_root) +} + +// IETHPOSDepositDepositEventIterator is returned from FilterDepositEvent and is used to iterate over the raw logs and unpacked data for DepositEvent events raised by the IETHPOSDeposit contract. +type IETHPOSDepositDepositEventIterator struct { + Event *IETHPOSDepositDepositEvent // Event containing the contract specifics 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 *IETHPOSDepositDepositEventIterator) 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(IETHPOSDepositDepositEvent) + 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(IETHPOSDepositDepositEvent) + 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 *IETHPOSDepositDepositEventIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IETHPOSDepositDepositEventIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IETHPOSDepositDepositEvent represents a DepositEvent event raised by the IETHPOSDeposit contract. +type IETHPOSDepositDepositEvent struct { + Pubkey []byte + WithdrawalCredentials []byte + Amount []byte + Signature []byte + Index []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDepositEvent is a free log retrieval operation binding the contract event 0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5. +// +// Solidity: event DepositEvent(bytes pubkey, bytes withdrawal_credentials, bytes amount, bytes signature, bytes index) +func (_IETHPOSDeposit *IETHPOSDepositFilterer) FilterDepositEvent(opts *bind.FilterOpts) (*IETHPOSDepositDepositEventIterator, error) { + + logs, sub, err := _IETHPOSDeposit.contract.FilterLogs(opts, "DepositEvent") + if err != nil { + return nil, err + } + return &IETHPOSDepositDepositEventIterator{contract: _IETHPOSDeposit.contract, event: "DepositEvent", logs: logs, sub: sub}, nil +} + +// WatchDepositEvent is a free log subscription operation binding the contract event 0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5. +// +// Solidity: event DepositEvent(bytes pubkey, bytes withdrawal_credentials, bytes amount, bytes signature, bytes index) +func (_IETHPOSDeposit *IETHPOSDepositFilterer) WatchDepositEvent(opts *bind.WatchOpts, sink chan<- *IETHPOSDepositDepositEvent) (event.Subscription, error) { + + logs, sub, err := _IETHPOSDeposit.contract.WatchLogs(opts, "DepositEvent") + 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(IETHPOSDepositDepositEvent) + if err := _IETHPOSDeposit.contract.UnpackLog(event, "DepositEvent", 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 +} + +// ParseDepositEvent is a log parse operation binding the contract event 0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5. +// +// Solidity: event DepositEvent(bytes pubkey, bytes withdrawal_credentials, bytes amount, bytes signature, bytes index) +func (_IETHPOSDeposit *IETHPOSDepositFilterer) ParseDepositEvent(log types.Log) (*IETHPOSDepositDepositEvent, error) { + event := new(IETHPOSDepositDepositEvent) + if err := _IETHPOSDeposit.contract.UnpackLog(event, "DepositEvent", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/IETHPOSDeposit/tmp.abi b/pkg/bindings/IETHPOSDeposit/tmp.abi new file mode 100644 index 000000000..259b54ceb --- /dev/null +++ b/pkg/bindings/IETHPOSDeposit/tmp.abi @@ -0,0 +1,93 @@ +[ + { + "type": "function", + "name": "deposit", + "inputs": [ + { + "name": "pubkey", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "withdrawal_credentials", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "deposit_data_root", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "get_deposit_count", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "get_deposit_root", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "DepositEvent", + "inputs": [ + { + "name": "pubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "withdrawal_credentials", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "amount", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "signature", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "index", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] diff --git a/pkg/bindings/IETHPOSDeposit/tmp.bin b/pkg/bindings/IETHPOSDeposit/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/IETHPOSDeposit/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/IEigenPod/binding.go b/pkg/bindings/IEigenPod/binding.go new file mode 100644 index 000000000..d99c5eae3 --- /dev/null +++ b/pkg/bindings/IEigenPod/binding.go @@ -0,0 +1,2059 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package IEigenPod + +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 +) + +// BeaconChainProofsStateRootProof is an auto generated low-level Go binding around an user-defined struct. +type BeaconChainProofsStateRootProof struct { + BeaconStateRoot [32]byte + Proof []byte +} + +// BeaconChainProofsWithdrawalProof is an auto generated low-level Go binding around an user-defined struct. +type BeaconChainProofsWithdrawalProof struct { + WithdrawalProof []byte + SlotProof []byte + ExecutionPayloadProof []byte + TimestampProof []byte + HistoricalSummaryBlockRootProof []byte + BlockRootIndex uint64 + HistoricalSummaryIndex uint64 + WithdrawalIndex uint64 + BlockRoot [32]byte + SlotRoot [32]byte + TimestampRoot [32]byte + ExecutionPayloadRoot [32]byte +} + +// IEigenPodValidatorInfo is an auto generated low-level Go binding around an user-defined struct. +type IEigenPodValidatorInfo struct { + ValidatorIndex uint64 + RestakedBalanceGwei uint64 + MostRecentBalanceUpdateTimestamp uint64 + Status uint8 +} + +// IEigenPodMetaData contains all meta data concerning the IEigenPod contract. +var IEigenPodMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activateRestaking\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"eigenPodManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenPodManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"hasRestaked\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mostRecentWithdrawalTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nonBeaconChainETHBalanceWei\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"podOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"provenWithdrawal\",\"inputs\":[{\"name\":\"validatorPubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slot\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"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\":\"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\":\"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\":\"mostRecentBalanceUpdateTimestamp\",\"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\":\"mostRecentBalanceUpdateTimestamp\",\"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\":\"verifyAndProcessWithdrawals\",\"inputs\":[{\"name\":\"oracleTimestamp\",\"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\":\"withdrawalProofs\",\"type\":\"tuple[]\",\"internalType\":\"structBeaconChainProofs.WithdrawalProof[]\",\"components\":[{\"name\":\"withdrawalProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"slotProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"executionPayloadProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"timestampProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"historicalSummaryBlockRootProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blockRootIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"historicalSummaryIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"withdrawalIndex\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"timestampRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"executionPayloadRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"validatorFieldsProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"validatorFields\",\"type\":\"bytes32[][]\",\"internalType\":\"bytes32[][]\"},{\"name\":\"withdrawalFields\",\"type\":\"bytes32[][]\",\"internalType\":\"bytes32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyBalanceUpdates\",\"inputs\":[{\"name\":\"oracleTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"validatorIndices\",\"type\":\"uint40[]\",\"internalType\":\"uint40[]\"},{\"name\":\"stateRootProof\",\"type\":\"tuple\",\"internalType\":\"structBeaconChainProofs.StateRootProof\",\"components\":[{\"name\":\"beaconStateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"validatorFieldsProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"validatorFields\",\"type\":\"bytes32[][]\",\"internalType\":\"bytes32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyWithdrawalCredentials\",\"inputs\":[{\"name\":\"oracleTimestamp\",\"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\":\"withdrawalCredentialProofs\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"validatorFields\",\"type\":\"bytes32[][]\",\"internalType\":\"bytes32[][]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawBeforeRestaking\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawNonBeaconChainETHBalanceWei\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amountToWithdraw\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"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\":\"EigenPodStaked\",\"inputs\":[{\"name\":\"pubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FullWithdrawalRedeemed\",\"inputs\":[{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":false,\"internalType\":\"uint40\"},{\"name\":\"withdrawalTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"withdrawalAmountGwei\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NonBeaconChainETHReceived\",\"inputs\":[{\"name\":\"amountReceived\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NonBeaconChainETHWithdrawn\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amountWithdrawn\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PartialWithdrawalRedeemed\",\"inputs\":[{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":false,\"internalType\":\"uint40\"},{\"name\":\"withdrawalTimestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"partialWithdrawalAmountGwei\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"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\":\"RestakingActivated\",\"inputs\":[{\"name\":\"podOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"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\":\"ValidatorRestaked\",\"inputs\":[{\"name\":\"validatorIndex\",\"type\":\"uint40\",\"indexed\":false,\"internalType\":\"uint40\"}],\"anonymous\":false}]", +} + +// IEigenPodABI is the input ABI used to generate the binding from. +// Deprecated: Use IEigenPodMetaData.ABI instead. +var IEigenPodABI = IEigenPodMetaData.ABI + +// IEigenPod is an auto generated Go binding around an Ethereum contract. +type IEigenPod struct { + IEigenPodCaller // Read-only binding to the contract + IEigenPodTransactor // Write-only binding to the contract + IEigenPodFilterer // Log filterer for contract events +} + +// IEigenPodCaller is an auto generated read-only Go binding around an Ethereum contract. +type IEigenPodCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IEigenPodTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IEigenPodTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IEigenPodFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IEigenPodFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IEigenPodSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IEigenPodSession struct { + Contract *IEigenPod // 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 +} + +// IEigenPodCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IEigenPodCallerSession struct { + Contract *IEigenPodCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IEigenPodTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IEigenPodTransactorSession struct { + Contract *IEigenPodTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IEigenPodRaw is an auto generated low-level Go binding around an Ethereum contract. +type IEigenPodRaw struct { + Contract *IEigenPod // Generic contract binding to access the raw methods on +} + +// IEigenPodCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IEigenPodCallerRaw struct { + Contract *IEigenPodCaller // Generic read-only contract binding to access the raw methods on +} + +// IEigenPodTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IEigenPodTransactorRaw struct { + Contract *IEigenPodTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIEigenPod creates a new instance of IEigenPod, bound to a specific deployed contract. +func NewIEigenPod(address common.Address, backend bind.ContractBackend) (*IEigenPod, error) { + contract, err := bindIEigenPod(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IEigenPod{IEigenPodCaller: IEigenPodCaller{contract: contract}, IEigenPodTransactor: IEigenPodTransactor{contract: contract}, IEigenPodFilterer: IEigenPodFilterer{contract: contract}}, nil +} + +// NewIEigenPodCaller creates a new read-only instance of IEigenPod, bound to a specific deployed contract. +func NewIEigenPodCaller(address common.Address, caller bind.ContractCaller) (*IEigenPodCaller, error) { + contract, err := bindIEigenPod(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IEigenPodCaller{contract: contract}, nil +} + +// NewIEigenPodTransactor creates a new write-only instance of IEigenPod, bound to a specific deployed contract. +func NewIEigenPodTransactor(address common.Address, transactor bind.ContractTransactor) (*IEigenPodTransactor, error) { + contract, err := bindIEigenPod(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IEigenPodTransactor{contract: contract}, nil +} + +// NewIEigenPodFilterer creates a new log filterer instance of IEigenPod, bound to a specific deployed contract. +func NewIEigenPodFilterer(address common.Address, filterer bind.ContractFilterer) (*IEigenPodFilterer, error) { + contract, err := bindIEigenPod(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IEigenPodFilterer{contract: contract}, nil +} + +// bindIEigenPod binds a generic wrapper to an already deployed contract. +func bindIEigenPod(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IEigenPodMetaData.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 (_IEigenPod *IEigenPodRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IEigenPod.Contract.IEigenPodCaller.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 (_IEigenPod *IEigenPodRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IEigenPod.Contract.IEigenPodTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IEigenPod *IEigenPodRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IEigenPod.Contract.IEigenPodTransactor.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 (_IEigenPod *IEigenPodCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IEigenPod.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 (_IEigenPod *IEigenPodTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IEigenPod.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IEigenPod *IEigenPodTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IEigenPod.Contract.contract.Transact(opts, method, params...) +} + +// MAXRESTAKEDBALANCEGWEIPERVALIDATOR is a free data retrieval call binding the contract method 0x1d905d5c. +// +// Solidity: function MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR() view returns(uint64) +func (_IEigenPod *IEigenPodCaller) MAXRESTAKEDBALANCEGWEIPERVALIDATOR(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _IEigenPod.contract.Call(opts, &out, "MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// MAXRESTAKEDBALANCEGWEIPERVALIDATOR is a free data retrieval call binding the contract method 0x1d905d5c. +// +// Solidity: function MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR() view returns(uint64) +func (_IEigenPod *IEigenPodSession) MAXRESTAKEDBALANCEGWEIPERVALIDATOR() (uint64, error) { + return _IEigenPod.Contract.MAXRESTAKEDBALANCEGWEIPERVALIDATOR(&_IEigenPod.CallOpts) +} + +// MAXRESTAKEDBALANCEGWEIPERVALIDATOR is a free data retrieval call binding the contract method 0x1d905d5c. +// +// Solidity: function MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR() view returns(uint64) +func (_IEigenPod *IEigenPodCallerSession) MAXRESTAKEDBALANCEGWEIPERVALIDATOR() (uint64, error) { + return _IEigenPod.Contract.MAXRESTAKEDBALANCEGWEIPERVALIDATOR(&_IEigenPod.CallOpts) +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_IEigenPod *IEigenPodCaller) EigenPodManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IEigenPod.contract.Call(opts, &out, "eigenPodManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_IEigenPod *IEigenPodSession) EigenPodManager() (common.Address, error) { + return _IEigenPod.Contract.EigenPodManager(&_IEigenPod.CallOpts) +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_IEigenPod *IEigenPodCallerSession) EigenPodManager() (common.Address, error) { + return _IEigenPod.Contract.EigenPodManager(&_IEigenPod.CallOpts) +} + +// HasRestaked is a free data retrieval call binding the contract method 0x3106ab53. +// +// Solidity: function hasRestaked() view returns(bool) +func (_IEigenPod *IEigenPodCaller) HasRestaked(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _IEigenPod.contract.Call(opts, &out, "hasRestaked") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasRestaked is a free data retrieval call binding the contract method 0x3106ab53. +// +// Solidity: function hasRestaked() view returns(bool) +func (_IEigenPod *IEigenPodSession) HasRestaked() (bool, error) { + return _IEigenPod.Contract.HasRestaked(&_IEigenPod.CallOpts) +} + +// HasRestaked is a free data retrieval call binding the contract method 0x3106ab53. +// +// Solidity: function hasRestaked() view returns(bool) +func (_IEigenPod *IEigenPodCallerSession) HasRestaked() (bool, error) { + return _IEigenPod.Contract.HasRestaked(&_IEigenPod.CallOpts) +} + +// MostRecentWithdrawalTimestamp is a free data retrieval call binding the contract method 0x87e0d289. +// +// Solidity: function mostRecentWithdrawalTimestamp() view returns(uint64) +func (_IEigenPod *IEigenPodCaller) MostRecentWithdrawalTimestamp(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _IEigenPod.contract.Call(opts, &out, "mostRecentWithdrawalTimestamp") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// MostRecentWithdrawalTimestamp is a free data retrieval call binding the contract method 0x87e0d289. +// +// Solidity: function mostRecentWithdrawalTimestamp() view returns(uint64) +func (_IEigenPod *IEigenPodSession) MostRecentWithdrawalTimestamp() (uint64, error) { + return _IEigenPod.Contract.MostRecentWithdrawalTimestamp(&_IEigenPod.CallOpts) +} + +// MostRecentWithdrawalTimestamp is a free data retrieval call binding the contract method 0x87e0d289. +// +// Solidity: function mostRecentWithdrawalTimestamp() view returns(uint64) +func (_IEigenPod *IEigenPodCallerSession) MostRecentWithdrawalTimestamp() (uint64, error) { + return _IEigenPod.Contract.MostRecentWithdrawalTimestamp(&_IEigenPod.CallOpts) +} + +// NonBeaconChainETHBalanceWei is a free data retrieval call binding the contract method 0xfe80b087. +// +// Solidity: function nonBeaconChainETHBalanceWei() view returns(uint256) +func (_IEigenPod *IEigenPodCaller) NonBeaconChainETHBalanceWei(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IEigenPod.contract.Call(opts, &out, "nonBeaconChainETHBalanceWei") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// NonBeaconChainETHBalanceWei is a free data retrieval call binding the contract method 0xfe80b087. +// +// Solidity: function nonBeaconChainETHBalanceWei() view returns(uint256) +func (_IEigenPod *IEigenPodSession) NonBeaconChainETHBalanceWei() (*big.Int, error) { + return _IEigenPod.Contract.NonBeaconChainETHBalanceWei(&_IEigenPod.CallOpts) +} + +// NonBeaconChainETHBalanceWei is a free data retrieval call binding the contract method 0xfe80b087. +// +// Solidity: function nonBeaconChainETHBalanceWei() view returns(uint256) +func (_IEigenPod *IEigenPodCallerSession) NonBeaconChainETHBalanceWei() (*big.Int, error) { + return _IEigenPod.Contract.NonBeaconChainETHBalanceWei(&_IEigenPod.CallOpts) +} + +// PodOwner is a free data retrieval call binding the contract method 0x0b18ff66. +// +// Solidity: function podOwner() view returns(address) +func (_IEigenPod *IEigenPodCaller) PodOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IEigenPod.contract.Call(opts, &out, "podOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PodOwner is a free data retrieval call binding the contract method 0x0b18ff66. +// +// Solidity: function podOwner() view returns(address) +func (_IEigenPod *IEigenPodSession) PodOwner() (common.Address, error) { + return _IEigenPod.Contract.PodOwner(&_IEigenPod.CallOpts) +} + +// PodOwner is a free data retrieval call binding the contract method 0x0b18ff66. +// +// Solidity: function podOwner() view returns(address) +func (_IEigenPod *IEigenPodCallerSession) PodOwner() (common.Address, error) { + return _IEigenPod.Contract.PodOwner(&_IEigenPod.CallOpts) +} + +// ProvenWithdrawal is a free data retrieval call binding the contract method 0x34bea20a. +// +// Solidity: function provenWithdrawal(bytes32 validatorPubkeyHash, uint64 slot) view returns(bool) +func (_IEigenPod *IEigenPodCaller) ProvenWithdrawal(opts *bind.CallOpts, validatorPubkeyHash [32]byte, slot uint64) (bool, error) { + var out []interface{} + err := _IEigenPod.contract.Call(opts, &out, "provenWithdrawal", validatorPubkeyHash, slot) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ProvenWithdrawal is a free data retrieval call binding the contract method 0x34bea20a. +// +// Solidity: function provenWithdrawal(bytes32 validatorPubkeyHash, uint64 slot) view returns(bool) +func (_IEigenPod *IEigenPodSession) ProvenWithdrawal(validatorPubkeyHash [32]byte, slot uint64) (bool, error) { + return _IEigenPod.Contract.ProvenWithdrawal(&_IEigenPod.CallOpts, validatorPubkeyHash, slot) +} + +// ProvenWithdrawal is a free data retrieval call binding the contract method 0x34bea20a. +// +// Solidity: function provenWithdrawal(bytes32 validatorPubkeyHash, uint64 slot) view returns(bool) +func (_IEigenPod *IEigenPodCallerSession) ProvenWithdrawal(validatorPubkeyHash [32]byte, slot uint64) (bool, error) { + return _IEigenPod.Contract.ProvenWithdrawal(&_IEigenPod.CallOpts, validatorPubkeyHash, slot) +} + +// 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) { + var out []interface{} + err := _IEigenPod.contract.Call(opts, &out, "validatorPubkeyHashToInfo", validatorPubkeyHash) + + if err != nil { + return *new(IEigenPodValidatorInfo), err + } + + out0 := *abi.ConvertType(out[0], new(IEigenPodValidatorInfo)).(*IEigenPodValidatorInfo) + + return out0, err + +} + +// 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) { + 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) { + 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) { + var out []interface{} + err := _IEigenPod.contract.Call(opts, &out, "validatorPubkeyToInfo", validatorPubkey) + + if err != nil { + return *new(IEigenPodValidatorInfo), err + } + + out0 := *abi.ConvertType(out[0], new(IEigenPodValidatorInfo)).(*IEigenPodValidatorInfo) + + return out0, err + +} + +// 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) { + 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) { + return _IEigenPod.Contract.ValidatorPubkeyToInfo(&_IEigenPod.CallOpts, validatorPubkey) +} + +// ValidatorStatus is a free data retrieval call binding the contract method 0x58eaee79. +// +// Solidity: function validatorStatus(bytes validatorPubkey) view returns(uint8) +func (_IEigenPod *IEigenPodCaller) ValidatorStatus(opts *bind.CallOpts, validatorPubkey []byte) (uint8, error) { + var out []interface{} + err := _IEigenPod.contract.Call(opts, &out, "validatorStatus", validatorPubkey) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// ValidatorStatus is a free data retrieval call binding the contract method 0x58eaee79. +// +// Solidity: function validatorStatus(bytes validatorPubkey) view returns(uint8) +func (_IEigenPod *IEigenPodSession) ValidatorStatus(validatorPubkey []byte) (uint8, error) { + return _IEigenPod.Contract.ValidatorStatus(&_IEigenPod.CallOpts, validatorPubkey) +} + +// ValidatorStatus is a free data retrieval call binding the contract method 0x58eaee79. +// +// Solidity: function validatorStatus(bytes validatorPubkey) view returns(uint8) +func (_IEigenPod *IEigenPodCallerSession) ValidatorStatus(validatorPubkey []byte) (uint8, error) { + return _IEigenPod.Contract.ValidatorStatus(&_IEigenPod.CallOpts, validatorPubkey) +} + +// ValidatorStatus0 is a free data retrieval call binding the contract method 0x7439841f. +// +// Solidity: function validatorStatus(bytes32 pubkeyHash) view returns(uint8) +func (_IEigenPod *IEigenPodCaller) ValidatorStatus0(opts *bind.CallOpts, pubkeyHash [32]byte) (uint8, error) { + var out []interface{} + err := _IEigenPod.contract.Call(opts, &out, "validatorStatus0", pubkeyHash) + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// ValidatorStatus0 is a free data retrieval call binding the contract method 0x7439841f. +// +// Solidity: function validatorStatus(bytes32 pubkeyHash) view returns(uint8) +func (_IEigenPod *IEigenPodSession) ValidatorStatus0(pubkeyHash [32]byte) (uint8, error) { + return _IEigenPod.Contract.ValidatorStatus0(&_IEigenPod.CallOpts, pubkeyHash) +} + +// ValidatorStatus0 is a free data retrieval call binding the contract method 0x7439841f. +// +// Solidity: function validatorStatus(bytes32 pubkeyHash) view returns(uint8) +func (_IEigenPod *IEigenPodCallerSession) ValidatorStatus0(pubkeyHash [32]byte) (uint8, error) { + return _IEigenPod.Contract.ValidatorStatus0(&_IEigenPod.CallOpts, pubkeyHash) +} + +// WithdrawableRestakedExecutionLayerGwei is a free data retrieval call binding the contract method 0x3474aa16. +// +// Solidity: function withdrawableRestakedExecutionLayerGwei() view returns(uint64) +func (_IEigenPod *IEigenPodCaller) WithdrawableRestakedExecutionLayerGwei(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _IEigenPod.contract.Call(opts, &out, "withdrawableRestakedExecutionLayerGwei") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// WithdrawableRestakedExecutionLayerGwei is a free data retrieval call binding the contract method 0x3474aa16. +// +// Solidity: function withdrawableRestakedExecutionLayerGwei() view returns(uint64) +func (_IEigenPod *IEigenPodSession) WithdrawableRestakedExecutionLayerGwei() (uint64, error) { + return _IEigenPod.Contract.WithdrawableRestakedExecutionLayerGwei(&_IEigenPod.CallOpts) +} + +// WithdrawableRestakedExecutionLayerGwei is a free data retrieval call binding the contract method 0x3474aa16. +// +// Solidity: function withdrawableRestakedExecutionLayerGwei() view returns(uint64) +func (_IEigenPod *IEigenPodCallerSession) WithdrawableRestakedExecutionLayerGwei() (uint64, error) { + return _IEigenPod.Contract.WithdrawableRestakedExecutionLayerGwei(&_IEigenPod.CallOpts) +} + +// ActivateRestaking is a paid mutator transaction binding the contract method 0x0cd4649e. +// +// Solidity: function activateRestaking() returns() +func (_IEigenPod *IEigenPodTransactor) ActivateRestaking(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IEigenPod.contract.Transact(opts, "activateRestaking") +} + +// ActivateRestaking is a paid mutator transaction binding the contract method 0x0cd4649e. +// +// Solidity: function activateRestaking() returns() +func (_IEigenPod *IEigenPodSession) ActivateRestaking() (*types.Transaction, error) { + return _IEigenPod.Contract.ActivateRestaking(&_IEigenPod.TransactOpts) +} + +// ActivateRestaking is a paid mutator transaction binding the contract method 0x0cd4649e. +// +// Solidity: function activateRestaking() returns() +func (_IEigenPod *IEigenPodTransactorSession) ActivateRestaking() (*types.Transaction, error) { + return _IEigenPod.Contract.ActivateRestaking(&_IEigenPod.TransactOpts) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address owner) returns() +func (_IEigenPod *IEigenPodTransactor) Initialize(opts *bind.TransactOpts, owner common.Address) (*types.Transaction, error) { + return _IEigenPod.contract.Transact(opts, "initialize", owner) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address owner) returns() +func (_IEigenPod *IEigenPodSession) Initialize(owner common.Address) (*types.Transaction, error) { + return _IEigenPod.Contract.Initialize(&_IEigenPod.TransactOpts, owner) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address owner) returns() +func (_IEigenPod *IEigenPodTransactorSession) Initialize(owner common.Address) (*types.Transaction, error) { + return _IEigenPod.Contract.Initialize(&_IEigenPod.TransactOpts, owner) +} + +// RecoverTokens is a paid mutator transaction binding the contract method 0xdda3346c. +// +// Solidity: function recoverTokens(address[] tokenList, uint256[] amountsToWithdraw, address recipient) returns() +func (_IEigenPod *IEigenPodTransactor) RecoverTokens(opts *bind.TransactOpts, tokenList []common.Address, amountsToWithdraw []*big.Int, recipient common.Address) (*types.Transaction, error) { + return _IEigenPod.contract.Transact(opts, "recoverTokens", tokenList, amountsToWithdraw, recipient) +} + +// RecoverTokens is a paid mutator transaction binding the contract method 0xdda3346c. +// +// Solidity: function recoverTokens(address[] tokenList, uint256[] amountsToWithdraw, address recipient) returns() +func (_IEigenPod *IEigenPodSession) RecoverTokens(tokenList []common.Address, amountsToWithdraw []*big.Int, recipient common.Address) (*types.Transaction, error) { + return _IEigenPod.Contract.RecoverTokens(&_IEigenPod.TransactOpts, tokenList, amountsToWithdraw, recipient) +} + +// RecoverTokens is a paid mutator transaction binding the contract method 0xdda3346c. +// +// Solidity: function recoverTokens(address[] tokenList, uint256[] amountsToWithdraw, address recipient) returns() +func (_IEigenPod *IEigenPodTransactorSession) RecoverTokens(tokenList []common.Address, amountsToWithdraw []*big.Int, recipient common.Address) (*types.Transaction, error) { + return _IEigenPod.Contract.RecoverTokens(&_IEigenPod.TransactOpts, tokenList, amountsToWithdraw, recipient) +} + +// Stake is a paid mutator transaction binding the contract method 0x9b4e4634. +// +// Solidity: function stake(bytes pubkey, bytes signature, bytes32 depositDataRoot) payable returns() +func (_IEigenPod *IEigenPodTransactor) Stake(opts *bind.TransactOpts, pubkey []byte, signature []byte, depositDataRoot [32]byte) (*types.Transaction, error) { + return _IEigenPod.contract.Transact(opts, "stake", pubkey, signature, depositDataRoot) +} + +// Stake is a paid mutator transaction binding the contract method 0x9b4e4634. +// +// Solidity: function stake(bytes pubkey, bytes signature, bytes32 depositDataRoot) payable returns() +func (_IEigenPod *IEigenPodSession) Stake(pubkey []byte, signature []byte, depositDataRoot [32]byte) (*types.Transaction, error) { + return _IEigenPod.Contract.Stake(&_IEigenPod.TransactOpts, pubkey, signature, depositDataRoot) +} + +// Stake is a paid mutator transaction binding the contract method 0x9b4e4634. +// +// Solidity: function stake(bytes pubkey, bytes signature, bytes32 depositDataRoot) payable returns() +func (_IEigenPod *IEigenPodTransactorSession) Stake(pubkey []byte, signature []byte, depositDataRoot [32]byte) (*types.Transaction, error) { + return _IEigenPod.Contract.Stake(&_IEigenPod.TransactOpts, pubkey, signature, depositDataRoot) +} + +// VerifyAndProcessWithdrawals is a paid mutator transaction binding the contract method 0xe251ef52. +// +// Solidity: function verifyAndProcessWithdrawals(uint64 oracleTimestamp, (bytes32,bytes) stateRootProof, (bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[] withdrawalProofs, bytes[] validatorFieldsProofs, bytes32[][] validatorFields, bytes32[][] withdrawalFields) returns() +func (_IEigenPod *IEigenPodTransactor) VerifyAndProcessWithdrawals(opts *bind.TransactOpts, oracleTimestamp uint64, stateRootProof BeaconChainProofsStateRootProof, withdrawalProofs []BeaconChainProofsWithdrawalProof, validatorFieldsProofs [][]byte, validatorFields [][][32]byte, withdrawalFields [][][32]byte) (*types.Transaction, error) { + return _IEigenPod.contract.Transact(opts, "verifyAndProcessWithdrawals", oracleTimestamp, stateRootProof, withdrawalProofs, validatorFieldsProofs, validatorFields, withdrawalFields) +} + +// VerifyAndProcessWithdrawals is a paid mutator transaction binding the contract method 0xe251ef52. +// +// Solidity: function verifyAndProcessWithdrawals(uint64 oracleTimestamp, (bytes32,bytes) stateRootProof, (bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[] withdrawalProofs, bytes[] validatorFieldsProofs, bytes32[][] validatorFields, bytes32[][] withdrawalFields) returns() +func (_IEigenPod *IEigenPodSession) VerifyAndProcessWithdrawals(oracleTimestamp uint64, stateRootProof BeaconChainProofsStateRootProof, withdrawalProofs []BeaconChainProofsWithdrawalProof, validatorFieldsProofs [][]byte, validatorFields [][][32]byte, withdrawalFields [][][32]byte) (*types.Transaction, error) { + return _IEigenPod.Contract.VerifyAndProcessWithdrawals(&_IEigenPod.TransactOpts, oracleTimestamp, stateRootProof, withdrawalProofs, validatorFieldsProofs, validatorFields, withdrawalFields) +} + +// VerifyAndProcessWithdrawals is a paid mutator transaction binding the contract method 0xe251ef52. +// +// Solidity: function verifyAndProcessWithdrawals(uint64 oracleTimestamp, (bytes32,bytes) stateRootProof, (bytes,bytes,bytes,bytes,bytes,uint64,uint64,uint64,bytes32,bytes32,bytes32,bytes32)[] withdrawalProofs, bytes[] validatorFieldsProofs, bytes32[][] validatorFields, bytes32[][] withdrawalFields) returns() +func (_IEigenPod *IEigenPodTransactorSession) VerifyAndProcessWithdrawals(oracleTimestamp uint64, stateRootProof BeaconChainProofsStateRootProof, withdrawalProofs []BeaconChainProofsWithdrawalProof, validatorFieldsProofs [][]byte, validatorFields [][][32]byte, withdrawalFields [][][32]byte) (*types.Transaction, error) { + return _IEigenPod.Contract.VerifyAndProcessWithdrawals(&_IEigenPod.TransactOpts, oracleTimestamp, stateRootProof, withdrawalProofs, validatorFieldsProofs, validatorFields, withdrawalFields) +} + +// VerifyBalanceUpdates is a paid mutator transaction binding the contract method 0xa50600f4. +// +// Solidity: function verifyBalanceUpdates(uint64 oracleTimestamp, uint40[] validatorIndices, (bytes32,bytes) stateRootProof, bytes[] validatorFieldsProofs, bytes32[][] validatorFields) returns() +func (_IEigenPod *IEigenPodTransactor) VerifyBalanceUpdates(opts *bind.TransactOpts, oracleTimestamp uint64, validatorIndices []*big.Int, stateRootProof BeaconChainProofsStateRootProof, validatorFieldsProofs [][]byte, validatorFields [][][32]byte) (*types.Transaction, error) { + return _IEigenPod.contract.Transact(opts, "verifyBalanceUpdates", oracleTimestamp, validatorIndices, stateRootProof, validatorFieldsProofs, validatorFields) +} + +// VerifyBalanceUpdates is a paid mutator transaction binding the contract method 0xa50600f4. +// +// Solidity: function verifyBalanceUpdates(uint64 oracleTimestamp, uint40[] validatorIndices, (bytes32,bytes) stateRootProof, bytes[] validatorFieldsProofs, bytes32[][] validatorFields) returns() +func (_IEigenPod *IEigenPodSession) VerifyBalanceUpdates(oracleTimestamp uint64, validatorIndices []*big.Int, stateRootProof BeaconChainProofsStateRootProof, validatorFieldsProofs [][]byte, validatorFields [][][32]byte) (*types.Transaction, error) { + return _IEigenPod.Contract.VerifyBalanceUpdates(&_IEigenPod.TransactOpts, oracleTimestamp, validatorIndices, stateRootProof, validatorFieldsProofs, validatorFields) +} + +// VerifyBalanceUpdates is a paid mutator transaction binding the contract method 0xa50600f4. +// +// Solidity: function verifyBalanceUpdates(uint64 oracleTimestamp, uint40[] validatorIndices, (bytes32,bytes) stateRootProof, bytes[] validatorFieldsProofs, bytes32[][] validatorFields) returns() +func (_IEigenPod *IEigenPodTransactorSession) VerifyBalanceUpdates(oracleTimestamp uint64, validatorIndices []*big.Int, stateRootProof BeaconChainProofsStateRootProof, validatorFieldsProofs [][]byte, validatorFields [][][32]byte) (*types.Transaction, error) { + return _IEigenPod.Contract.VerifyBalanceUpdates(&_IEigenPod.TransactOpts, oracleTimestamp, validatorIndices, stateRootProof, validatorFieldsProofs, validatorFields) +} + +// VerifyWithdrawalCredentials is a paid mutator transaction binding the contract method 0x3f65cf19. +// +// Solidity: function verifyWithdrawalCredentials(uint64 oracleTimestamp, (bytes32,bytes) stateRootProof, uint40[] validatorIndices, bytes[] withdrawalCredentialProofs, bytes32[][] validatorFields) returns() +func (_IEigenPod *IEigenPodTransactor) VerifyWithdrawalCredentials(opts *bind.TransactOpts, oracleTimestamp uint64, stateRootProof BeaconChainProofsStateRootProof, validatorIndices []*big.Int, withdrawalCredentialProofs [][]byte, validatorFields [][][32]byte) (*types.Transaction, error) { + return _IEigenPod.contract.Transact(opts, "verifyWithdrawalCredentials", oracleTimestamp, stateRootProof, validatorIndices, withdrawalCredentialProofs, validatorFields) +} + +// VerifyWithdrawalCredentials is a paid mutator transaction binding the contract method 0x3f65cf19. +// +// Solidity: function verifyWithdrawalCredentials(uint64 oracleTimestamp, (bytes32,bytes) stateRootProof, uint40[] validatorIndices, bytes[] withdrawalCredentialProofs, bytes32[][] validatorFields) returns() +func (_IEigenPod *IEigenPodSession) VerifyWithdrawalCredentials(oracleTimestamp uint64, stateRootProof BeaconChainProofsStateRootProof, validatorIndices []*big.Int, withdrawalCredentialProofs [][]byte, validatorFields [][][32]byte) (*types.Transaction, error) { + return _IEigenPod.Contract.VerifyWithdrawalCredentials(&_IEigenPod.TransactOpts, oracleTimestamp, stateRootProof, validatorIndices, withdrawalCredentialProofs, validatorFields) +} + +// VerifyWithdrawalCredentials is a paid mutator transaction binding the contract method 0x3f65cf19. +// +// Solidity: function verifyWithdrawalCredentials(uint64 oracleTimestamp, (bytes32,bytes) stateRootProof, uint40[] validatorIndices, bytes[] withdrawalCredentialProofs, bytes32[][] validatorFields) returns() +func (_IEigenPod *IEigenPodTransactorSession) VerifyWithdrawalCredentials(oracleTimestamp uint64, stateRootProof BeaconChainProofsStateRootProof, validatorIndices []*big.Int, withdrawalCredentialProofs [][]byte, validatorFields [][][32]byte) (*types.Transaction, error) { + return _IEigenPod.Contract.VerifyWithdrawalCredentials(&_IEigenPod.TransactOpts, oracleTimestamp, stateRootProof, validatorIndices, withdrawalCredentialProofs, validatorFields) +} + +// WithdrawBeforeRestaking is a paid mutator transaction binding the contract method 0xbaa7145a. +// +// Solidity: function withdrawBeforeRestaking() returns() +func (_IEigenPod *IEigenPodTransactor) WithdrawBeforeRestaking(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IEigenPod.contract.Transact(opts, "withdrawBeforeRestaking") +} + +// WithdrawBeforeRestaking is a paid mutator transaction binding the contract method 0xbaa7145a. +// +// Solidity: function withdrawBeforeRestaking() returns() +func (_IEigenPod *IEigenPodSession) WithdrawBeforeRestaking() (*types.Transaction, error) { + return _IEigenPod.Contract.WithdrawBeforeRestaking(&_IEigenPod.TransactOpts) +} + +// WithdrawBeforeRestaking is a paid mutator transaction binding the contract method 0xbaa7145a. +// +// Solidity: function withdrawBeforeRestaking() returns() +func (_IEigenPod *IEigenPodTransactorSession) WithdrawBeforeRestaking() (*types.Transaction, error) { + return _IEigenPod.Contract.WithdrawBeforeRestaking(&_IEigenPod.TransactOpts) +} + +// WithdrawNonBeaconChainETHBalanceWei is a paid mutator transaction binding the contract method 0xe2c83445. +// +// Solidity: function withdrawNonBeaconChainETHBalanceWei(address recipient, uint256 amountToWithdraw) returns() +func (_IEigenPod *IEigenPodTransactor) WithdrawNonBeaconChainETHBalanceWei(opts *bind.TransactOpts, recipient common.Address, amountToWithdraw *big.Int) (*types.Transaction, error) { + return _IEigenPod.contract.Transact(opts, "withdrawNonBeaconChainETHBalanceWei", recipient, amountToWithdraw) +} + +// WithdrawNonBeaconChainETHBalanceWei is a paid mutator transaction binding the contract method 0xe2c83445. +// +// Solidity: function withdrawNonBeaconChainETHBalanceWei(address recipient, uint256 amountToWithdraw) returns() +func (_IEigenPod *IEigenPodSession) WithdrawNonBeaconChainETHBalanceWei(recipient common.Address, amountToWithdraw *big.Int) (*types.Transaction, error) { + return _IEigenPod.Contract.WithdrawNonBeaconChainETHBalanceWei(&_IEigenPod.TransactOpts, recipient, amountToWithdraw) +} + +// WithdrawNonBeaconChainETHBalanceWei is a paid mutator transaction binding the contract method 0xe2c83445. +// +// Solidity: function withdrawNonBeaconChainETHBalanceWei(address recipient, uint256 amountToWithdraw) returns() +func (_IEigenPod *IEigenPodTransactorSession) WithdrawNonBeaconChainETHBalanceWei(recipient common.Address, amountToWithdraw *big.Int) (*types.Transaction, error) { + return _IEigenPod.Contract.WithdrawNonBeaconChainETHBalanceWei(&_IEigenPod.TransactOpts, recipient, amountToWithdraw) +} + +// WithdrawRestakedBeaconChainETH is a paid mutator transaction binding the contract method 0xc4907442. +// +// Solidity: function withdrawRestakedBeaconChainETH(address recipient, uint256 amount) returns() +func (_IEigenPod *IEigenPodTransactor) WithdrawRestakedBeaconChainETH(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IEigenPod.contract.Transact(opts, "withdrawRestakedBeaconChainETH", recipient, amount) +} + +// WithdrawRestakedBeaconChainETH is a paid mutator transaction binding the contract method 0xc4907442. +// +// Solidity: function withdrawRestakedBeaconChainETH(address recipient, uint256 amount) returns() +func (_IEigenPod *IEigenPodSession) WithdrawRestakedBeaconChainETH(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IEigenPod.Contract.WithdrawRestakedBeaconChainETH(&_IEigenPod.TransactOpts, recipient, amount) +} + +// WithdrawRestakedBeaconChainETH is a paid mutator transaction binding the contract method 0xc4907442. +// +// Solidity: function withdrawRestakedBeaconChainETH(address recipient, uint256 amount) returns() +func (_IEigenPod *IEigenPodTransactorSession) WithdrawRestakedBeaconChainETH(recipient common.Address, amount *big.Int) (*types.Transaction, error) { + return _IEigenPod.Contract.WithdrawRestakedBeaconChainETH(&_IEigenPod.TransactOpts, recipient, amount) +} + +// IEigenPodEigenPodStakedIterator is returned from FilterEigenPodStaked and is used to iterate over the raw logs and unpacked data for EigenPodStaked events raised by the IEigenPod contract. +type IEigenPodEigenPodStakedIterator struct { + Event *IEigenPodEigenPodStaked // Event containing the contract specifics 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 *IEigenPodEigenPodStakedIterator) 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(IEigenPodEigenPodStaked) + 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(IEigenPodEigenPodStaked) + 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 *IEigenPodEigenPodStakedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IEigenPodEigenPodStakedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IEigenPodEigenPodStaked represents a EigenPodStaked event raised by the IEigenPod contract. +type IEigenPodEigenPodStaked struct { + Pubkey []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEigenPodStaked is a free log retrieval operation binding the contract event 0x606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23. +// +// Solidity: event EigenPodStaked(bytes pubkey) +func (_IEigenPod *IEigenPodFilterer) FilterEigenPodStaked(opts *bind.FilterOpts) (*IEigenPodEigenPodStakedIterator, error) { + + logs, sub, err := _IEigenPod.contract.FilterLogs(opts, "EigenPodStaked") + if err != nil { + return nil, err + } + return &IEigenPodEigenPodStakedIterator{contract: _IEigenPod.contract, event: "EigenPodStaked", logs: logs, sub: sub}, nil +} + +// WatchEigenPodStaked is a free log subscription operation binding the contract event 0x606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23. +// +// Solidity: event EigenPodStaked(bytes pubkey) +func (_IEigenPod *IEigenPodFilterer) WatchEigenPodStaked(opts *bind.WatchOpts, sink chan<- *IEigenPodEigenPodStaked) (event.Subscription, error) { + + logs, sub, err := _IEigenPod.contract.WatchLogs(opts, "EigenPodStaked") + 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(IEigenPodEigenPodStaked) + if err := _IEigenPod.contract.UnpackLog(event, "EigenPodStaked", 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 +} + +// ParseEigenPodStaked is a log parse operation binding the contract event 0x606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e23. +// +// Solidity: event EigenPodStaked(bytes pubkey) +func (_IEigenPod *IEigenPodFilterer) ParseEigenPodStaked(log types.Log) (*IEigenPodEigenPodStaked, error) { + event := new(IEigenPodEigenPodStaked) + if err := _IEigenPod.contract.UnpackLog(event, "EigenPodStaked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IEigenPodFullWithdrawalRedeemedIterator is returned from FilterFullWithdrawalRedeemed and is used to iterate over the raw logs and unpacked data for FullWithdrawalRedeemed events raised by the IEigenPod contract. +type IEigenPodFullWithdrawalRedeemedIterator struct { + Event *IEigenPodFullWithdrawalRedeemed // Event containing the contract specifics 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 *IEigenPodFullWithdrawalRedeemedIterator) 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(IEigenPodFullWithdrawalRedeemed) + 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(IEigenPodFullWithdrawalRedeemed) + 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 *IEigenPodFullWithdrawalRedeemedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IEigenPodFullWithdrawalRedeemedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IEigenPodFullWithdrawalRedeemed represents a FullWithdrawalRedeemed event raised by the IEigenPod contract. +type IEigenPodFullWithdrawalRedeemed struct { + ValidatorIndex *big.Int + WithdrawalTimestamp uint64 + Recipient common.Address + WithdrawalAmountGwei uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterFullWithdrawalRedeemed is a free log retrieval operation binding the contract event 0xb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a0963. +// +// Solidity: event FullWithdrawalRedeemed(uint40 validatorIndex, uint64 withdrawalTimestamp, address indexed recipient, uint64 withdrawalAmountGwei) +func (_IEigenPod *IEigenPodFilterer) FilterFullWithdrawalRedeemed(opts *bind.FilterOpts, recipient []common.Address) (*IEigenPodFullWithdrawalRedeemedIterator, error) { + + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IEigenPod.contract.FilterLogs(opts, "FullWithdrawalRedeemed", recipientRule) + if err != nil { + return nil, err + } + return &IEigenPodFullWithdrawalRedeemedIterator{contract: _IEigenPod.contract, event: "FullWithdrawalRedeemed", logs: logs, sub: sub}, nil +} + +// WatchFullWithdrawalRedeemed is a free log subscription operation binding the contract event 0xb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a0963. +// +// Solidity: event FullWithdrawalRedeemed(uint40 validatorIndex, uint64 withdrawalTimestamp, address indexed recipient, uint64 withdrawalAmountGwei) +func (_IEigenPod *IEigenPodFilterer) WatchFullWithdrawalRedeemed(opts *bind.WatchOpts, sink chan<- *IEigenPodFullWithdrawalRedeemed, recipient []common.Address) (event.Subscription, error) { + + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IEigenPod.contract.WatchLogs(opts, "FullWithdrawalRedeemed", recipientRule) + 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(IEigenPodFullWithdrawalRedeemed) + if err := _IEigenPod.contract.UnpackLog(event, "FullWithdrawalRedeemed", 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 +} + +// ParseFullWithdrawalRedeemed is a log parse operation binding the contract event 0xb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a0963. +// +// Solidity: event FullWithdrawalRedeemed(uint40 validatorIndex, uint64 withdrawalTimestamp, address indexed recipient, uint64 withdrawalAmountGwei) +func (_IEigenPod *IEigenPodFilterer) ParseFullWithdrawalRedeemed(log types.Log) (*IEigenPodFullWithdrawalRedeemed, error) { + event := new(IEigenPodFullWithdrawalRedeemed) + if err := _IEigenPod.contract.UnpackLog(event, "FullWithdrawalRedeemed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IEigenPodNonBeaconChainETHReceivedIterator is returned from FilterNonBeaconChainETHReceived and is used to iterate over the raw logs and unpacked data for NonBeaconChainETHReceived events raised by the IEigenPod contract. +type IEigenPodNonBeaconChainETHReceivedIterator struct { + Event *IEigenPodNonBeaconChainETHReceived // Event containing the contract specifics 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 *IEigenPodNonBeaconChainETHReceivedIterator) 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(IEigenPodNonBeaconChainETHReceived) + 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(IEigenPodNonBeaconChainETHReceived) + 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 *IEigenPodNonBeaconChainETHReceivedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IEigenPodNonBeaconChainETHReceivedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IEigenPodNonBeaconChainETHReceived represents a NonBeaconChainETHReceived event raised by the IEigenPod contract. +type IEigenPodNonBeaconChainETHReceived struct { + AmountReceived *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNonBeaconChainETHReceived is a free log retrieval operation binding the contract event 0x6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf49. +// +// Solidity: event NonBeaconChainETHReceived(uint256 amountReceived) +func (_IEigenPod *IEigenPodFilterer) FilterNonBeaconChainETHReceived(opts *bind.FilterOpts) (*IEigenPodNonBeaconChainETHReceivedIterator, error) { + + logs, sub, err := _IEigenPod.contract.FilterLogs(opts, "NonBeaconChainETHReceived") + if err != nil { + return nil, err + } + return &IEigenPodNonBeaconChainETHReceivedIterator{contract: _IEigenPod.contract, event: "NonBeaconChainETHReceived", logs: logs, sub: sub}, nil +} + +// WatchNonBeaconChainETHReceived is a free log subscription operation binding the contract event 0x6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf49. +// +// Solidity: event NonBeaconChainETHReceived(uint256 amountReceived) +func (_IEigenPod *IEigenPodFilterer) WatchNonBeaconChainETHReceived(opts *bind.WatchOpts, sink chan<- *IEigenPodNonBeaconChainETHReceived) (event.Subscription, error) { + + logs, sub, err := _IEigenPod.contract.WatchLogs(opts, "NonBeaconChainETHReceived") + 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(IEigenPodNonBeaconChainETHReceived) + if err := _IEigenPod.contract.UnpackLog(event, "NonBeaconChainETHReceived", 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 +} + +// ParseNonBeaconChainETHReceived is a log parse operation binding the contract event 0x6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf49. +// +// Solidity: event NonBeaconChainETHReceived(uint256 amountReceived) +func (_IEigenPod *IEigenPodFilterer) ParseNonBeaconChainETHReceived(log types.Log) (*IEigenPodNonBeaconChainETHReceived, error) { + event := new(IEigenPodNonBeaconChainETHReceived) + if err := _IEigenPod.contract.UnpackLog(event, "NonBeaconChainETHReceived", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IEigenPodNonBeaconChainETHWithdrawnIterator is returned from FilterNonBeaconChainETHWithdrawn and is used to iterate over the raw logs and unpacked data for NonBeaconChainETHWithdrawn events raised by the IEigenPod contract. +type IEigenPodNonBeaconChainETHWithdrawnIterator struct { + Event *IEigenPodNonBeaconChainETHWithdrawn // Event containing the contract specifics 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 *IEigenPodNonBeaconChainETHWithdrawnIterator) 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(IEigenPodNonBeaconChainETHWithdrawn) + 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(IEigenPodNonBeaconChainETHWithdrawn) + 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 *IEigenPodNonBeaconChainETHWithdrawnIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IEigenPodNonBeaconChainETHWithdrawnIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IEigenPodNonBeaconChainETHWithdrawn represents a NonBeaconChainETHWithdrawn event raised by the IEigenPod contract. +type IEigenPodNonBeaconChainETHWithdrawn struct { + Recipient common.Address + AmountWithdrawn *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNonBeaconChainETHWithdrawn is a free log retrieval operation binding the contract event 0x30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f53096. +// +// Solidity: event NonBeaconChainETHWithdrawn(address indexed recipient, uint256 amountWithdrawn) +func (_IEigenPod *IEigenPodFilterer) FilterNonBeaconChainETHWithdrawn(opts *bind.FilterOpts, recipient []common.Address) (*IEigenPodNonBeaconChainETHWithdrawnIterator, error) { + + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IEigenPod.contract.FilterLogs(opts, "NonBeaconChainETHWithdrawn", recipientRule) + if err != nil { + return nil, err + } + return &IEigenPodNonBeaconChainETHWithdrawnIterator{contract: _IEigenPod.contract, event: "NonBeaconChainETHWithdrawn", logs: logs, sub: sub}, nil +} + +// WatchNonBeaconChainETHWithdrawn is a free log subscription operation binding the contract event 0x30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f53096. +// +// Solidity: event NonBeaconChainETHWithdrawn(address indexed recipient, uint256 amountWithdrawn) +func (_IEigenPod *IEigenPodFilterer) WatchNonBeaconChainETHWithdrawn(opts *bind.WatchOpts, sink chan<- *IEigenPodNonBeaconChainETHWithdrawn, recipient []common.Address) (event.Subscription, error) { + + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IEigenPod.contract.WatchLogs(opts, "NonBeaconChainETHWithdrawn", recipientRule) + 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(IEigenPodNonBeaconChainETHWithdrawn) + if err := _IEigenPod.contract.UnpackLog(event, "NonBeaconChainETHWithdrawn", 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 +} + +// ParseNonBeaconChainETHWithdrawn is a log parse operation binding the contract event 0x30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f53096. +// +// Solidity: event NonBeaconChainETHWithdrawn(address indexed recipient, uint256 amountWithdrawn) +func (_IEigenPod *IEigenPodFilterer) ParseNonBeaconChainETHWithdrawn(log types.Log) (*IEigenPodNonBeaconChainETHWithdrawn, error) { + event := new(IEigenPodNonBeaconChainETHWithdrawn) + if err := _IEigenPod.contract.UnpackLog(event, "NonBeaconChainETHWithdrawn", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IEigenPodPartialWithdrawalRedeemedIterator is returned from FilterPartialWithdrawalRedeemed and is used to iterate over the raw logs and unpacked data for PartialWithdrawalRedeemed events raised by the IEigenPod contract. +type IEigenPodPartialWithdrawalRedeemedIterator struct { + Event *IEigenPodPartialWithdrawalRedeemed // Event containing the contract specifics 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 *IEigenPodPartialWithdrawalRedeemedIterator) 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(IEigenPodPartialWithdrawalRedeemed) + 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(IEigenPodPartialWithdrawalRedeemed) + 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 *IEigenPodPartialWithdrawalRedeemedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IEigenPodPartialWithdrawalRedeemedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IEigenPodPartialWithdrawalRedeemed represents a PartialWithdrawalRedeemed event raised by the IEigenPod contract. +type IEigenPodPartialWithdrawalRedeemed struct { + ValidatorIndex *big.Int + WithdrawalTimestamp uint64 + Recipient common.Address + PartialWithdrawalAmountGwei uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPartialWithdrawalRedeemed is a free log retrieval operation binding the contract event 0x8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e. +// +// Solidity: event PartialWithdrawalRedeemed(uint40 validatorIndex, uint64 withdrawalTimestamp, address indexed recipient, uint64 partialWithdrawalAmountGwei) +func (_IEigenPod *IEigenPodFilterer) FilterPartialWithdrawalRedeemed(opts *bind.FilterOpts, recipient []common.Address) (*IEigenPodPartialWithdrawalRedeemedIterator, error) { + + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IEigenPod.contract.FilterLogs(opts, "PartialWithdrawalRedeemed", recipientRule) + if err != nil { + return nil, err + } + return &IEigenPodPartialWithdrawalRedeemedIterator{contract: _IEigenPod.contract, event: "PartialWithdrawalRedeemed", logs: logs, sub: sub}, nil +} + +// WatchPartialWithdrawalRedeemed is a free log subscription operation binding the contract event 0x8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e. +// +// Solidity: event PartialWithdrawalRedeemed(uint40 validatorIndex, uint64 withdrawalTimestamp, address indexed recipient, uint64 partialWithdrawalAmountGwei) +func (_IEigenPod *IEigenPodFilterer) WatchPartialWithdrawalRedeemed(opts *bind.WatchOpts, sink chan<- *IEigenPodPartialWithdrawalRedeemed, recipient []common.Address) (event.Subscription, error) { + + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IEigenPod.contract.WatchLogs(opts, "PartialWithdrawalRedeemed", recipientRule) + 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(IEigenPodPartialWithdrawalRedeemed) + if err := _IEigenPod.contract.UnpackLog(event, "PartialWithdrawalRedeemed", 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 +} + +// ParsePartialWithdrawalRedeemed is a log parse operation binding the contract event 0x8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e. +// +// Solidity: event PartialWithdrawalRedeemed(uint40 validatorIndex, uint64 withdrawalTimestamp, address indexed recipient, uint64 partialWithdrawalAmountGwei) +func (_IEigenPod *IEigenPodFilterer) ParsePartialWithdrawalRedeemed(log types.Log) (*IEigenPodPartialWithdrawalRedeemed, error) { + event := new(IEigenPodPartialWithdrawalRedeemed) + if err := _IEigenPod.contract.UnpackLog(event, "PartialWithdrawalRedeemed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IEigenPodRestakedBeaconChainETHWithdrawnIterator is returned from FilterRestakedBeaconChainETHWithdrawn and is used to iterate over the raw logs and unpacked data for RestakedBeaconChainETHWithdrawn events raised by the IEigenPod contract. +type IEigenPodRestakedBeaconChainETHWithdrawnIterator struct { + Event *IEigenPodRestakedBeaconChainETHWithdrawn // Event containing the contract specifics 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 *IEigenPodRestakedBeaconChainETHWithdrawnIterator) 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(IEigenPodRestakedBeaconChainETHWithdrawn) + 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(IEigenPodRestakedBeaconChainETHWithdrawn) + 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 *IEigenPodRestakedBeaconChainETHWithdrawnIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IEigenPodRestakedBeaconChainETHWithdrawnIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IEigenPodRestakedBeaconChainETHWithdrawn represents a RestakedBeaconChainETHWithdrawn event raised by the IEigenPod contract. +type IEigenPodRestakedBeaconChainETHWithdrawn struct { + Recipient common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRestakedBeaconChainETHWithdrawn is a free log retrieval operation binding the contract event 0x8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e. +// +// Solidity: event RestakedBeaconChainETHWithdrawn(address indexed recipient, uint256 amount) +func (_IEigenPod *IEigenPodFilterer) FilterRestakedBeaconChainETHWithdrawn(opts *bind.FilterOpts, recipient []common.Address) (*IEigenPodRestakedBeaconChainETHWithdrawnIterator, error) { + + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IEigenPod.contract.FilterLogs(opts, "RestakedBeaconChainETHWithdrawn", recipientRule) + if err != nil { + return nil, err + } + return &IEigenPodRestakedBeaconChainETHWithdrawnIterator{contract: _IEigenPod.contract, event: "RestakedBeaconChainETHWithdrawn", logs: logs, sub: sub}, nil +} + +// WatchRestakedBeaconChainETHWithdrawn is a free log subscription operation binding the contract event 0x8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e. +// +// Solidity: event RestakedBeaconChainETHWithdrawn(address indexed recipient, uint256 amount) +func (_IEigenPod *IEigenPodFilterer) WatchRestakedBeaconChainETHWithdrawn(opts *bind.WatchOpts, sink chan<- *IEigenPodRestakedBeaconChainETHWithdrawn, recipient []common.Address) (event.Subscription, error) { + + var recipientRule []interface{} + for _, recipientItem := range recipient { + recipientRule = append(recipientRule, recipientItem) + } + + logs, sub, err := _IEigenPod.contract.WatchLogs(opts, "RestakedBeaconChainETHWithdrawn", recipientRule) + 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(IEigenPodRestakedBeaconChainETHWithdrawn) + if err := _IEigenPod.contract.UnpackLog(event, "RestakedBeaconChainETHWithdrawn", 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 +} + +// ParseRestakedBeaconChainETHWithdrawn is a log parse operation binding the contract event 0x8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e. +// +// Solidity: event RestakedBeaconChainETHWithdrawn(address indexed recipient, uint256 amount) +func (_IEigenPod *IEigenPodFilterer) ParseRestakedBeaconChainETHWithdrawn(log types.Log) (*IEigenPodRestakedBeaconChainETHWithdrawn, error) { + event := new(IEigenPodRestakedBeaconChainETHWithdrawn) + if err := _IEigenPod.contract.UnpackLog(event, "RestakedBeaconChainETHWithdrawn", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IEigenPodRestakingActivatedIterator is returned from FilterRestakingActivated and is used to iterate over the raw logs and unpacked data for RestakingActivated events raised by the IEigenPod contract. +type IEigenPodRestakingActivatedIterator struct { + Event *IEigenPodRestakingActivated // Event containing the contract specifics 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 *IEigenPodRestakingActivatedIterator) 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(IEigenPodRestakingActivated) + 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(IEigenPodRestakingActivated) + 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 *IEigenPodRestakingActivatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IEigenPodRestakingActivatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IEigenPodRestakingActivated represents a RestakingActivated event raised by the IEigenPod contract. +type IEigenPodRestakingActivated struct { + PodOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRestakingActivated is a free log retrieval operation binding the contract event 0xca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd. +// +// Solidity: event RestakingActivated(address indexed podOwner) +func (_IEigenPod *IEigenPodFilterer) FilterRestakingActivated(opts *bind.FilterOpts, podOwner []common.Address) (*IEigenPodRestakingActivatedIterator, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _IEigenPod.contract.FilterLogs(opts, "RestakingActivated", podOwnerRule) + if err != nil { + return nil, err + } + return &IEigenPodRestakingActivatedIterator{contract: _IEigenPod.contract, event: "RestakingActivated", logs: logs, sub: sub}, nil +} + +// WatchRestakingActivated is a free log subscription operation binding the contract event 0xca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd. +// +// Solidity: event RestakingActivated(address indexed podOwner) +func (_IEigenPod *IEigenPodFilterer) WatchRestakingActivated(opts *bind.WatchOpts, sink chan<- *IEigenPodRestakingActivated, podOwner []common.Address) (event.Subscription, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _IEigenPod.contract.WatchLogs(opts, "RestakingActivated", podOwnerRule) + 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(IEigenPodRestakingActivated) + if err := _IEigenPod.contract.UnpackLog(event, "RestakingActivated", 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 +} + +// ParseRestakingActivated is a log parse operation binding the contract event 0xca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd. +// +// Solidity: event RestakingActivated(address indexed podOwner) +func (_IEigenPod *IEigenPodFilterer) ParseRestakingActivated(log types.Log) (*IEigenPodRestakingActivated, error) { + event := new(IEigenPodRestakingActivated) + if err := _IEigenPod.contract.UnpackLog(event, "RestakingActivated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IEigenPodValidatorBalanceUpdatedIterator is returned from FilterValidatorBalanceUpdated and is used to iterate over the raw logs and unpacked data for ValidatorBalanceUpdated events raised by the IEigenPod contract. +type IEigenPodValidatorBalanceUpdatedIterator struct { + Event *IEigenPodValidatorBalanceUpdated // Event containing the contract specifics 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 *IEigenPodValidatorBalanceUpdatedIterator) 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(IEigenPodValidatorBalanceUpdated) + 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(IEigenPodValidatorBalanceUpdated) + 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 *IEigenPodValidatorBalanceUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IEigenPodValidatorBalanceUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IEigenPodValidatorBalanceUpdated represents a ValidatorBalanceUpdated event raised by the IEigenPod contract. +type IEigenPodValidatorBalanceUpdated struct { + ValidatorIndex *big.Int + BalanceTimestamp uint64 + NewValidatorBalanceGwei uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorBalanceUpdated is a free log retrieval operation binding the contract event 0x0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df. +// +// Solidity: event ValidatorBalanceUpdated(uint40 validatorIndex, uint64 balanceTimestamp, uint64 newValidatorBalanceGwei) +func (_IEigenPod *IEigenPodFilterer) FilterValidatorBalanceUpdated(opts *bind.FilterOpts) (*IEigenPodValidatorBalanceUpdatedIterator, error) { + + logs, sub, err := _IEigenPod.contract.FilterLogs(opts, "ValidatorBalanceUpdated") + if err != nil { + return nil, err + } + return &IEigenPodValidatorBalanceUpdatedIterator{contract: _IEigenPod.contract, event: "ValidatorBalanceUpdated", logs: logs, sub: sub}, nil +} + +// WatchValidatorBalanceUpdated is a free log subscription operation binding the contract event 0x0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df. +// +// Solidity: event ValidatorBalanceUpdated(uint40 validatorIndex, uint64 balanceTimestamp, uint64 newValidatorBalanceGwei) +func (_IEigenPod *IEigenPodFilterer) WatchValidatorBalanceUpdated(opts *bind.WatchOpts, sink chan<- *IEigenPodValidatorBalanceUpdated) (event.Subscription, error) { + + logs, sub, err := _IEigenPod.contract.WatchLogs(opts, "ValidatorBalanceUpdated") + 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(IEigenPodValidatorBalanceUpdated) + if err := _IEigenPod.contract.UnpackLog(event, "ValidatorBalanceUpdated", 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 +} + +// ParseValidatorBalanceUpdated is a log parse operation binding the contract event 0x0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df. +// +// Solidity: event ValidatorBalanceUpdated(uint40 validatorIndex, uint64 balanceTimestamp, uint64 newValidatorBalanceGwei) +func (_IEigenPod *IEigenPodFilterer) ParseValidatorBalanceUpdated(log types.Log) (*IEigenPodValidatorBalanceUpdated, error) { + event := new(IEigenPodValidatorBalanceUpdated) + if err := _IEigenPod.contract.UnpackLog(event, "ValidatorBalanceUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IEigenPodValidatorRestakedIterator is returned from FilterValidatorRestaked and is used to iterate over the raw logs and unpacked data for ValidatorRestaked events raised by the IEigenPod contract. +type IEigenPodValidatorRestakedIterator struct { + Event *IEigenPodValidatorRestaked // Event containing the contract specifics 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 *IEigenPodValidatorRestakedIterator) 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(IEigenPodValidatorRestaked) + 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(IEigenPodValidatorRestaked) + 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 *IEigenPodValidatorRestakedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IEigenPodValidatorRestakedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IEigenPodValidatorRestaked represents a ValidatorRestaked event raised by the IEigenPod contract. +type IEigenPodValidatorRestaked struct { + ValidatorIndex *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorRestaked is a free log retrieval operation binding the contract event 0x2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449. +// +// Solidity: event ValidatorRestaked(uint40 validatorIndex) +func (_IEigenPod *IEigenPodFilterer) FilterValidatorRestaked(opts *bind.FilterOpts) (*IEigenPodValidatorRestakedIterator, error) { + + logs, sub, err := _IEigenPod.contract.FilterLogs(opts, "ValidatorRestaked") + if err != nil { + return nil, err + } + return &IEigenPodValidatorRestakedIterator{contract: _IEigenPod.contract, event: "ValidatorRestaked", logs: logs, sub: sub}, nil +} + +// WatchValidatorRestaked is a free log subscription operation binding the contract event 0x2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449. +// +// Solidity: event ValidatorRestaked(uint40 validatorIndex) +func (_IEigenPod *IEigenPodFilterer) WatchValidatorRestaked(opts *bind.WatchOpts, sink chan<- *IEigenPodValidatorRestaked) (event.Subscription, error) { + + logs, sub, err := _IEigenPod.contract.WatchLogs(opts, "ValidatorRestaked") + 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(IEigenPodValidatorRestaked) + if err := _IEigenPod.contract.UnpackLog(event, "ValidatorRestaked", 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 +} + +// ParseValidatorRestaked is a log parse operation binding the contract event 0x2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449. +// +// Solidity: event ValidatorRestaked(uint40 validatorIndex) +func (_IEigenPod *IEigenPodFilterer) ParseValidatorRestaked(log types.Log) (*IEigenPodValidatorRestaked, error) { + event := new(IEigenPodValidatorRestaked) + if err := _IEigenPod.contract.UnpackLog(event, "ValidatorRestaked", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/IEigenPod/tmp.abi b/pkg/bindings/IEigenPod/tmp.abi new file mode 100644 index 000000000..dfe621e28 --- /dev/null +++ b/pkg/bindings/IEigenPod/tmp.abi @@ -0,0 +1,725 @@ +[ + { + "type": "function", + "name": "MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "activateRestaking", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "eigenPodManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IEigenPodManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "hasRestaked", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "mostRecentWithdrawalTimestamp", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "nonBeaconChainETHBalanceWei", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "podOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "provenWithdrawal", + "inputs": [ + { + "name": "validatorPubkeyHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "slot", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "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": "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": "validatorPubkeyHashToInfo", + "inputs": [ + { + "name": "validatorPubkeyHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IEigenPod.ValidatorInfo", + "components": [ + { + "name": "validatorIndex", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "restakedBalanceGwei", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "mostRecentBalanceUpdateTimestamp", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "status", + "type": "uint8", + "internalType": "enum IEigenPod.VALIDATOR_STATUS" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "validatorPubkeyToInfo", + "inputs": [ + { + "name": "validatorPubkey", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IEigenPod.ValidatorInfo", + "components": [ + { + "name": "validatorIndex", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "restakedBalanceGwei", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "mostRecentBalanceUpdateTimestamp", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "status", + "type": "uint8", + "internalType": "enum IEigenPod.VALIDATOR_STATUS" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "validatorStatus", + "inputs": [ + { + "name": "validatorPubkey", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "enum IEigenPod.VALIDATOR_STATUS" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "validatorStatus", + "inputs": [ + { + "name": "pubkeyHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "enum IEigenPod.VALIDATOR_STATUS" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "verifyAndProcessWithdrawals", + "inputs": [ + { + "name": "oracleTimestamp", + "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": "withdrawalProofs", + "type": "tuple[]", + "internalType": "struct BeaconChainProofs.WithdrawalProof[]", + "components": [ + { + "name": "withdrawalProof", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "slotProof", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "executionPayloadProof", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "timestampProof", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "historicalSummaryBlockRootProof", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "blockRootIndex", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "historicalSummaryIndex", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "withdrawalIndex", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "blockRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "slotRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "timestampRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "executionPayloadRoot", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "validatorFieldsProofs", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "validatorFields", + "type": "bytes32[][]", + "internalType": "bytes32[][]" + }, + { + "name": "withdrawalFields", + "type": "bytes32[][]", + "internalType": "bytes32[][]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "verifyBalanceUpdates", + "inputs": [ + { + "name": "oracleTimestamp", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "validatorIndices", + "type": "uint40[]", + "internalType": "uint40[]" + }, + { + "name": "stateRootProof", + "type": "tuple", + "internalType": "struct BeaconChainProofs.StateRootProof", + "components": [ + { + "name": "beaconStateRoot", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "proof", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "validatorFieldsProofs", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "validatorFields", + "type": "bytes32[][]", + "internalType": "bytes32[][]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "verifyWithdrawalCredentials", + "inputs": [ + { + "name": "oracleTimestamp", + "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": "withdrawalCredentialProofs", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "validatorFields", + "type": "bytes32[][]", + "internalType": "bytes32[][]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdrawBeforeRestaking", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdrawNonBeaconChainETHBalanceWei", + "inputs": [ + { + "name": "recipient", + "type": "address", + "internalType": "address" + }, + { + "name": "amountToWithdraw", + "type": "uint256", + "internalType": "uint256" + } + ], + "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": "EigenPodStaked", + "inputs": [ + { + "name": "pubkey", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "FullWithdrawalRedeemed", + "inputs": [ + { + "name": "validatorIndex", + "type": "uint40", + "indexed": false, + "internalType": "uint40" + }, + { + "name": "withdrawalTimestamp", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + }, + { + "name": "recipient", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "withdrawalAmountGwei", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "NonBeaconChainETHReceived", + "inputs": [ + { + "name": "amountReceived", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "NonBeaconChainETHWithdrawn", + "inputs": [ + { + "name": "recipient", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amountWithdrawn", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "PartialWithdrawalRedeemed", + "inputs": [ + { + "name": "validatorIndex", + "type": "uint40", + "indexed": false, + "internalType": "uint40" + }, + { + "name": "withdrawalTimestamp", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + }, + { + "name": "recipient", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "partialWithdrawalAmountGwei", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } + ], + "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": "RestakingActivated", + "inputs": [ + { + "name": "podOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "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": "ValidatorRestaked", + "inputs": [ + { + "name": "validatorIndex", + "type": "uint40", + "indexed": false, + "internalType": "uint40" + } + ], + "anonymous": false + } +] diff --git a/pkg/bindings/IEigenPod/tmp.bin b/pkg/bindings/IEigenPod/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/IEigenPod/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/IEigenPodManager/binding.go b/pkg/bindings/IEigenPodManager/binding.go new file mode 100644 index 000000000..e4e8150ef --- /dev/null +++ b/pkg/bindings/IEigenPodManager/binding.go @@ -0,0 +1,2224 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package IEigenPodManager + +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 +) + +// 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\":\"beaconChainOracle\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBeaconChainOracle\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createPod\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"denebForkTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"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\":\"getBlockRootAtTimestamp\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"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\":\"setDenebForkTimestamp\",\"inputs\":[{\"name\":\"newDenebForkTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"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\":\"updateBeaconChainOracle\",\"inputs\":[{\"name\":\"newBeaconChainOracle\",\"type\":\"address\",\"internalType\":\"contractIBeaconChainOracle\"}],\"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\":\"BeaconOracleUpdated\",\"inputs\":[{\"name\":\"newOracleAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DenebForkTimestampUpdated\",\"inputs\":[{\"name\":\"newValue\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"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}]", +} + +// IEigenPodManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use IEigenPodManagerMetaData.ABI instead. +var IEigenPodManagerABI = IEigenPodManagerMetaData.ABI + +// IEigenPodManager is an auto generated Go binding around an Ethereum contract. +type IEigenPodManager struct { + IEigenPodManagerCaller // Read-only binding to the contract + IEigenPodManagerTransactor // Write-only binding to the contract + IEigenPodManagerFilterer // Log filterer for contract events +} + +// IEigenPodManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type IEigenPodManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IEigenPodManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IEigenPodManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IEigenPodManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IEigenPodManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IEigenPodManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IEigenPodManagerSession struct { + Contract *IEigenPodManager // 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 +} + +// IEigenPodManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IEigenPodManagerCallerSession struct { + Contract *IEigenPodManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IEigenPodManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IEigenPodManagerTransactorSession struct { + Contract *IEigenPodManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IEigenPodManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type IEigenPodManagerRaw struct { + Contract *IEigenPodManager // Generic contract binding to access the raw methods on +} + +// IEigenPodManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IEigenPodManagerCallerRaw struct { + Contract *IEigenPodManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// IEigenPodManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IEigenPodManagerTransactorRaw struct { + Contract *IEigenPodManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIEigenPodManager creates a new instance of IEigenPodManager, bound to a specific deployed contract. +func NewIEigenPodManager(address common.Address, backend bind.ContractBackend) (*IEigenPodManager, error) { + contract, err := bindIEigenPodManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IEigenPodManager{IEigenPodManagerCaller: IEigenPodManagerCaller{contract: contract}, IEigenPodManagerTransactor: IEigenPodManagerTransactor{contract: contract}, IEigenPodManagerFilterer: IEigenPodManagerFilterer{contract: contract}}, nil +} + +// NewIEigenPodManagerCaller creates a new read-only instance of IEigenPodManager, bound to a specific deployed contract. +func NewIEigenPodManagerCaller(address common.Address, caller bind.ContractCaller) (*IEigenPodManagerCaller, error) { + contract, err := bindIEigenPodManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IEigenPodManagerCaller{contract: contract}, nil +} + +// NewIEigenPodManagerTransactor creates a new write-only instance of IEigenPodManager, bound to a specific deployed contract. +func NewIEigenPodManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IEigenPodManagerTransactor, error) { + contract, err := bindIEigenPodManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IEigenPodManagerTransactor{contract: contract}, nil +} + +// NewIEigenPodManagerFilterer creates a new log filterer instance of IEigenPodManager, bound to a specific deployed contract. +func NewIEigenPodManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IEigenPodManagerFilterer, error) { + contract, err := bindIEigenPodManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IEigenPodManagerFilterer{contract: contract}, nil +} + +// bindIEigenPodManager binds a generic wrapper to an already deployed contract. +func bindIEigenPodManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IEigenPodManagerMetaData.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 (_IEigenPodManager *IEigenPodManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IEigenPodManager.Contract.IEigenPodManagerCaller.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 (_IEigenPodManager *IEigenPodManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IEigenPodManager.Contract.IEigenPodManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IEigenPodManager *IEigenPodManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IEigenPodManager.Contract.IEigenPodManagerTransactor.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 (_IEigenPodManager *IEigenPodManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IEigenPodManager.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 (_IEigenPodManager *IEigenPodManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IEigenPodManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IEigenPodManager *IEigenPodManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IEigenPodManager.Contract.contract.Transact(opts, method, params...) +} + +// BeaconChainETHStrategy is a free data retrieval call binding the contract method 0x9104c319. +// +// Solidity: function beaconChainETHStrategy() view returns(address) +func (_IEigenPodManager *IEigenPodManagerCaller) BeaconChainETHStrategy(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IEigenPodManager.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 (_IEigenPodManager *IEigenPodManagerSession) BeaconChainETHStrategy() (common.Address, error) { + return _IEigenPodManager.Contract.BeaconChainETHStrategy(&_IEigenPodManager.CallOpts) +} + +// BeaconChainETHStrategy is a free data retrieval call binding the contract method 0x9104c319. +// +// Solidity: function beaconChainETHStrategy() view returns(address) +func (_IEigenPodManager *IEigenPodManagerCallerSession) BeaconChainETHStrategy() (common.Address, error) { + return _IEigenPodManager.Contract.BeaconChainETHStrategy(&_IEigenPodManager.CallOpts) +} + +// BeaconChainOracle is a free data retrieval call binding the contract method 0xc052bd61. +// +// Solidity: function beaconChainOracle() view returns(address) +func (_IEigenPodManager *IEigenPodManagerCaller) BeaconChainOracle(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IEigenPodManager.contract.Call(opts, &out, "beaconChainOracle") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// BeaconChainOracle is a free data retrieval call binding the contract method 0xc052bd61. +// +// Solidity: function beaconChainOracle() view returns(address) +func (_IEigenPodManager *IEigenPodManagerSession) BeaconChainOracle() (common.Address, error) { + return _IEigenPodManager.Contract.BeaconChainOracle(&_IEigenPodManager.CallOpts) +} + +// BeaconChainOracle is a free data retrieval call binding the contract method 0xc052bd61. +// +// Solidity: function beaconChainOracle() view returns(address) +func (_IEigenPodManager *IEigenPodManagerCallerSession) BeaconChainOracle() (common.Address, error) { + return _IEigenPodManager.Contract.BeaconChainOracle(&_IEigenPodManager.CallOpts) +} + +// DenebForkTimestamp is a free data retrieval call binding the contract method 0x44e71c80. +// +// Solidity: function denebForkTimestamp() view returns(uint64) +func (_IEigenPodManager *IEigenPodManagerCaller) DenebForkTimestamp(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _IEigenPodManager.contract.Call(opts, &out, "denebForkTimestamp") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// DenebForkTimestamp is a free data retrieval call binding the contract method 0x44e71c80. +// +// Solidity: function denebForkTimestamp() view returns(uint64) +func (_IEigenPodManager *IEigenPodManagerSession) DenebForkTimestamp() (uint64, error) { + return _IEigenPodManager.Contract.DenebForkTimestamp(&_IEigenPodManager.CallOpts) +} + +// DenebForkTimestamp is a free data retrieval call binding the contract method 0x44e71c80. +// +// Solidity: function denebForkTimestamp() view returns(uint64) +func (_IEigenPodManager *IEigenPodManagerCallerSession) DenebForkTimestamp() (uint64, error) { + return _IEigenPodManager.Contract.DenebForkTimestamp(&_IEigenPodManager.CallOpts) +} + +// EigenPodBeacon is a free data retrieval call binding the contract method 0x292b7b2b. +// +// Solidity: function eigenPodBeacon() view returns(address) +func (_IEigenPodManager *IEigenPodManagerCaller) EigenPodBeacon(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IEigenPodManager.contract.Call(opts, &out, "eigenPodBeacon") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EigenPodBeacon is a free data retrieval call binding the contract method 0x292b7b2b. +// +// Solidity: function eigenPodBeacon() view returns(address) +func (_IEigenPodManager *IEigenPodManagerSession) EigenPodBeacon() (common.Address, error) { + return _IEigenPodManager.Contract.EigenPodBeacon(&_IEigenPodManager.CallOpts) +} + +// EigenPodBeacon is a free data retrieval call binding the contract method 0x292b7b2b. +// +// Solidity: function eigenPodBeacon() view returns(address) +func (_IEigenPodManager *IEigenPodManagerCallerSession) EigenPodBeacon() (common.Address, error) { + return _IEigenPodManager.Contract.EigenPodBeacon(&_IEigenPodManager.CallOpts) +} + +// EthPOS is a free data retrieval call binding the contract method 0x74cdd798. +// +// Solidity: function ethPOS() view returns(address) +func (_IEigenPodManager *IEigenPodManagerCaller) EthPOS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IEigenPodManager.contract.Call(opts, &out, "ethPOS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EthPOS is a free data retrieval call binding the contract method 0x74cdd798. +// +// Solidity: function ethPOS() view returns(address) +func (_IEigenPodManager *IEigenPodManagerSession) EthPOS() (common.Address, error) { + return _IEigenPodManager.Contract.EthPOS(&_IEigenPodManager.CallOpts) +} + +// EthPOS is a free data retrieval call binding the contract method 0x74cdd798. +// +// Solidity: function ethPOS() view returns(address) +func (_IEigenPodManager *IEigenPodManagerCallerSession) EthPOS() (common.Address, error) { + return _IEigenPodManager.Contract.EthPOS(&_IEigenPodManager.CallOpts) +} + +// GetBlockRootAtTimestamp is a free data retrieval call binding the contract method 0xd1c64cc9. +// +// Solidity: function getBlockRootAtTimestamp(uint64 timestamp) view returns(bytes32) +func (_IEigenPodManager *IEigenPodManagerCaller) GetBlockRootAtTimestamp(opts *bind.CallOpts, timestamp uint64) ([32]byte, error) { + var out []interface{} + err := _IEigenPodManager.contract.Call(opts, &out, "getBlockRootAtTimestamp", timestamp) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetBlockRootAtTimestamp is a free data retrieval call binding the contract method 0xd1c64cc9. +// +// Solidity: function getBlockRootAtTimestamp(uint64 timestamp) view returns(bytes32) +func (_IEigenPodManager *IEigenPodManagerSession) GetBlockRootAtTimestamp(timestamp uint64) ([32]byte, error) { + return _IEigenPodManager.Contract.GetBlockRootAtTimestamp(&_IEigenPodManager.CallOpts, timestamp) +} + +// GetBlockRootAtTimestamp is a free data retrieval call binding the contract method 0xd1c64cc9. +// +// Solidity: function getBlockRootAtTimestamp(uint64 timestamp) view returns(bytes32) +func (_IEigenPodManager *IEigenPodManagerCallerSession) GetBlockRootAtTimestamp(timestamp uint64) ([32]byte, error) { + return _IEigenPodManager.Contract.GetBlockRootAtTimestamp(&_IEigenPodManager.CallOpts, timestamp) +} + +// GetPod is a free data retrieval call binding the contract method 0xa38406a3. +// +// Solidity: function getPod(address podOwner) view returns(address) +func (_IEigenPodManager *IEigenPodManagerCaller) GetPod(opts *bind.CallOpts, podOwner common.Address) (common.Address, error) { + var out []interface{} + err := _IEigenPodManager.contract.Call(opts, &out, "getPod", podOwner) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetPod is a free data retrieval call binding the contract method 0xa38406a3. +// +// Solidity: function getPod(address podOwner) view returns(address) +func (_IEigenPodManager *IEigenPodManagerSession) GetPod(podOwner common.Address) (common.Address, error) { + return _IEigenPodManager.Contract.GetPod(&_IEigenPodManager.CallOpts, podOwner) +} + +// GetPod is a free data retrieval call binding the contract method 0xa38406a3. +// +// Solidity: function getPod(address podOwner) view returns(address) +func (_IEigenPodManager *IEigenPodManagerCallerSession) GetPod(podOwner common.Address) (common.Address, error) { + return _IEigenPodManager.Contract.GetPod(&_IEigenPodManager.CallOpts, podOwner) +} + +// HasPod is a free data retrieval call binding the contract method 0xf6848d24. +// +// Solidity: function hasPod(address podOwner) view returns(bool) +func (_IEigenPodManager *IEigenPodManagerCaller) HasPod(opts *bind.CallOpts, podOwner common.Address) (bool, error) { + var out []interface{} + err := _IEigenPodManager.contract.Call(opts, &out, "hasPod", podOwner) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasPod is a free data retrieval call binding the contract method 0xf6848d24. +// +// Solidity: function hasPod(address podOwner) view returns(bool) +func (_IEigenPodManager *IEigenPodManagerSession) HasPod(podOwner common.Address) (bool, error) { + return _IEigenPodManager.Contract.HasPod(&_IEigenPodManager.CallOpts, podOwner) +} + +// HasPod is a free data retrieval call binding the contract method 0xf6848d24. +// +// Solidity: function hasPod(address podOwner) view returns(bool) +func (_IEigenPodManager *IEigenPodManagerCallerSession) HasPod(podOwner common.Address) (bool, error) { + return _IEigenPodManager.Contract.HasPod(&_IEigenPodManager.CallOpts, podOwner) +} + +// NumPods is a free data retrieval call binding the contract method 0xa6a509be. +// +// Solidity: function numPods() view returns(uint256) +func (_IEigenPodManager *IEigenPodManagerCaller) NumPods(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IEigenPodManager.contract.Call(opts, &out, "numPods") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// NumPods is a free data retrieval call binding the contract method 0xa6a509be. +// +// Solidity: function numPods() view returns(uint256) +func (_IEigenPodManager *IEigenPodManagerSession) NumPods() (*big.Int, error) { + return _IEigenPodManager.Contract.NumPods(&_IEigenPodManager.CallOpts) +} + +// NumPods is a free data retrieval call binding the contract method 0xa6a509be. +// +// Solidity: function numPods() view returns(uint256) +func (_IEigenPodManager *IEigenPodManagerCallerSession) NumPods() (*big.Int, error) { + return _IEigenPodManager.Contract.NumPods(&_IEigenPodManager.CallOpts) +} + +// OwnerToPod is a free data retrieval call binding the contract method 0x9ba06275. +// +// Solidity: function ownerToPod(address podOwner) view returns(address) +func (_IEigenPodManager *IEigenPodManagerCaller) OwnerToPod(opts *bind.CallOpts, podOwner common.Address) (common.Address, error) { + var out []interface{} + err := _IEigenPodManager.contract.Call(opts, &out, "ownerToPod", podOwner) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OwnerToPod is a free data retrieval call binding the contract method 0x9ba06275. +// +// Solidity: function ownerToPod(address podOwner) view returns(address) +func (_IEigenPodManager *IEigenPodManagerSession) OwnerToPod(podOwner common.Address) (common.Address, error) { + return _IEigenPodManager.Contract.OwnerToPod(&_IEigenPodManager.CallOpts, podOwner) +} + +// OwnerToPod is a free data retrieval call binding the contract method 0x9ba06275. +// +// Solidity: function ownerToPod(address podOwner) view returns(address) +func (_IEigenPodManager *IEigenPodManagerCallerSession) OwnerToPod(podOwner common.Address) (common.Address, error) { + return _IEigenPodManager.Contract.OwnerToPod(&_IEigenPodManager.CallOpts, podOwner) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_IEigenPodManager *IEigenPodManagerCaller) Paused(opts *bind.CallOpts, index uint8) (bool, error) { + var out []interface{} + err := _IEigenPodManager.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 (_IEigenPodManager *IEigenPodManagerSession) Paused(index uint8) (bool, error) { + return _IEigenPodManager.Contract.Paused(&_IEigenPodManager.CallOpts, index) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_IEigenPodManager *IEigenPodManagerCallerSession) Paused(index uint8) (bool, error) { + return _IEigenPodManager.Contract.Paused(&_IEigenPodManager.CallOpts, index) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_IEigenPodManager *IEigenPodManagerCaller) Paused0(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IEigenPodManager.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 (_IEigenPodManager *IEigenPodManagerSession) Paused0() (*big.Int, error) { + return _IEigenPodManager.Contract.Paused0(&_IEigenPodManager.CallOpts) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_IEigenPodManager *IEigenPodManagerCallerSession) Paused0() (*big.Int, error) { + return _IEigenPodManager.Contract.Paused0(&_IEigenPodManager.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_IEigenPodManager *IEigenPodManagerCaller) PauserRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IEigenPodManager.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 (_IEigenPodManager *IEigenPodManagerSession) PauserRegistry() (common.Address, error) { + return _IEigenPodManager.Contract.PauserRegistry(&_IEigenPodManager.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_IEigenPodManager *IEigenPodManagerCallerSession) PauserRegistry() (common.Address, error) { + return _IEigenPodManager.Contract.PauserRegistry(&_IEigenPodManager.CallOpts) +} + +// PodOwnerShares is a free data retrieval call binding the contract method 0x60f4062b. +// +// Solidity: function podOwnerShares(address podOwner) view returns(int256) +func (_IEigenPodManager *IEigenPodManagerCaller) PodOwnerShares(opts *bind.CallOpts, podOwner common.Address) (*big.Int, error) { + var out []interface{} + err := _IEigenPodManager.contract.Call(opts, &out, "podOwnerShares", podOwner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// PodOwnerShares is a free data retrieval call binding the contract method 0x60f4062b. +// +// 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) +} + +// PodOwnerShares is a free data retrieval call binding the contract method 0x60f4062b. +// +// 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) +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_IEigenPodManager *IEigenPodManagerCaller) Slasher(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IEigenPodManager.contract.Call(opts, &out, "slasher") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_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 + } + + 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 (_IEigenPodManager *IEigenPodManagerSession) StrategyManager() (common.Address, error) { + return _IEigenPodManager.Contract.StrategyManager(&_IEigenPodManager.CallOpts) +} + +// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. +// +// Solidity: function strategyManager() view returns(address) +func (_IEigenPodManager *IEigenPodManagerCallerSession) StrategyManager() (common.Address, error) { + return _IEigenPodManager.Contract.StrategyManager(&_IEigenPodManager.CallOpts) +} + +// AddShares is a paid mutator transaction binding the contract method 0x0e81073c. +// +// 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) +} + +// AddShares is a paid mutator transaction binding the contract method 0x0e81073c. +// +// 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) +} + +// AddShares is a paid mutator transaction binding the contract method 0x0e81073c. +// +// 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) +} + +// CreatePod is a paid mutator transaction binding the contract method 0x84d81062. +// +// Solidity: function createPod() returns(address) +func (_IEigenPodManager *IEigenPodManagerTransactor) CreatePod(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IEigenPodManager.contract.Transact(opts, "createPod") +} + +// CreatePod is a paid mutator transaction binding the contract method 0x84d81062. +// +// Solidity: function createPod() returns(address) +func (_IEigenPodManager *IEigenPodManagerSession) CreatePod() (*types.Transaction, error) { + return _IEigenPodManager.Contract.CreatePod(&_IEigenPodManager.TransactOpts) +} + +// CreatePod is a paid mutator transaction binding the contract method 0x84d81062. +// +// Solidity: function createPod() returns(address) +func (_IEigenPodManager *IEigenPodManagerTransactorSession) CreatePod() (*types.Transaction, error) { + return _IEigenPodManager.Contract.CreatePod(&_IEigenPodManager.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_IEigenPodManager *IEigenPodManagerTransactor) Pause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _IEigenPodManager.contract.Transact(opts, "pause", newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_IEigenPodManager *IEigenPodManagerSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _IEigenPodManager.Contract.Pause(&_IEigenPodManager.TransactOpts, newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_IEigenPodManager *IEigenPodManagerTransactorSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _IEigenPodManager.Contract.Pause(&_IEigenPodManager.TransactOpts, newPausedStatus) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_IEigenPodManager *IEigenPodManagerTransactor) PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IEigenPodManager.contract.Transact(opts, "pauseAll") +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_IEigenPodManager *IEigenPodManagerSession) PauseAll() (*types.Transaction, error) { + return _IEigenPodManager.Contract.PauseAll(&_IEigenPodManager.TransactOpts) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_IEigenPodManager *IEigenPodManagerTransactorSession) PauseAll() (*types.Transaction, error) { + 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. +// +// 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) +} + +// RecordBeaconChainETHBalanceUpdate is a paid mutator transaction binding the contract method 0xc2c51c40. +// +// 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) +} + +// RemoveShares is a paid mutator transaction binding the contract method 0xbeffbb89. +// +// 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) +} + +// RemoveShares is a paid mutator transaction binding the contract method 0xbeffbb89. +// +// 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) +} + +// RemoveShares is a paid mutator transaction binding the contract method 0xbeffbb89. +// +// 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) +} + +// SetDenebForkTimestamp is a paid mutator transaction binding the contract method 0x463db038. +// +// Solidity: function setDenebForkTimestamp(uint64 newDenebForkTimestamp) returns() +func (_IEigenPodManager *IEigenPodManagerTransactor) SetDenebForkTimestamp(opts *bind.TransactOpts, newDenebForkTimestamp uint64) (*types.Transaction, error) { + return _IEigenPodManager.contract.Transact(opts, "setDenebForkTimestamp", newDenebForkTimestamp) +} + +// SetDenebForkTimestamp is a paid mutator transaction binding the contract method 0x463db038. +// +// Solidity: function setDenebForkTimestamp(uint64 newDenebForkTimestamp) returns() +func (_IEigenPodManager *IEigenPodManagerSession) SetDenebForkTimestamp(newDenebForkTimestamp uint64) (*types.Transaction, error) { + return _IEigenPodManager.Contract.SetDenebForkTimestamp(&_IEigenPodManager.TransactOpts, newDenebForkTimestamp) +} + +// SetDenebForkTimestamp is a paid mutator transaction binding the contract method 0x463db038. +// +// Solidity: function setDenebForkTimestamp(uint64 newDenebForkTimestamp) returns() +func (_IEigenPodManager *IEigenPodManagerTransactorSession) SetDenebForkTimestamp(newDenebForkTimestamp uint64) (*types.Transaction, error) { + return _IEigenPodManager.Contract.SetDenebForkTimestamp(&_IEigenPodManager.TransactOpts, newDenebForkTimestamp) +} + +// SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f. +// +// 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) +} + +// Stake is a paid mutator transaction binding the contract method 0x9b4e4634. +// +// Solidity: function stake(bytes pubkey, bytes signature, bytes32 depositDataRoot) payable returns() +func (_IEigenPodManager *IEigenPodManagerTransactor) Stake(opts *bind.TransactOpts, pubkey []byte, signature []byte, depositDataRoot [32]byte) (*types.Transaction, error) { + return _IEigenPodManager.contract.Transact(opts, "stake", pubkey, signature, depositDataRoot) +} + +// Stake is a paid mutator transaction binding the contract method 0x9b4e4634. +// +// Solidity: function stake(bytes pubkey, bytes signature, bytes32 depositDataRoot) payable returns() +func (_IEigenPodManager *IEigenPodManagerSession) Stake(pubkey []byte, signature []byte, depositDataRoot [32]byte) (*types.Transaction, error) { + return _IEigenPodManager.Contract.Stake(&_IEigenPodManager.TransactOpts, pubkey, signature, depositDataRoot) +} + +// Stake is a paid mutator transaction binding the contract method 0x9b4e4634. +// +// Solidity: function stake(bytes pubkey, bytes signature, bytes32 depositDataRoot) payable returns() +func (_IEigenPodManager *IEigenPodManagerTransactorSession) Stake(pubkey []byte, signature []byte, depositDataRoot [32]byte) (*types.Transaction, error) { + return _IEigenPodManager.Contract.Stake(&_IEigenPodManager.TransactOpts, pubkey, signature, depositDataRoot) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_IEigenPodManager *IEigenPodManagerTransactor) Unpause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _IEigenPodManager.contract.Transact(opts, "unpause", newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_IEigenPodManager *IEigenPodManagerSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _IEigenPodManager.Contract.Unpause(&_IEigenPodManager.TransactOpts, newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_IEigenPodManager *IEigenPodManagerTransactorSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _IEigenPodManager.Contract.Unpause(&_IEigenPodManager.TransactOpts, newPausedStatus) +} + +// UpdateBeaconChainOracle is a paid mutator transaction binding the contract method 0xc1de3aef. +// +// Solidity: function updateBeaconChainOracle(address newBeaconChainOracle) returns() +func (_IEigenPodManager *IEigenPodManagerTransactor) UpdateBeaconChainOracle(opts *bind.TransactOpts, newBeaconChainOracle common.Address) (*types.Transaction, error) { + return _IEigenPodManager.contract.Transact(opts, "updateBeaconChainOracle", newBeaconChainOracle) +} + +// UpdateBeaconChainOracle is a paid mutator transaction binding the contract method 0xc1de3aef. +// +// Solidity: function updateBeaconChainOracle(address newBeaconChainOracle) returns() +func (_IEigenPodManager *IEigenPodManagerSession) UpdateBeaconChainOracle(newBeaconChainOracle common.Address) (*types.Transaction, error) { + return _IEigenPodManager.Contract.UpdateBeaconChainOracle(&_IEigenPodManager.TransactOpts, newBeaconChainOracle) +} + +// UpdateBeaconChainOracle is a paid mutator transaction binding the contract method 0xc1de3aef. +// +// Solidity: function updateBeaconChainOracle(address newBeaconChainOracle) returns() +func (_IEigenPodManager *IEigenPodManagerTransactorSession) UpdateBeaconChainOracle(newBeaconChainOracle common.Address) (*types.Transaction, error) { + return _IEigenPodManager.Contract.UpdateBeaconChainOracle(&_IEigenPodManager.TransactOpts, newBeaconChainOracle) +} + +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x387b1300. +// +// 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) +} + +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x387b1300. +// +// 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) +} + +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0x387b1300. +// +// 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) +} + +// 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. +type IEigenPodManagerBeaconChainETHDepositedIterator struct { + Event *IEigenPodManagerBeaconChainETHDeposited // Event containing the contract specifics 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 *IEigenPodManagerBeaconChainETHDepositedIterator) 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(IEigenPodManagerBeaconChainETHDeposited) + 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(IEigenPodManagerBeaconChainETHDeposited) + 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 *IEigenPodManagerBeaconChainETHDepositedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IEigenPodManagerBeaconChainETHDepositedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IEigenPodManagerBeaconChainETHDeposited represents a BeaconChainETHDeposited event raised by the IEigenPodManager contract. +type IEigenPodManagerBeaconChainETHDeposited struct { + PodOwner common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconChainETHDeposited is a free log retrieval operation binding the contract event 0x35a85cabc603f48abb2b71d9fbd8adea7c449d7f0be900ae7a2986ea369c3d0d. +// +// Solidity: event BeaconChainETHDeposited(address indexed podOwner, uint256 amount) +func (_IEigenPodManager *IEigenPodManagerFilterer) FilterBeaconChainETHDeposited(opts *bind.FilterOpts, podOwner []common.Address) (*IEigenPodManagerBeaconChainETHDepositedIterator, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _IEigenPodManager.contract.FilterLogs(opts, "BeaconChainETHDeposited", podOwnerRule) + if err != nil { + return nil, err + } + return &IEigenPodManagerBeaconChainETHDepositedIterator{contract: _IEigenPodManager.contract, event: "BeaconChainETHDeposited", logs: logs, sub: sub}, nil +} + +// WatchBeaconChainETHDeposited is a free log subscription operation binding the contract event 0x35a85cabc603f48abb2b71d9fbd8adea7c449d7f0be900ae7a2986ea369c3d0d. +// +// Solidity: event BeaconChainETHDeposited(address indexed podOwner, uint256 amount) +func (_IEigenPodManager *IEigenPodManagerFilterer) WatchBeaconChainETHDeposited(opts *bind.WatchOpts, sink chan<- *IEigenPodManagerBeaconChainETHDeposited, podOwner []common.Address) (event.Subscription, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _IEigenPodManager.contract.WatchLogs(opts, "BeaconChainETHDeposited", podOwnerRule) + 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(IEigenPodManagerBeaconChainETHDeposited) + if err := _IEigenPodManager.contract.UnpackLog(event, "BeaconChainETHDeposited", 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 +} + +// ParseBeaconChainETHDeposited is a log parse operation binding the contract event 0x35a85cabc603f48abb2b71d9fbd8adea7c449d7f0be900ae7a2986ea369c3d0d. +// +// Solidity: event BeaconChainETHDeposited(address indexed podOwner, uint256 amount) +func (_IEigenPodManager *IEigenPodManagerFilterer) ParseBeaconChainETHDeposited(log types.Log) (*IEigenPodManagerBeaconChainETHDeposited, error) { + event := new(IEigenPodManagerBeaconChainETHDeposited) + if err := _IEigenPodManager.contract.UnpackLog(event, "BeaconChainETHDeposited", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IEigenPodManagerBeaconChainETHWithdrawalCompletedIterator is returned from FilterBeaconChainETHWithdrawalCompleted and is used to iterate over the raw logs and unpacked data for BeaconChainETHWithdrawalCompleted events raised by the IEigenPodManager contract. +type IEigenPodManagerBeaconChainETHWithdrawalCompletedIterator struct { + Event *IEigenPodManagerBeaconChainETHWithdrawalCompleted // Event containing the contract specifics 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 *IEigenPodManagerBeaconChainETHWithdrawalCompletedIterator) 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(IEigenPodManagerBeaconChainETHWithdrawalCompleted) + 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(IEigenPodManagerBeaconChainETHWithdrawalCompleted) + 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 *IEigenPodManagerBeaconChainETHWithdrawalCompletedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IEigenPodManagerBeaconChainETHWithdrawalCompletedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IEigenPodManagerBeaconChainETHWithdrawalCompleted represents a BeaconChainETHWithdrawalCompleted event raised by the IEigenPodManager contract. +type IEigenPodManagerBeaconChainETHWithdrawalCompleted struct { + PodOwner common.Address + Shares *big.Int + Nonce *big.Int + DelegatedAddress common.Address + Withdrawer common.Address + WithdrawalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconChainETHWithdrawalCompleted is a free log retrieval operation binding the contract event 0xa6bab1d55a361fcea2eee2bc9491e4f01e6cf333df03c9c4f2c144466429f7d6. +// +// Solidity: event BeaconChainETHWithdrawalCompleted(address indexed podOwner, uint256 shares, uint96 nonce, address delegatedAddress, address withdrawer, bytes32 withdrawalRoot) +func (_IEigenPodManager *IEigenPodManagerFilterer) FilterBeaconChainETHWithdrawalCompleted(opts *bind.FilterOpts, podOwner []common.Address) (*IEigenPodManagerBeaconChainETHWithdrawalCompletedIterator, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _IEigenPodManager.contract.FilterLogs(opts, "BeaconChainETHWithdrawalCompleted", podOwnerRule) + if err != nil { + return nil, err + } + return &IEigenPodManagerBeaconChainETHWithdrawalCompletedIterator{contract: _IEigenPodManager.contract, event: "BeaconChainETHWithdrawalCompleted", logs: logs, sub: sub}, nil +} + +// WatchBeaconChainETHWithdrawalCompleted is a free log subscription operation binding the contract event 0xa6bab1d55a361fcea2eee2bc9491e4f01e6cf333df03c9c4f2c144466429f7d6. +// +// Solidity: event BeaconChainETHWithdrawalCompleted(address indexed podOwner, uint256 shares, uint96 nonce, address delegatedAddress, address withdrawer, bytes32 withdrawalRoot) +func (_IEigenPodManager *IEigenPodManagerFilterer) WatchBeaconChainETHWithdrawalCompleted(opts *bind.WatchOpts, sink chan<- *IEigenPodManagerBeaconChainETHWithdrawalCompleted, podOwner []common.Address) (event.Subscription, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _IEigenPodManager.contract.WatchLogs(opts, "BeaconChainETHWithdrawalCompleted", podOwnerRule) + 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(IEigenPodManagerBeaconChainETHWithdrawalCompleted) + if err := _IEigenPodManager.contract.UnpackLog(event, "BeaconChainETHWithdrawalCompleted", 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 +} + +// ParseBeaconChainETHWithdrawalCompleted is a log parse operation binding the contract event 0xa6bab1d55a361fcea2eee2bc9491e4f01e6cf333df03c9c4f2c144466429f7d6. +// +// Solidity: event BeaconChainETHWithdrawalCompleted(address indexed podOwner, uint256 shares, uint96 nonce, address delegatedAddress, address withdrawer, bytes32 withdrawalRoot) +func (_IEigenPodManager *IEigenPodManagerFilterer) ParseBeaconChainETHWithdrawalCompleted(log types.Log) (*IEigenPodManagerBeaconChainETHWithdrawalCompleted, error) { + event := new(IEigenPodManagerBeaconChainETHWithdrawalCompleted) + if err := _IEigenPodManager.contract.UnpackLog(event, "BeaconChainETHWithdrawalCompleted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IEigenPodManagerBeaconOracleUpdatedIterator is returned from FilterBeaconOracleUpdated and is used to iterate over the raw logs and unpacked data for BeaconOracleUpdated events raised by the IEigenPodManager contract. +type IEigenPodManagerBeaconOracleUpdatedIterator struct { + Event *IEigenPodManagerBeaconOracleUpdated // Event containing the contract specifics 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 *IEigenPodManagerBeaconOracleUpdatedIterator) 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(IEigenPodManagerBeaconOracleUpdated) + 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(IEigenPodManagerBeaconOracleUpdated) + 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 *IEigenPodManagerBeaconOracleUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IEigenPodManagerBeaconOracleUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IEigenPodManagerBeaconOracleUpdated represents a BeaconOracleUpdated event raised by the IEigenPodManager contract. +type IEigenPodManagerBeaconOracleUpdated struct { + NewOracleAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBeaconOracleUpdated is a free log retrieval operation binding the contract event 0x08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f6. +// +// Solidity: event BeaconOracleUpdated(address indexed newOracleAddress) +func (_IEigenPodManager *IEigenPodManagerFilterer) FilterBeaconOracleUpdated(opts *bind.FilterOpts, newOracleAddress []common.Address) (*IEigenPodManagerBeaconOracleUpdatedIterator, error) { + + var newOracleAddressRule []interface{} + for _, newOracleAddressItem := range newOracleAddress { + newOracleAddressRule = append(newOracleAddressRule, newOracleAddressItem) + } + + logs, sub, err := _IEigenPodManager.contract.FilterLogs(opts, "BeaconOracleUpdated", newOracleAddressRule) + if err != nil { + return nil, err + } + return &IEigenPodManagerBeaconOracleUpdatedIterator{contract: _IEigenPodManager.contract, event: "BeaconOracleUpdated", logs: logs, sub: sub}, nil +} + +// WatchBeaconOracleUpdated is a free log subscription operation binding the contract event 0x08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f6. +// +// Solidity: event BeaconOracleUpdated(address indexed newOracleAddress) +func (_IEigenPodManager *IEigenPodManagerFilterer) WatchBeaconOracleUpdated(opts *bind.WatchOpts, sink chan<- *IEigenPodManagerBeaconOracleUpdated, newOracleAddress []common.Address) (event.Subscription, error) { + + var newOracleAddressRule []interface{} + for _, newOracleAddressItem := range newOracleAddress { + newOracleAddressRule = append(newOracleAddressRule, newOracleAddressItem) + } + + logs, sub, err := _IEigenPodManager.contract.WatchLogs(opts, "BeaconOracleUpdated", newOracleAddressRule) + 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(IEigenPodManagerBeaconOracleUpdated) + if err := _IEigenPodManager.contract.UnpackLog(event, "BeaconOracleUpdated", 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 +} + +// ParseBeaconOracleUpdated is a log parse operation binding the contract event 0x08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f6. +// +// Solidity: event BeaconOracleUpdated(address indexed newOracleAddress) +func (_IEigenPodManager *IEigenPodManagerFilterer) ParseBeaconOracleUpdated(log types.Log) (*IEigenPodManagerBeaconOracleUpdated, error) { + event := new(IEigenPodManagerBeaconOracleUpdated) + if err := _IEigenPodManager.contract.UnpackLog(event, "BeaconOracleUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IEigenPodManagerDenebForkTimestampUpdatedIterator is returned from FilterDenebForkTimestampUpdated and is used to iterate over the raw logs and unpacked data for DenebForkTimestampUpdated events raised by the IEigenPodManager contract. +type IEigenPodManagerDenebForkTimestampUpdatedIterator struct { + Event *IEigenPodManagerDenebForkTimestampUpdated // Event containing the contract specifics 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 *IEigenPodManagerDenebForkTimestampUpdatedIterator) 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(IEigenPodManagerDenebForkTimestampUpdated) + 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(IEigenPodManagerDenebForkTimestampUpdated) + 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 *IEigenPodManagerDenebForkTimestampUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IEigenPodManagerDenebForkTimestampUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IEigenPodManagerDenebForkTimestampUpdated represents a DenebForkTimestampUpdated event raised by the IEigenPodManager contract. +type IEigenPodManagerDenebForkTimestampUpdated struct { + NewValue uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDenebForkTimestampUpdated is a free log retrieval operation binding the contract event 0x19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db. +// +// Solidity: event DenebForkTimestampUpdated(uint64 newValue) +func (_IEigenPodManager *IEigenPodManagerFilterer) FilterDenebForkTimestampUpdated(opts *bind.FilterOpts) (*IEigenPodManagerDenebForkTimestampUpdatedIterator, error) { + + logs, sub, err := _IEigenPodManager.contract.FilterLogs(opts, "DenebForkTimestampUpdated") + if err != nil { + return nil, err + } + return &IEigenPodManagerDenebForkTimestampUpdatedIterator{contract: _IEigenPodManager.contract, event: "DenebForkTimestampUpdated", logs: logs, sub: sub}, nil +} + +// WatchDenebForkTimestampUpdated is a free log subscription operation binding the contract event 0x19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db. +// +// Solidity: event DenebForkTimestampUpdated(uint64 newValue) +func (_IEigenPodManager *IEigenPodManagerFilterer) WatchDenebForkTimestampUpdated(opts *bind.WatchOpts, sink chan<- *IEigenPodManagerDenebForkTimestampUpdated) (event.Subscription, error) { + + logs, sub, err := _IEigenPodManager.contract.WatchLogs(opts, "DenebForkTimestampUpdated") + 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(IEigenPodManagerDenebForkTimestampUpdated) + if err := _IEigenPodManager.contract.UnpackLog(event, "DenebForkTimestampUpdated", 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 +} + +// ParseDenebForkTimestampUpdated is a log parse operation binding the contract event 0x19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db. +// +// Solidity: event DenebForkTimestampUpdated(uint64 newValue) +func (_IEigenPodManager *IEigenPodManagerFilterer) ParseDenebForkTimestampUpdated(log types.Log) (*IEigenPodManagerDenebForkTimestampUpdated, error) { + event := new(IEigenPodManagerDenebForkTimestampUpdated) + if err := _IEigenPodManager.contract.UnpackLog(event, "DenebForkTimestampUpdated", 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 + + 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 *IEigenPodManagerPausedIterator) 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(IEigenPodManagerPaused) + 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(IEigenPodManagerPaused) + 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 *IEigenPodManagerPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IEigenPodManagerPausedIterator) 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 +} + +// FilterPaused is a free log retrieval operation binding the contract event 0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d. +// +// 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, "Paused", accountRule) + if err != nil { + return nil, err + } + return &IEigenPodManagerPausedIterator{contract: _IEigenPodManager.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 (_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, "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(IEigenPodManagerPaused) + if err := _IEigenPodManager.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 (_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 + 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 + + 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 *IEigenPodManagerPauserRegistrySetIterator) 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(IEigenPodManagerPauserRegistrySet) + 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(IEigenPodManagerPauserRegistrySet) + 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 *IEigenPodManagerPauserRegistrySetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IEigenPodManagerPauserRegistrySetIterator) 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 +} + +// FilterPauserRegistrySet is a free log retrieval operation binding the contract event 0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6. +// +// Solidity: event PauserRegistrySet(address pauserRegistry, address newPauserRegistry) +func (_IEigenPodManager *IEigenPodManagerFilterer) FilterPauserRegistrySet(opts *bind.FilterOpts) (*IEigenPodManagerPauserRegistrySetIterator, error) { + + logs, sub, err := _IEigenPodManager.contract.FilterLogs(opts, "PauserRegistrySet") + if err != nil { + return nil, err + } + return &IEigenPodManagerPauserRegistrySetIterator{contract: _IEigenPodManager.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 (_IEigenPodManager *IEigenPodManagerFilterer) WatchPauserRegistrySet(opts *bind.WatchOpts, sink chan<- *IEigenPodManagerPauserRegistrySet) (event.Subscription, error) { + + logs, sub, err := _IEigenPodManager.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(IEigenPodManagerPauserRegistrySet) + if err := _IEigenPodManager.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 (_IEigenPodManager *IEigenPodManagerFilterer) ParsePauserRegistrySet(log types.Log) (*IEigenPodManagerPauserRegistrySet, error) { + event := new(IEigenPodManagerPauserRegistrySet) + if err := _IEigenPodManager.contract.UnpackLog(event, "PauserRegistrySet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IEigenPodManagerPodDeployedIterator is returned from FilterPodDeployed and is used to iterate over the raw logs and unpacked data for PodDeployed events raised by the IEigenPodManager contract. +type IEigenPodManagerPodDeployedIterator struct { + Event *IEigenPodManagerPodDeployed // Event containing the contract specifics 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 *IEigenPodManagerPodDeployedIterator) 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(IEigenPodManagerPodDeployed) + 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(IEigenPodManagerPodDeployed) + 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 *IEigenPodManagerPodDeployedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IEigenPodManagerPodDeployedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IEigenPodManagerPodDeployed represents a PodDeployed event raised by the IEigenPodManager contract. +type IEigenPodManagerPodDeployed struct { + EigenPod common.Address + PodOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPodDeployed is a free log retrieval operation binding the contract event 0x21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a. +// +// Solidity: event PodDeployed(address indexed eigenPod, address indexed podOwner) +func (_IEigenPodManager *IEigenPodManagerFilterer) FilterPodDeployed(opts *bind.FilterOpts, eigenPod []common.Address, podOwner []common.Address) (*IEigenPodManagerPodDeployedIterator, error) { + + var eigenPodRule []interface{} + for _, eigenPodItem := range eigenPod { + eigenPodRule = append(eigenPodRule, eigenPodItem) + } + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _IEigenPodManager.contract.FilterLogs(opts, "PodDeployed", eigenPodRule, podOwnerRule) + if err != nil { + return nil, err + } + return &IEigenPodManagerPodDeployedIterator{contract: _IEigenPodManager.contract, event: "PodDeployed", logs: logs, sub: sub}, nil +} + +// WatchPodDeployed is a free log subscription operation binding the contract event 0x21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a. +// +// Solidity: event PodDeployed(address indexed eigenPod, address indexed podOwner) +func (_IEigenPodManager *IEigenPodManagerFilterer) WatchPodDeployed(opts *bind.WatchOpts, sink chan<- *IEigenPodManagerPodDeployed, eigenPod []common.Address, podOwner []common.Address) (event.Subscription, error) { + + var eigenPodRule []interface{} + for _, eigenPodItem := range eigenPod { + eigenPodRule = append(eigenPodRule, eigenPodItem) + } + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _IEigenPodManager.contract.WatchLogs(opts, "PodDeployed", eigenPodRule, podOwnerRule) + 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(IEigenPodManagerPodDeployed) + if err := _IEigenPodManager.contract.UnpackLog(event, "PodDeployed", 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 +} + +// ParsePodDeployed is a log parse operation binding the contract event 0x21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a. +// +// Solidity: event PodDeployed(address indexed eigenPod, address indexed podOwner) +func (_IEigenPodManager *IEigenPodManagerFilterer) ParsePodDeployed(log types.Log) (*IEigenPodManagerPodDeployed, error) { + event := new(IEigenPodManagerPodDeployed) + if err := _IEigenPodManager.contract.UnpackLog(event, "PodDeployed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IEigenPodManagerPodSharesUpdatedIterator is returned from FilterPodSharesUpdated and is used to iterate over the raw logs and unpacked data for PodSharesUpdated events raised by the IEigenPodManager contract. +type IEigenPodManagerPodSharesUpdatedIterator struct { + Event *IEigenPodManagerPodSharesUpdated // Event containing the contract specifics 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 *IEigenPodManagerPodSharesUpdatedIterator) 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(IEigenPodManagerPodSharesUpdated) + 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(IEigenPodManagerPodSharesUpdated) + 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 *IEigenPodManagerPodSharesUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IEigenPodManagerPodSharesUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IEigenPodManagerPodSharesUpdated represents a PodSharesUpdated event raised by the IEigenPodManager contract. +type IEigenPodManagerPodSharesUpdated struct { + PodOwner common.Address + SharesDelta *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPodSharesUpdated is a free log retrieval operation binding the contract event 0x4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193. +// +// Solidity: event PodSharesUpdated(address indexed podOwner, int256 sharesDelta) +func (_IEigenPodManager *IEigenPodManagerFilterer) FilterPodSharesUpdated(opts *bind.FilterOpts, podOwner []common.Address) (*IEigenPodManagerPodSharesUpdatedIterator, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _IEigenPodManager.contract.FilterLogs(opts, "PodSharesUpdated", podOwnerRule) + if err != nil { + return nil, err + } + return &IEigenPodManagerPodSharesUpdatedIterator{contract: _IEigenPodManager.contract, event: "PodSharesUpdated", logs: logs, sub: sub}, nil +} + +// WatchPodSharesUpdated is a free log subscription operation binding the contract event 0x4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193. +// +// Solidity: event PodSharesUpdated(address indexed podOwner, int256 sharesDelta) +func (_IEigenPodManager *IEigenPodManagerFilterer) WatchPodSharesUpdated(opts *bind.WatchOpts, sink chan<- *IEigenPodManagerPodSharesUpdated, podOwner []common.Address) (event.Subscription, error) { + + var podOwnerRule []interface{} + for _, podOwnerItem := range podOwner { + podOwnerRule = append(podOwnerRule, podOwnerItem) + } + + logs, sub, err := _IEigenPodManager.contract.WatchLogs(opts, "PodSharesUpdated", podOwnerRule) + 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(IEigenPodManagerPodSharesUpdated) + if err := _IEigenPodManager.contract.UnpackLog(event, "PodSharesUpdated", 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 +} + +// ParsePodSharesUpdated is a log parse operation binding the contract event 0x4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193. +// +// Solidity: event PodSharesUpdated(address indexed podOwner, int256 sharesDelta) +func (_IEigenPodManager *IEigenPodManagerFilterer) ParsePodSharesUpdated(log types.Log) (*IEigenPodManagerPodSharesUpdated, error) { + event := new(IEigenPodManagerPodSharesUpdated) + if err := _IEigenPodManager.contract.UnpackLog(event, "PodSharesUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IEigenPodManagerUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the IEigenPodManager contract. +type IEigenPodManagerUnpausedIterator struct { + Event *IEigenPodManagerUnpaused // Event containing the contract specifics 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 *IEigenPodManagerUnpausedIterator) 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(IEigenPodManagerUnpaused) + 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(IEigenPodManagerUnpaused) + 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 *IEigenPodManagerUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IEigenPodManagerUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IEigenPodManagerUnpaused represents a Unpaused event raised by the IEigenPodManager contract. +type IEigenPodManagerUnpaused 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 (_IEigenPodManager *IEigenPodManagerFilterer) FilterUnpaused(opts *bind.FilterOpts, account []common.Address) (*IEigenPodManagerUnpausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _IEigenPodManager.contract.FilterLogs(opts, "Unpaused", accountRule) + if err != nil { + return nil, err + } + return &IEigenPodManagerUnpausedIterator{contract: _IEigenPodManager.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 (_IEigenPodManager *IEigenPodManagerFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *IEigenPodManagerUnpaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _IEigenPodManager.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(IEigenPodManagerUnpaused) + if err := _IEigenPodManager.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 (_IEigenPodManager *IEigenPodManagerFilterer) ParseUnpaused(log types.Log) (*IEigenPodManagerUnpaused, error) { + event := new(IEigenPodManagerUnpaused) + if err := _IEigenPodManager.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/IEigenPodManager/tmp.abi b/pkg/bindings/IEigenPodManager/tmp.abi new file mode 100644 index 000000000..362b3591f --- /dev/null +++ b/pkg/bindings/IEigenPodManager/tmp.abi @@ -0,0 +1,620 @@ +[ + { + "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": "contract IStrategy" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "beaconChainOracle", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBeaconChainOracle" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "createPod", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "denebForkTimestamp", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "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": "getBlockRootAtTimestamp", + "inputs": [ + { + "name": "timestamp", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "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": "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": "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": "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": "setDenebForkTimestamp", + "inputs": [ + { + "name": "newDenebForkTimestamp", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "slasher", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ISlasher" + } + ], + "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": "contract IStrategyManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "unpause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateBeaconChainOracle", + "inputs": [ + { + "name": "newBeaconChainOracle", + "type": "address", + "internalType": "contract IBeaconChainOracle" + } + ], + "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": "BeaconOracleUpdated", + "inputs": [ + { + "name": "newOracleAddress", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DenebForkTimestampUpdated", + "inputs": [ + { + "name": "newValue", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } + ], + "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": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "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 + } +] diff --git a/pkg/bindings/IEigenPodManager/tmp.bin b/pkg/bindings/IEigenPodManager/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/IEigenPodManager/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/IPausable/binding.go b/pkg/bindings/IPausable/binding.go new file mode 100644 index 000000000..4cef4b112 --- /dev/null +++ b/pkg/bindings/IPausable/binding.go @@ -0,0 +1,783 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package IPausable + +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 +) + +// 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}]", +} + +// IPausableABI is the input ABI used to generate the binding from. +// Deprecated: Use IPausableMetaData.ABI instead. +var IPausableABI = IPausableMetaData.ABI + +// IPausable is an auto generated Go binding around an Ethereum contract. +type IPausable struct { + IPausableCaller // Read-only binding to the contract + IPausableTransactor // Write-only binding to the contract + IPausableFilterer // Log filterer for contract events +} + +// IPausableCaller is an auto generated read-only Go binding around an Ethereum contract. +type IPausableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPausableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IPausableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPausableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IPausableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPausableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IPausableSession struct { + Contract *IPausable // 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 +} + +// IPausableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IPausableCallerSession struct { + Contract *IPausableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IPausableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IPausableTransactorSession struct { + Contract *IPausableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IPausableRaw is an auto generated low-level Go binding around an Ethereum contract. +type IPausableRaw struct { + Contract *IPausable // Generic contract binding to access the raw methods on +} + +// IPausableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IPausableCallerRaw struct { + Contract *IPausableCaller // Generic read-only contract binding to access the raw methods on +} + +// IPausableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IPausableTransactorRaw struct { + Contract *IPausableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIPausable creates a new instance of IPausable, bound to a specific deployed contract. +func NewIPausable(address common.Address, backend bind.ContractBackend) (*IPausable, error) { + contract, err := bindIPausable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IPausable{IPausableCaller: IPausableCaller{contract: contract}, IPausableTransactor: IPausableTransactor{contract: contract}, IPausableFilterer: IPausableFilterer{contract: contract}}, nil +} + +// NewIPausableCaller creates a new read-only instance of IPausable, bound to a specific deployed contract. +func NewIPausableCaller(address common.Address, caller bind.ContractCaller) (*IPausableCaller, error) { + contract, err := bindIPausable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IPausableCaller{contract: contract}, nil +} + +// NewIPausableTransactor creates a new write-only instance of IPausable, bound to a specific deployed contract. +func NewIPausableTransactor(address common.Address, transactor bind.ContractTransactor) (*IPausableTransactor, error) { + contract, err := bindIPausable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IPausableTransactor{contract: contract}, nil +} + +// NewIPausableFilterer creates a new log filterer instance of IPausable, bound to a specific deployed contract. +func NewIPausableFilterer(address common.Address, filterer bind.ContractFilterer) (*IPausableFilterer, error) { + contract, err := bindIPausable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IPausableFilterer{contract: contract}, nil +} + +// bindIPausable binds a generic wrapper to an already deployed contract. +func bindIPausable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IPausableMetaData.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 (_IPausable *IPausableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPausable.Contract.IPausableCaller.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 (_IPausable *IPausableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPausable.Contract.IPausableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IPausable *IPausableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPausable.Contract.IPausableTransactor.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 (_IPausable *IPausableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPausable.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 (_IPausable *IPausableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPausable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IPausable *IPausableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPausable.Contract.contract.Transact(opts, method, params...) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_IPausable *IPausableCaller) Paused(opts *bind.CallOpts, index uint8) (bool, error) { + var out []interface{} + err := _IPausable.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 (_IPausable *IPausableSession) Paused(index uint8) (bool, error) { + return _IPausable.Contract.Paused(&_IPausable.CallOpts, index) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_IPausable *IPausableCallerSession) Paused(index uint8) (bool, error) { + return _IPausable.Contract.Paused(&_IPausable.CallOpts, index) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_IPausable *IPausableCaller) Paused0(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IPausable.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 (_IPausable *IPausableSession) Paused0() (*big.Int, error) { + return _IPausable.Contract.Paused0(&_IPausable.CallOpts) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_IPausable *IPausableCallerSession) Paused0() (*big.Int, error) { + return _IPausable.Contract.Paused0(&_IPausable.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_IPausable *IPausableCaller) PauserRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IPausable.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 (_IPausable *IPausableSession) PauserRegistry() (common.Address, error) { + return _IPausable.Contract.PauserRegistry(&_IPausable.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_IPausable *IPausableCallerSession) PauserRegistry() (common.Address, error) { + return _IPausable.Contract.PauserRegistry(&_IPausable.CallOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_IPausable *IPausableTransactor) Pause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _IPausable.contract.Transact(opts, "pause", newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_IPausable *IPausableSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _IPausable.Contract.Pause(&_IPausable.TransactOpts, newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_IPausable *IPausableTransactorSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _IPausable.Contract.Pause(&_IPausable.TransactOpts, newPausedStatus) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_IPausable *IPausableTransactor) PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPausable.contract.Transact(opts, "pauseAll") +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_IPausable *IPausableSession) PauseAll() (*types.Transaction, error) { + return _IPausable.Contract.PauseAll(&_IPausable.TransactOpts) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_IPausable *IPausableTransactorSession) PauseAll() (*types.Transaction, error) { + 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() +func (_IPausable *IPausableTransactor) Unpause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _IPausable.contract.Transact(opts, "unpause", newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_IPausable *IPausableSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _IPausable.Contract.Unpause(&_IPausable.TransactOpts, newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_IPausable *IPausableTransactorSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _IPausable.Contract.Unpause(&_IPausable.TransactOpts, newPausedStatus) +} + +// IPausablePausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the IPausable contract. +type IPausablePausedIterator struct { + Event *IPausablePaused // Event containing the contract specifics 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 *IPausablePausedIterator) 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(IPausablePaused) + 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(IPausablePaused) + 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 *IPausablePausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPausablePausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPausablePaused represents a Paused event raised by the IPausable contract. +type IPausablePaused 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 (_IPausable *IPausableFilterer) FilterPaused(opts *bind.FilterOpts, account []common.Address) (*IPausablePausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _IPausable.contract.FilterLogs(opts, "Paused", accountRule) + if err != nil { + return nil, err + } + return &IPausablePausedIterator{contract: _IPausable.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 (_IPausable *IPausableFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *IPausablePaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _IPausable.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(IPausablePaused) + if err := _IPausable.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 (_IPausable *IPausableFilterer) ParsePaused(log types.Log) (*IPausablePaused, error) { + event := new(IPausablePaused) + if err := _IPausable.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + 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 + + 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 *IPausableUnpausedIterator) 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(IPausableUnpaused) + 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(IPausableUnpaused) + 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 *IPausableUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPausableUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPausableUnpaused represents a Unpaused event raised by the IPausable contract. +type IPausableUnpaused 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 (_IPausable *IPausableFilterer) FilterUnpaused(opts *bind.FilterOpts, account []common.Address) (*IPausableUnpausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _IPausable.contract.FilterLogs(opts, "Unpaused", accountRule) + if err != nil { + return nil, err + } + return &IPausableUnpausedIterator{contract: _IPausable.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 (_IPausable *IPausableFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *IPausableUnpaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _IPausable.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(IPausableUnpaused) + if err := _IPausable.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 (_IPausable *IPausableFilterer) ParseUnpaused(log types.Log) (*IPausableUnpaused, error) { + event := new(IPausableUnpaused) + if err := _IPausable.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/IPausable/tmp.abi b/pkg/bindings/IPausable/tmp.abi new file mode 100644 index 000000000..cb2146604 --- /dev/null +++ b/pkg/bindings/IPausable/tmp.abi @@ -0,0 +1,150 @@ +[ + { + "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": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "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": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "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 + } +] diff --git a/pkg/bindings/IPausable/tmp.bin b/pkg/bindings/IPausable/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/IPausable/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/IPauserRegistry/binding.go b/pkg/bindings/IPauserRegistry/binding.go new file mode 100644 index 000000000..59678ea9e --- /dev/null +++ b/pkg/bindings/IPauserRegistry/binding.go @@ -0,0 +1,513 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package IPauserRegistry + +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 +) + +// 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}]", +} + +// IPauserRegistryABI is the input ABI used to generate the binding from. +// Deprecated: Use IPauserRegistryMetaData.ABI instead. +var IPauserRegistryABI = IPauserRegistryMetaData.ABI + +// IPauserRegistry is an auto generated Go binding around an Ethereum contract. +type IPauserRegistry struct { + IPauserRegistryCaller // Read-only binding to the contract + IPauserRegistryTransactor // Write-only binding to the contract + IPauserRegistryFilterer // Log filterer for contract events +} + +// IPauserRegistryCaller is an auto generated read-only Go binding around an Ethereum contract. +type IPauserRegistryCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPauserRegistryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IPauserRegistryTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPauserRegistryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IPauserRegistryFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPauserRegistrySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IPauserRegistrySession struct { + Contract *IPauserRegistry // 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 +} + +// IPauserRegistryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IPauserRegistryCallerSession struct { + Contract *IPauserRegistryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IPauserRegistryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IPauserRegistryTransactorSession struct { + Contract *IPauserRegistryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IPauserRegistryRaw is an auto generated low-level Go binding around an Ethereum contract. +type IPauserRegistryRaw struct { + Contract *IPauserRegistry // Generic contract binding to access the raw methods on +} + +// IPauserRegistryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IPauserRegistryCallerRaw struct { + Contract *IPauserRegistryCaller // Generic read-only contract binding to access the raw methods on +} + +// IPauserRegistryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IPauserRegistryTransactorRaw struct { + Contract *IPauserRegistryTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIPauserRegistry creates a new instance of IPauserRegistry, bound to a specific deployed contract. +func NewIPauserRegistry(address common.Address, backend bind.ContractBackend) (*IPauserRegistry, error) { + contract, err := bindIPauserRegistry(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IPauserRegistry{IPauserRegistryCaller: IPauserRegistryCaller{contract: contract}, IPauserRegistryTransactor: IPauserRegistryTransactor{contract: contract}, IPauserRegistryFilterer: IPauserRegistryFilterer{contract: contract}}, nil +} + +// NewIPauserRegistryCaller creates a new read-only instance of IPauserRegistry, bound to a specific deployed contract. +func NewIPauserRegistryCaller(address common.Address, caller bind.ContractCaller) (*IPauserRegistryCaller, error) { + contract, err := bindIPauserRegistry(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IPauserRegistryCaller{contract: contract}, nil +} + +// NewIPauserRegistryTransactor creates a new write-only instance of IPauserRegistry, bound to a specific deployed contract. +func NewIPauserRegistryTransactor(address common.Address, transactor bind.ContractTransactor) (*IPauserRegistryTransactor, error) { + contract, err := bindIPauserRegistry(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IPauserRegistryTransactor{contract: contract}, nil +} + +// NewIPauserRegistryFilterer creates a new log filterer instance of IPauserRegistry, bound to a specific deployed contract. +func NewIPauserRegistryFilterer(address common.Address, filterer bind.ContractFilterer) (*IPauserRegistryFilterer, error) { + contract, err := bindIPauserRegistry(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IPauserRegistryFilterer{contract: contract}, nil +} + +// bindIPauserRegistry binds a generic wrapper to an already deployed contract. +func bindIPauserRegistry(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IPauserRegistryMetaData.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 (_IPauserRegistry *IPauserRegistryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPauserRegistry.Contract.IPauserRegistryCaller.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 (_IPauserRegistry *IPauserRegistryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPauserRegistry.Contract.IPauserRegistryTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IPauserRegistry *IPauserRegistryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPauserRegistry.Contract.IPauserRegistryTransactor.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 (_IPauserRegistry *IPauserRegistryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPauserRegistry.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 (_IPauserRegistry *IPauserRegistryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPauserRegistry.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IPauserRegistry *IPauserRegistryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPauserRegistry.Contract.contract.Transact(opts, method, params...) +} + +// IsPauser is a free data retrieval call binding the contract method 0x46fbf68e. +// +// Solidity: function isPauser(address pauser) view returns(bool) +func (_IPauserRegistry *IPauserRegistryCaller) IsPauser(opts *bind.CallOpts, pauser common.Address) (bool, error) { + var out []interface{} + err := _IPauserRegistry.contract.Call(opts, &out, "isPauser", pauser) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsPauser is a free data retrieval call binding the contract method 0x46fbf68e. +// +// Solidity: function isPauser(address pauser) view returns(bool) +func (_IPauserRegistry *IPauserRegistrySession) IsPauser(pauser common.Address) (bool, error) { + return _IPauserRegistry.Contract.IsPauser(&_IPauserRegistry.CallOpts, pauser) +} + +// IsPauser is a free data retrieval call binding the contract method 0x46fbf68e. +// +// Solidity: function isPauser(address pauser) view returns(bool) +func (_IPauserRegistry *IPauserRegistryCallerSession) IsPauser(pauser common.Address) (bool, error) { + return _IPauserRegistry.Contract.IsPauser(&_IPauserRegistry.CallOpts, pauser) +} + +// Unpauser is a free data retrieval call binding the contract method 0xeab66d7a. +// +// Solidity: function unpauser() view returns(address) +func (_IPauserRegistry *IPauserRegistryCaller) Unpauser(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IPauserRegistry.contract.Call(opts, &out, "unpauser") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Unpauser is a free data retrieval call binding the contract method 0xeab66d7a. +// +// Solidity: function unpauser() view returns(address) +func (_IPauserRegistry *IPauserRegistrySession) Unpauser() (common.Address, error) { + return _IPauserRegistry.Contract.Unpauser(&_IPauserRegistry.CallOpts) +} + +// Unpauser is a free data retrieval call binding the contract method 0xeab66d7a. +// +// Solidity: function unpauser() view returns(address) +func (_IPauserRegistry *IPauserRegistryCallerSession) Unpauser() (common.Address, error) { + return _IPauserRegistry.Contract.Unpauser(&_IPauserRegistry.CallOpts) +} + +// IPauserRegistryPauserStatusChangedIterator is returned from FilterPauserStatusChanged and is used to iterate over the raw logs and unpacked data for PauserStatusChanged events raised by the IPauserRegistry contract. +type IPauserRegistryPauserStatusChangedIterator struct { + Event *IPauserRegistryPauserStatusChanged // Event containing the contract specifics 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 *IPauserRegistryPauserStatusChangedIterator) 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(IPauserRegistryPauserStatusChanged) + 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(IPauserRegistryPauserStatusChanged) + 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 *IPauserRegistryPauserStatusChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPauserRegistryPauserStatusChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPauserRegistryPauserStatusChanged represents a PauserStatusChanged event raised by the IPauserRegistry contract. +type IPauserRegistryPauserStatusChanged struct { + Pauser common.Address + CanPause bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPauserStatusChanged is a free log retrieval operation binding the contract event 0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152. +// +// Solidity: event PauserStatusChanged(address pauser, bool canPause) +func (_IPauserRegistry *IPauserRegistryFilterer) FilterPauserStatusChanged(opts *bind.FilterOpts) (*IPauserRegistryPauserStatusChangedIterator, error) { + + logs, sub, err := _IPauserRegistry.contract.FilterLogs(opts, "PauserStatusChanged") + if err != nil { + return nil, err + } + return &IPauserRegistryPauserStatusChangedIterator{contract: _IPauserRegistry.contract, event: "PauserStatusChanged", logs: logs, sub: sub}, nil +} + +// WatchPauserStatusChanged is a free log subscription operation binding the contract event 0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152. +// +// Solidity: event PauserStatusChanged(address pauser, bool canPause) +func (_IPauserRegistry *IPauserRegistryFilterer) WatchPauserStatusChanged(opts *bind.WatchOpts, sink chan<- *IPauserRegistryPauserStatusChanged) (event.Subscription, error) { + + logs, sub, err := _IPauserRegistry.contract.WatchLogs(opts, "PauserStatusChanged") + 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(IPauserRegistryPauserStatusChanged) + if err := _IPauserRegistry.contract.UnpackLog(event, "PauserStatusChanged", 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 +} + +// ParsePauserStatusChanged is a log parse operation binding the contract event 0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152. +// +// Solidity: event PauserStatusChanged(address pauser, bool canPause) +func (_IPauserRegistry *IPauserRegistryFilterer) ParsePauserStatusChanged(log types.Log) (*IPauserRegistryPauserStatusChanged, error) { + event := new(IPauserRegistryPauserStatusChanged) + if err := _IPauserRegistry.contract.UnpackLog(event, "PauserStatusChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPauserRegistryUnpauserChangedIterator is returned from FilterUnpauserChanged and is used to iterate over the raw logs and unpacked data for UnpauserChanged events raised by the IPauserRegistry contract. +type IPauserRegistryUnpauserChangedIterator struct { + Event *IPauserRegistryUnpauserChanged // Event containing the contract specifics 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 *IPauserRegistryUnpauserChangedIterator) 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(IPauserRegistryUnpauserChanged) + 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(IPauserRegistryUnpauserChanged) + 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 *IPauserRegistryUnpauserChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPauserRegistryUnpauserChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPauserRegistryUnpauserChanged represents a UnpauserChanged event raised by the IPauserRegistry contract. +type IPauserRegistryUnpauserChanged struct { + PreviousUnpauser common.Address + NewUnpauser common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpauserChanged is a free log retrieval operation binding the contract event 0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892. +// +// Solidity: event UnpauserChanged(address previousUnpauser, address newUnpauser) +func (_IPauserRegistry *IPauserRegistryFilterer) FilterUnpauserChanged(opts *bind.FilterOpts) (*IPauserRegistryUnpauserChangedIterator, error) { + + logs, sub, err := _IPauserRegistry.contract.FilterLogs(opts, "UnpauserChanged") + if err != nil { + return nil, err + } + return &IPauserRegistryUnpauserChangedIterator{contract: _IPauserRegistry.contract, event: "UnpauserChanged", logs: logs, sub: sub}, nil +} + +// WatchUnpauserChanged is a free log subscription operation binding the contract event 0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892. +// +// Solidity: event UnpauserChanged(address previousUnpauser, address newUnpauser) +func (_IPauserRegistry *IPauserRegistryFilterer) WatchUnpauserChanged(opts *bind.WatchOpts, sink chan<- *IPauserRegistryUnpauserChanged) (event.Subscription, error) { + + logs, sub, err := _IPauserRegistry.contract.WatchLogs(opts, "UnpauserChanged") + 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(IPauserRegistryUnpauserChanged) + if err := _IPauserRegistry.contract.UnpackLog(event, "UnpauserChanged", 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 +} + +// ParseUnpauserChanged is a log parse operation binding the contract event 0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892. +// +// Solidity: event UnpauserChanged(address previousUnpauser, address newUnpauser) +func (_IPauserRegistry *IPauserRegistryFilterer) ParseUnpauserChanged(log types.Log) (*IPauserRegistryUnpauserChanged, error) { + event := new(IPauserRegistryUnpauserChanged) + if err := _IPauserRegistry.contract.UnpackLog(event, "UnpauserChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/IPauserRegistry/tmp.abi b/pkg/bindings/IPauserRegistry/tmp.abi new file mode 100644 index 000000000..9a689d12e --- /dev/null +++ b/pkg/bindings/IPauserRegistry/tmp.abi @@ -0,0 +1,72 @@ +[ + { + "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 + } +] diff --git a/pkg/bindings/IPauserRegistry/tmp.bin b/pkg/bindings/IPauserRegistry/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/IPauserRegistry/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/ISignatureUtils/binding.go b/pkg/bindings/ISignatureUtils/binding.go new file mode 100644 index 000000000..b462b4e5f --- /dev/null +++ b/pkg/bindings/ISignatureUtils/binding.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package ISignatureUtils + +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 +) + +// ISignatureUtilsMetaData contains all meta data concerning the ISignatureUtils contract. +var ISignatureUtilsMetaData = &bind.MetaData{ + ABI: "[]", +} + +// ISignatureUtilsABI is the input ABI used to generate the binding from. +// Deprecated: Use ISignatureUtilsMetaData.ABI instead. +var ISignatureUtilsABI = ISignatureUtilsMetaData.ABI + +// ISignatureUtils is an auto generated Go binding around an Ethereum contract. +type ISignatureUtils struct { + ISignatureUtilsCaller // Read-only binding to the contract + ISignatureUtilsTransactor // Write-only binding to the contract + ISignatureUtilsFilterer // Log filterer for contract events +} + +// ISignatureUtilsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ISignatureUtilsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ISignatureUtilsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ISignatureUtilsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ISignatureUtilsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ISignatureUtilsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ISignatureUtilsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ISignatureUtilsSession struct { + Contract *ISignatureUtils // 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 +} + +// ISignatureUtilsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ISignatureUtilsCallerSession struct { + Contract *ISignatureUtilsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ISignatureUtilsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ISignatureUtilsTransactorSession struct { + Contract *ISignatureUtilsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ISignatureUtilsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ISignatureUtilsRaw struct { + Contract *ISignatureUtils // Generic contract binding to access the raw methods on +} + +// ISignatureUtilsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ISignatureUtilsCallerRaw struct { + Contract *ISignatureUtilsCaller // Generic read-only contract binding to access the raw methods on +} + +// ISignatureUtilsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ISignatureUtilsTransactorRaw struct { + Contract *ISignatureUtilsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewISignatureUtils creates a new instance of ISignatureUtils, bound to a specific deployed contract. +func NewISignatureUtils(address common.Address, backend bind.ContractBackend) (*ISignatureUtils, error) { + contract, err := bindISignatureUtils(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ISignatureUtils{ISignatureUtilsCaller: ISignatureUtilsCaller{contract: contract}, ISignatureUtilsTransactor: ISignatureUtilsTransactor{contract: contract}, ISignatureUtilsFilterer: ISignatureUtilsFilterer{contract: contract}}, nil +} + +// NewISignatureUtilsCaller creates a new read-only instance of ISignatureUtils, bound to a specific deployed contract. +func NewISignatureUtilsCaller(address common.Address, caller bind.ContractCaller) (*ISignatureUtilsCaller, error) { + contract, err := bindISignatureUtils(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ISignatureUtilsCaller{contract: contract}, nil +} + +// NewISignatureUtilsTransactor creates a new write-only instance of ISignatureUtils, bound to a specific deployed contract. +func NewISignatureUtilsTransactor(address common.Address, transactor bind.ContractTransactor) (*ISignatureUtilsTransactor, error) { + contract, err := bindISignatureUtils(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ISignatureUtilsTransactor{contract: contract}, nil +} + +// NewISignatureUtilsFilterer creates a new log filterer instance of ISignatureUtils, bound to a specific deployed contract. +func NewISignatureUtilsFilterer(address common.Address, filterer bind.ContractFilterer) (*ISignatureUtilsFilterer, error) { + contract, err := bindISignatureUtils(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ISignatureUtilsFilterer{contract: contract}, nil +} + +// bindISignatureUtils binds a generic wrapper to an already deployed contract. +func bindISignatureUtils(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ISignatureUtilsMetaData.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 (_ISignatureUtils *ISignatureUtilsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ISignatureUtils.Contract.ISignatureUtilsCaller.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 (_ISignatureUtils *ISignatureUtilsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ISignatureUtils.Contract.ISignatureUtilsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ISignatureUtils *ISignatureUtilsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ISignatureUtils.Contract.ISignatureUtilsTransactor.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 (_ISignatureUtils *ISignatureUtilsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ISignatureUtils.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 (_ISignatureUtils *ISignatureUtilsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ISignatureUtils.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ISignatureUtils *ISignatureUtilsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ISignatureUtils.Contract.contract.Transact(opts, method, params...) +} diff --git a/pkg/bindings/ISignatureUtils/tmp.abi b/pkg/bindings/ISignatureUtils/tmp.abi new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/pkg/bindings/ISignatureUtils/tmp.abi @@ -0,0 +1 @@ +[] diff --git a/pkg/bindings/ISignatureUtils/tmp.bin b/pkg/bindings/ISignatureUtils/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/ISignatureUtils/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/ISlasher/binding.go b/pkg/bindings/ISlasher/binding.go new file mode 100644 index 000000000..70f600220 --- /dev/null +++ b/pkg/bindings/ISlasher/binding.go @@ -0,0 +1,1480 @@ +// 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/ISlasher/tmp.abi b/pkg/bindings/ISlasher/tmp.abi new file mode 100644 index 000000000..bf6300413 --- /dev/null +++ b/pkg/bindings/ISlasher/tmp.abi @@ -0,0 +1,538 @@ +[ + { + "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": "contract IDelegationManager" + } + ], + "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": "struct ISlasher.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": "contract IStrategyManager" + } + ], + "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 + } +] diff --git a/pkg/bindings/ISlasher/tmp.bin b/pkg/bindings/ISlasher/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/ISlasher/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/ISocketUpdater/binding.go b/pkg/bindings/ISocketUpdater/binding.go new file mode 100644 index 000000000..8db40dbb8 --- /dev/null +++ b/pkg/bindings/ISocketUpdater/binding.go @@ -0,0 +1,347 @@ +// 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/ISocketUpdater/tmp.abi b/pkg/bindings/ISocketUpdater/tmp.abi new file mode 100644 index 000000000..006612803 --- /dev/null +++ b/pkg/bindings/ISocketUpdater/tmp.abi @@ -0,0 +1,34 @@ +[ + { + "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 + } +] diff --git a/pkg/bindings/ISocketUpdater/tmp.bin b/pkg/bindings/ISocketUpdater/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/ISocketUpdater/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/IStrategy/binding.go b/pkg/bindings/IStrategy/binding.go new file mode 100644 index 000000000..10ee867cd --- /dev/null +++ b/pkg/bindings/IStrategy/binding.go @@ -0,0 +1,503 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package IStrategy + +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 +) + +// 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\"}]", +} + +// IStrategyABI is the input ABI used to generate the binding from. +// Deprecated: Use IStrategyMetaData.ABI instead. +var IStrategyABI = IStrategyMetaData.ABI + +// IStrategy is an auto generated Go binding around an Ethereum contract. +type IStrategy struct { + IStrategyCaller // Read-only binding to the contract + IStrategyTransactor // Write-only binding to the contract + IStrategyFilterer // Log filterer for contract events +} + +// IStrategyCaller is an auto generated read-only Go binding around an Ethereum contract. +type IStrategyCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IStrategyTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IStrategyTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IStrategyFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IStrategyFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IStrategySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IStrategySession struct { + Contract *IStrategy // 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 +} + +// IStrategyCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IStrategyCallerSession struct { + Contract *IStrategyCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IStrategyTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IStrategyTransactorSession struct { + Contract *IStrategyTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IStrategyRaw is an auto generated low-level Go binding around an Ethereum contract. +type IStrategyRaw struct { + Contract *IStrategy // Generic contract binding to access the raw methods on +} + +// IStrategyCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IStrategyCallerRaw struct { + Contract *IStrategyCaller // Generic read-only contract binding to access the raw methods on +} + +// IStrategyTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IStrategyTransactorRaw struct { + Contract *IStrategyTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIStrategy creates a new instance of IStrategy, bound to a specific deployed contract. +func NewIStrategy(address common.Address, backend bind.ContractBackend) (*IStrategy, error) { + contract, err := bindIStrategy(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IStrategy{IStrategyCaller: IStrategyCaller{contract: contract}, IStrategyTransactor: IStrategyTransactor{contract: contract}, IStrategyFilterer: IStrategyFilterer{contract: contract}}, nil +} + +// NewIStrategyCaller creates a new read-only instance of IStrategy, bound to a specific deployed contract. +func NewIStrategyCaller(address common.Address, caller bind.ContractCaller) (*IStrategyCaller, error) { + contract, err := bindIStrategy(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IStrategyCaller{contract: contract}, nil +} + +// NewIStrategyTransactor creates a new write-only instance of IStrategy, bound to a specific deployed contract. +func NewIStrategyTransactor(address common.Address, transactor bind.ContractTransactor) (*IStrategyTransactor, error) { + contract, err := bindIStrategy(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IStrategyTransactor{contract: contract}, nil +} + +// NewIStrategyFilterer creates a new log filterer instance of IStrategy, bound to a specific deployed contract. +func NewIStrategyFilterer(address common.Address, filterer bind.ContractFilterer) (*IStrategyFilterer, error) { + contract, err := bindIStrategy(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IStrategyFilterer{contract: contract}, nil +} + +// bindIStrategy binds a generic wrapper to an already deployed contract. +func bindIStrategy(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IStrategyMetaData.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 (_IStrategy *IStrategyRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IStrategy.Contract.IStrategyCaller.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 (_IStrategy *IStrategyRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IStrategy.Contract.IStrategyTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IStrategy *IStrategyRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IStrategy.Contract.IStrategyTransactor.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 (_IStrategy *IStrategyCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IStrategy.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 (_IStrategy *IStrategyTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IStrategy.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IStrategy *IStrategyTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IStrategy.Contract.contract.Transact(opts, method, params...) +} + +// Explanation is a free data retrieval call binding the contract method 0xab5921e1. +// +// Solidity: function explanation() view returns(string) +func (_IStrategy *IStrategyCaller) Explanation(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _IStrategy.contract.Call(opts, &out, "explanation") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Explanation is a free data retrieval call binding the contract method 0xab5921e1. +// +// Solidity: function explanation() view returns(string) +func (_IStrategy *IStrategySession) Explanation() (string, error) { + return _IStrategy.Contract.Explanation(&_IStrategy.CallOpts) +} + +// Explanation is a free data retrieval call binding the contract method 0xab5921e1. +// +// Solidity: function explanation() view returns(string) +func (_IStrategy *IStrategyCallerSession) Explanation() (string, error) { + return _IStrategy.Contract.Explanation(&_IStrategy.CallOpts) +} + +// Shares is a free data retrieval call binding the contract method 0xce7c2ac2. +// +// Solidity: function shares(address user) view returns(uint256) +func (_IStrategy *IStrategyCaller) Shares(opts *bind.CallOpts, user common.Address) (*big.Int, error) { + var out []interface{} + err := _IStrategy.contract.Call(opts, &out, "shares", user) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Shares is a free data retrieval call binding the contract method 0xce7c2ac2. +// +// Solidity: function shares(address user) view returns(uint256) +func (_IStrategy *IStrategySession) Shares(user common.Address) (*big.Int, error) { + return _IStrategy.Contract.Shares(&_IStrategy.CallOpts, user) +} + +// Shares is a free data retrieval call binding the contract method 0xce7c2ac2. +// +// Solidity: function shares(address user) view returns(uint256) +func (_IStrategy *IStrategyCallerSession) Shares(user common.Address) (*big.Int, error) { + return _IStrategy.Contract.Shares(&_IStrategy.CallOpts, user) +} + +// SharesToUnderlyingView is a free data retrieval call binding the contract method 0x7a8b2637. +// +// Solidity: function sharesToUnderlyingView(uint256 amountShares) view returns(uint256) +func (_IStrategy *IStrategyCaller) SharesToUnderlyingView(opts *bind.CallOpts, amountShares *big.Int) (*big.Int, error) { + var out []interface{} + err := _IStrategy.contract.Call(opts, &out, "sharesToUnderlyingView", amountShares) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// SharesToUnderlyingView is a free data retrieval call binding the contract method 0x7a8b2637. +// +// Solidity: function sharesToUnderlyingView(uint256 amountShares) view returns(uint256) +func (_IStrategy *IStrategySession) SharesToUnderlyingView(amountShares *big.Int) (*big.Int, error) { + return _IStrategy.Contract.SharesToUnderlyingView(&_IStrategy.CallOpts, amountShares) +} + +// SharesToUnderlyingView is a free data retrieval call binding the contract method 0x7a8b2637. +// +// Solidity: function sharesToUnderlyingView(uint256 amountShares) view returns(uint256) +func (_IStrategy *IStrategyCallerSession) SharesToUnderlyingView(amountShares *big.Int) (*big.Int, error) { + return _IStrategy.Contract.SharesToUnderlyingView(&_IStrategy.CallOpts, amountShares) +} + +// TotalShares is a free data retrieval call binding the contract method 0x3a98ef39. +// +// Solidity: function totalShares() view returns(uint256) +func (_IStrategy *IStrategyCaller) TotalShares(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IStrategy.contract.Call(opts, &out, "totalShares") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalShares is a free data retrieval call binding the contract method 0x3a98ef39. +// +// Solidity: function totalShares() view returns(uint256) +func (_IStrategy *IStrategySession) TotalShares() (*big.Int, error) { + return _IStrategy.Contract.TotalShares(&_IStrategy.CallOpts) +} + +// TotalShares is a free data retrieval call binding the contract method 0x3a98ef39. +// +// Solidity: function totalShares() view returns(uint256) +func (_IStrategy *IStrategyCallerSession) TotalShares() (*big.Int, error) { + return _IStrategy.Contract.TotalShares(&_IStrategy.CallOpts) +} + +// UnderlyingToSharesView is a free data retrieval call binding the contract method 0xe3dae51c. +// +// Solidity: function underlyingToSharesView(uint256 amountUnderlying) view returns(uint256) +func (_IStrategy *IStrategyCaller) UnderlyingToSharesView(opts *bind.CallOpts, amountUnderlying *big.Int) (*big.Int, error) { + var out []interface{} + err := _IStrategy.contract.Call(opts, &out, "underlyingToSharesView", amountUnderlying) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UnderlyingToSharesView is a free data retrieval call binding the contract method 0xe3dae51c. +// +// Solidity: function underlyingToSharesView(uint256 amountUnderlying) view returns(uint256) +func (_IStrategy *IStrategySession) UnderlyingToSharesView(amountUnderlying *big.Int) (*big.Int, error) { + return _IStrategy.Contract.UnderlyingToSharesView(&_IStrategy.CallOpts, amountUnderlying) +} + +// UnderlyingToSharesView is a free data retrieval call binding the contract method 0xe3dae51c. +// +// Solidity: function underlyingToSharesView(uint256 amountUnderlying) view returns(uint256) +func (_IStrategy *IStrategyCallerSession) UnderlyingToSharesView(amountUnderlying *big.Int) (*big.Int, error) { + return _IStrategy.Contract.UnderlyingToSharesView(&_IStrategy.CallOpts, amountUnderlying) +} + +// UnderlyingToken is a free data retrieval call binding the contract method 0x2495a599. +// +// Solidity: function underlyingToken() view returns(address) +func (_IStrategy *IStrategyCaller) UnderlyingToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IStrategy.contract.Call(opts, &out, "underlyingToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// UnderlyingToken is a free data retrieval call binding the contract method 0x2495a599. +// +// Solidity: function underlyingToken() view returns(address) +func (_IStrategy *IStrategySession) UnderlyingToken() (common.Address, error) { + return _IStrategy.Contract.UnderlyingToken(&_IStrategy.CallOpts) +} + +// UnderlyingToken is a free data retrieval call binding the contract method 0x2495a599. +// +// Solidity: function underlyingToken() view returns(address) +func (_IStrategy *IStrategyCallerSession) UnderlyingToken() (common.Address, error) { + return _IStrategy.Contract.UnderlyingToken(&_IStrategy.CallOpts) +} + +// UserUnderlyingView is a free data retrieval call binding the contract method 0x553ca5f8. +// +// Solidity: function userUnderlyingView(address user) view returns(uint256) +func (_IStrategy *IStrategyCaller) UserUnderlyingView(opts *bind.CallOpts, user common.Address) (*big.Int, error) { + var out []interface{} + err := _IStrategy.contract.Call(opts, &out, "userUnderlyingView", user) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UserUnderlyingView is a free data retrieval call binding the contract method 0x553ca5f8. +// +// Solidity: function userUnderlyingView(address user) view returns(uint256) +func (_IStrategy *IStrategySession) UserUnderlyingView(user common.Address) (*big.Int, error) { + return _IStrategy.Contract.UserUnderlyingView(&_IStrategy.CallOpts, user) +} + +// UserUnderlyingView is a free data retrieval call binding the contract method 0x553ca5f8. +// +// Solidity: function userUnderlyingView(address user) view returns(uint256) +func (_IStrategy *IStrategyCallerSession) UserUnderlyingView(user common.Address) (*big.Int, error) { + return _IStrategy.Contract.UserUnderlyingView(&_IStrategy.CallOpts, user) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address token, uint256 amount) returns(uint256) +func (_IStrategy *IStrategyTransactor) Deposit(opts *bind.TransactOpts, token common.Address, amount *big.Int) (*types.Transaction, error) { + return _IStrategy.contract.Transact(opts, "deposit", token, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address token, uint256 amount) returns(uint256) +func (_IStrategy *IStrategySession) Deposit(token common.Address, amount *big.Int) (*types.Transaction, error) { + return _IStrategy.Contract.Deposit(&_IStrategy.TransactOpts, token, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address token, uint256 amount) returns(uint256) +func (_IStrategy *IStrategyTransactorSession) Deposit(token common.Address, amount *big.Int) (*types.Transaction, error) { + return _IStrategy.Contract.Deposit(&_IStrategy.TransactOpts, token, amount) +} + +// SharesToUnderlying is a paid mutator transaction binding the contract method 0xf3e73875. +// +// Solidity: function sharesToUnderlying(uint256 amountShares) returns(uint256) +func (_IStrategy *IStrategyTransactor) SharesToUnderlying(opts *bind.TransactOpts, amountShares *big.Int) (*types.Transaction, error) { + return _IStrategy.contract.Transact(opts, "sharesToUnderlying", amountShares) +} + +// SharesToUnderlying is a paid mutator transaction binding the contract method 0xf3e73875. +// +// Solidity: function sharesToUnderlying(uint256 amountShares) returns(uint256) +func (_IStrategy *IStrategySession) SharesToUnderlying(amountShares *big.Int) (*types.Transaction, error) { + return _IStrategy.Contract.SharesToUnderlying(&_IStrategy.TransactOpts, amountShares) +} + +// SharesToUnderlying is a paid mutator transaction binding the contract method 0xf3e73875. +// +// Solidity: function sharesToUnderlying(uint256 amountShares) returns(uint256) +func (_IStrategy *IStrategyTransactorSession) SharesToUnderlying(amountShares *big.Int) (*types.Transaction, error) { + return _IStrategy.Contract.SharesToUnderlying(&_IStrategy.TransactOpts, amountShares) +} + +// UnderlyingToShares is a paid mutator transaction binding the contract method 0x8c871019. +// +// Solidity: function underlyingToShares(uint256 amountUnderlying) returns(uint256) +func (_IStrategy *IStrategyTransactor) UnderlyingToShares(opts *bind.TransactOpts, amountUnderlying *big.Int) (*types.Transaction, error) { + return _IStrategy.contract.Transact(opts, "underlyingToShares", amountUnderlying) +} + +// UnderlyingToShares is a paid mutator transaction binding the contract method 0x8c871019. +// +// Solidity: function underlyingToShares(uint256 amountUnderlying) returns(uint256) +func (_IStrategy *IStrategySession) UnderlyingToShares(amountUnderlying *big.Int) (*types.Transaction, error) { + return _IStrategy.Contract.UnderlyingToShares(&_IStrategy.TransactOpts, amountUnderlying) +} + +// UnderlyingToShares is a paid mutator transaction binding the contract method 0x8c871019. +// +// Solidity: function underlyingToShares(uint256 amountUnderlying) returns(uint256) +func (_IStrategy *IStrategyTransactorSession) UnderlyingToShares(amountUnderlying *big.Int) (*types.Transaction, error) { + return _IStrategy.Contract.UnderlyingToShares(&_IStrategy.TransactOpts, amountUnderlying) +} + +// UserUnderlying is a paid mutator transaction binding the contract method 0x8f6a6240. +// +// Solidity: function userUnderlying(address user) returns(uint256) +func (_IStrategy *IStrategyTransactor) UserUnderlying(opts *bind.TransactOpts, user common.Address) (*types.Transaction, error) { + return _IStrategy.contract.Transact(opts, "userUnderlying", user) +} + +// UserUnderlying is a paid mutator transaction binding the contract method 0x8f6a6240. +// +// Solidity: function userUnderlying(address user) returns(uint256) +func (_IStrategy *IStrategySession) UserUnderlying(user common.Address) (*types.Transaction, error) { + return _IStrategy.Contract.UserUnderlying(&_IStrategy.TransactOpts, user) +} + +// UserUnderlying is a paid mutator transaction binding the contract method 0x8f6a6240. +// +// Solidity: function userUnderlying(address user) returns(uint256) +func (_IStrategy *IStrategyTransactorSession) UserUnderlying(user common.Address) (*types.Transaction, error) { + return _IStrategy.Contract.UserUnderlying(&_IStrategy.TransactOpts, user) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address recipient, address token, uint256 amountShares) returns() +func (_IStrategy *IStrategyTransactor) Withdraw(opts *bind.TransactOpts, recipient common.Address, token common.Address, amountShares *big.Int) (*types.Transaction, error) { + return _IStrategy.contract.Transact(opts, "withdraw", recipient, token, amountShares) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address recipient, address token, uint256 amountShares) returns() +func (_IStrategy *IStrategySession) Withdraw(recipient common.Address, token common.Address, amountShares *big.Int) (*types.Transaction, error) { + return _IStrategy.Contract.Withdraw(&_IStrategy.TransactOpts, recipient, token, amountShares) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address recipient, address token, uint256 amountShares) returns() +func (_IStrategy *IStrategyTransactorSession) Withdraw(recipient common.Address, token common.Address, amountShares *big.Int) (*types.Transaction, error) { + return _IStrategy.Contract.Withdraw(&_IStrategy.TransactOpts, recipient, token, amountShares) +} diff --git a/pkg/bindings/IStrategy/tmp.abi b/pkg/bindings/IStrategy/tmp.abi new file mode 100644 index 000000000..0f016a7f3 --- /dev/null +++ b/pkg/bindings/IStrategy/tmp.abi @@ -0,0 +1,221 @@ +[ + { + "type": "function", + "name": "deposit", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "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": "contract IERC20" + } + ], + "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": "contract IERC20" + }, + { + "name": "amountShares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + } +] diff --git a/pkg/bindings/IStrategy/tmp.bin b/pkg/bindings/IStrategy/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/IStrategy/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/IStrategyManager/binding.go b/pkg/bindings/IStrategyManager/binding.go new file mode 100644 index 000000000..0def48cb7 --- /dev/null +++ b/pkg/bindings/IStrategyManager/binding.go @@ -0,0 +1,1320 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package IStrategyManager + +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 +) + +// IStrategyManagerDeprecatedStructQueuedWithdrawal is an auto generated low-level Go binding around an user-defined struct. +type IStrategyManagerDeprecatedStructQueuedWithdrawal struct { + Strategies []common.Address + Shares []*big.Int + Staker common.Address + WithdrawerAndNonce IStrategyManagerDeprecatedStructWithdrawerAndNonce + WithdrawalStartBlock uint32 + DelegatedAddress common.Address +} + +// IStrategyManagerDeprecatedStructWithdrawerAndNonce is an auto generated low-level Go binding around an user-defined struct. +type IStrategyManagerDeprecatedStructWithdrawerAndNonce struct { + Withdrawer common.Address + Nonce *big.Int +} + +// 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\":\"calculateWithdrawalRoot\",\"inputs\":[{\"name\":\"queuedWithdrawal\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_QueuedWithdrawal\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"components\":[{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"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\":\"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\":\"migrateQueuedWithdrawal\",\"inputs\":[{\"name\":\"queuedWithdrawal\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_QueuedWithdrawal\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"components\":[{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"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\":\"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\":\"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}]", +} + +// IStrategyManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use IStrategyManagerMetaData.ABI instead. +var IStrategyManagerABI = IStrategyManagerMetaData.ABI + +// IStrategyManager is an auto generated Go binding around an Ethereum contract. +type IStrategyManager struct { + IStrategyManagerCaller // Read-only binding to the contract + IStrategyManagerTransactor // Write-only binding to the contract + IStrategyManagerFilterer // Log filterer for contract events +} + +// IStrategyManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type IStrategyManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IStrategyManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IStrategyManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IStrategyManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IStrategyManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IStrategyManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IStrategyManagerSession struct { + Contract *IStrategyManager // 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 +} + +// IStrategyManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IStrategyManagerCallerSession struct { + Contract *IStrategyManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IStrategyManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IStrategyManagerTransactorSession struct { + Contract *IStrategyManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IStrategyManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type IStrategyManagerRaw struct { + Contract *IStrategyManager // Generic contract binding to access the raw methods on +} + +// IStrategyManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IStrategyManagerCallerRaw struct { + Contract *IStrategyManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// IStrategyManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IStrategyManagerTransactorRaw struct { + Contract *IStrategyManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIStrategyManager creates a new instance of IStrategyManager, bound to a specific deployed contract. +func NewIStrategyManager(address common.Address, backend bind.ContractBackend) (*IStrategyManager, error) { + contract, err := bindIStrategyManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IStrategyManager{IStrategyManagerCaller: IStrategyManagerCaller{contract: contract}, IStrategyManagerTransactor: IStrategyManagerTransactor{contract: contract}, IStrategyManagerFilterer: IStrategyManagerFilterer{contract: contract}}, nil +} + +// NewIStrategyManagerCaller creates a new read-only instance of IStrategyManager, bound to a specific deployed contract. +func NewIStrategyManagerCaller(address common.Address, caller bind.ContractCaller) (*IStrategyManagerCaller, error) { + contract, err := bindIStrategyManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IStrategyManagerCaller{contract: contract}, nil +} + +// NewIStrategyManagerTransactor creates a new write-only instance of IStrategyManager, bound to a specific deployed contract. +func NewIStrategyManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*IStrategyManagerTransactor, error) { + contract, err := bindIStrategyManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IStrategyManagerTransactor{contract: contract}, nil +} + +// NewIStrategyManagerFilterer creates a new log filterer instance of IStrategyManager, bound to a specific deployed contract. +func NewIStrategyManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*IStrategyManagerFilterer, error) { + contract, err := bindIStrategyManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IStrategyManagerFilterer{contract: contract}, nil +} + +// bindIStrategyManager binds a generic wrapper to an already deployed contract. +func bindIStrategyManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IStrategyManagerMetaData.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 (_IStrategyManager *IStrategyManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IStrategyManager.Contract.IStrategyManagerCaller.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 (_IStrategyManager *IStrategyManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IStrategyManager.Contract.IStrategyManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IStrategyManager *IStrategyManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IStrategyManager.Contract.IStrategyManagerTransactor.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 (_IStrategyManager *IStrategyManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IStrategyManager.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 (_IStrategyManager *IStrategyManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IStrategyManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IStrategyManager *IStrategyManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IStrategyManager.Contract.contract.Transact(opts, method, params...) +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0xb43b514b. +// +// Solidity: function calculateWithdrawalRoot((address[],uint256[],address,(address,uint96),uint32,address) queuedWithdrawal) pure returns(bytes32) +func (_IStrategyManager *IStrategyManagerCaller) CalculateWithdrawalRoot(opts *bind.CallOpts, queuedWithdrawal IStrategyManagerDeprecatedStructQueuedWithdrawal) ([32]byte, error) { + var out []interface{} + err := _IStrategyManager.contract.Call(opts, &out, "calculateWithdrawalRoot", queuedWithdrawal) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0xb43b514b. +// +// Solidity: function calculateWithdrawalRoot((address[],uint256[],address,(address,uint96),uint32,address) queuedWithdrawal) pure returns(bytes32) +func (_IStrategyManager *IStrategyManagerSession) CalculateWithdrawalRoot(queuedWithdrawal IStrategyManagerDeprecatedStructQueuedWithdrawal) ([32]byte, error) { + return _IStrategyManager.Contract.CalculateWithdrawalRoot(&_IStrategyManager.CallOpts, queuedWithdrawal) +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0xb43b514b. +// +// Solidity: function calculateWithdrawalRoot((address[],uint256[],address,(address,uint96),uint32,address) queuedWithdrawal) pure returns(bytes32) +func (_IStrategyManager *IStrategyManagerCallerSession) CalculateWithdrawalRoot(queuedWithdrawal IStrategyManagerDeprecatedStructQueuedWithdrawal) ([32]byte, error) { + return _IStrategyManager.Contract.CalculateWithdrawalRoot(&_IStrategyManager.CallOpts, queuedWithdrawal) +} + +// Delegation is a free data retrieval call binding the contract method 0xdf5cf723. +// +// 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, "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 (_IStrategyManager *IStrategyManagerSession) Delegation() (common.Address, error) { + return _IStrategyManager.Contract.Delegation(&_IStrategyManager.CallOpts) +} + +// Delegation is a free data retrieval call binding the contract method 0xdf5cf723. +// +// 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. +// +// Solidity: function eigenPodManager() view returns(address) +func (_IStrategyManager *IStrategyManagerCaller) EigenPodManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IStrategyManager.contract.Call(opts, &out, "eigenPodManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_IStrategyManager *IStrategyManagerSession) EigenPodManager() (common.Address, error) { + return _IStrategyManager.Contract.EigenPodManager(&_IStrategyManager.CallOpts) +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_IStrategyManager *IStrategyManagerCallerSession) EigenPodManager() (common.Address, error) { + return _IStrategyManager.Contract.EigenPodManager(&_IStrategyManager.CallOpts) +} + +// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd. +// +// Solidity: function getDeposits(address staker) view returns(address[], uint256[]) +func (_IStrategyManager *IStrategyManagerCaller) GetDeposits(opts *bind.CallOpts, staker common.Address) ([]common.Address, []*big.Int, error) { + var out []interface{} + err := _IStrategyManager.contract.Call(opts, &out, "getDeposits", staker) + + if err != nil { + return *new([]common.Address), *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + out1 := *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int) + + return out0, out1, err + +} + +// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd. +// +// Solidity: function getDeposits(address staker) view returns(address[], uint256[]) +func (_IStrategyManager *IStrategyManagerSession) GetDeposits(staker common.Address) ([]common.Address, []*big.Int, error) { + return _IStrategyManager.Contract.GetDeposits(&_IStrategyManager.CallOpts, staker) +} + +// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd. +// +// Solidity: function getDeposits(address staker) view returns(address[], uint256[]) +func (_IStrategyManager *IStrategyManagerCallerSession) GetDeposits(staker common.Address) ([]common.Address, []*big.Int, error) { + return _IStrategyManager.Contract.GetDeposits(&_IStrategyManager.CallOpts, staker) +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_IStrategyManager *IStrategyManagerCaller) Slasher(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IStrategyManager.contract.Call(opts, &out, "slasher") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_IStrategyManager *IStrategyManagerSession) Slasher() (common.Address, error) { + return _IStrategyManager.Contract.Slasher(&_IStrategyManager.CallOpts) +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_IStrategyManager *IStrategyManagerCallerSession) Slasher() (common.Address, error) { + return _IStrategyManager.Contract.Slasher(&_IStrategyManager.CallOpts) +} + +// StakerStrategyListLength is a free data retrieval call binding the contract method 0x8b8aac3c. +// +// 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, "stakerStrategyListLength", staker) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// StakerStrategyListLength is a free data retrieval call binding the contract method 0x8b8aac3c. +// +// 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) +} + +// StakerStrategyListLength is a free data retrieval call binding the contract method 0x8b8aac3c. +// +// 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) +} + +// StakerStrategyShares is a free data retrieval call binding the contract method 0x7a7e0d92. +// +// 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) { + var out []interface{} + err := _IStrategyManager.contract.Call(opts, &out, "stakerStrategyShares", user, strategy) + + 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 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) +} + +// StakerStrategyShares is a free data retrieval call binding the contract method 0x7a7e0d92. +// +// 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) +} + +// StrategyWhitelister is a free data retrieval call binding the contract method 0x967fc0d2. +// +// Solidity: function strategyWhitelister() view returns(address) +func (_IStrategyManager *IStrategyManagerCaller) StrategyWhitelister(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IStrategyManager.contract.Call(opts, &out, "strategyWhitelister") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// StrategyWhitelister is a free data retrieval call binding the contract method 0x967fc0d2. +// +// Solidity: function strategyWhitelister() view returns(address) +func (_IStrategyManager *IStrategyManagerSession) StrategyWhitelister() (common.Address, error) { + return _IStrategyManager.Contract.StrategyWhitelister(&_IStrategyManager.CallOpts) +} + +// StrategyWhitelister is a free data retrieval call binding the contract method 0x967fc0d2. +// +// Solidity: function strategyWhitelister() view returns(address) +func (_IStrategyManager *IStrategyManagerCallerSession) StrategyWhitelister() (common.Address, error) { + return _IStrategyManager.Contract.StrategyWhitelister(&_IStrategyManager.CallOpts) +} + +// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d. +// +// 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 + +} + +// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d. +// +// Solidity: function thirdPartyTransfersForbidden(address strategy) view returns(bool) +func (_IStrategyManager *IStrategyManagerSession) ThirdPartyTransfersForbidden(strategy common.Address) (bool, error) { + return _IStrategyManager.Contract.ThirdPartyTransfersForbidden(&_IStrategyManager.CallOpts, strategy) +} + +// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d. +// +// Solidity: function thirdPartyTransfersForbidden(address strategy) view returns(bool) +func (_IStrategyManager *IStrategyManagerCallerSession) ThirdPartyTransfersForbidden(strategy common.Address) (bool, error) { + return _IStrategyManager.Contract.ThirdPartyTransfersForbidden(&_IStrategyManager.CallOpts, strategy) +} + +// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1. +// +// 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) +} + +// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1. +// +// 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) +} + +// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1. +// +// 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) +} + +// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547. +// +// 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) +} + +// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547. +// +// 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) +} + +// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547. +// +// 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) +} + +// DepositIntoStrategy is a paid mutator transaction binding the contract method 0xe7a050aa. +// +// Solidity: function depositIntoStrategy(address strategy, address token, uint256 amount) returns(uint256 shares) +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) +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) +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) +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) +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) +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) +} + +// MigrateQueuedWithdrawal is a paid mutator transaction binding the contract method 0xcd293f6f. +// +// Solidity: function migrateQueuedWithdrawal((address[],uint256[],address,(address,uint96),uint32,address) queuedWithdrawal) returns(bool, bytes32) +func (_IStrategyManager *IStrategyManagerTransactor) MigrateQueuedWithdrawal(opts *bind.TransactOpts, queuedWithdrawal IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _IStrategyManager.contract.Transact(opts, "migrateQueuedWithdrawal", queuedWithdrawal) +} + +// MigrateQueuedWithdrawal is a paid mutator transaction binding the contract method 0xcd293f6f. +// +// Solidity: function migrateQueuedWithdrawal((address[],uint256[],address,(address,uint96),uint32,address) queuedWithdrawal) returns(bool, bytes32) +func (_IStrategyManager *IStrategyManagerSession) MigrateQueuedWithdrawal(queuedWithdrawal IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _IStrategyManager.Contract.MigrateQueuedWithdrawal(&_IStrategyManager.TransactOpts, queuedWithdrawal) +} + +// MigrateQueuedWithdrawal is a paid mutator transaction binding the contract method 0xcd293f6f. +// +// Solidity: function migrateQueuedWithdrawal((address[],uint256[],address,(address,uint96),uint32,address) queuedWithdrawal) returns(bool, bytes32) +func (_IStrategyManager *IStrategyManagerTransactorSession) MigrateQueuedWithdrawal(queuedWithdrawal IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _IStrategyManager.Contract.MigrateQueuedWithdrawal(&_IStrategyManager.TransactOpts, queuedWithdrawal) +} + +// RemoveShares is a paid mutator transaction binding the contract method 0x8c80d4e5. +// +// 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) +} + +// RemoveShares is a paid mutator transaction binding the contract method 0x8c80d4e5. +// +// 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) +} + +// RemoveShares is a paid mutator transaction binding the contract method 0x8c80d4e5. +// +// 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) +} + +// RemoveStrategiesFromDepositWhitelist is a paid mutator transaction binding the contract method 0xb5d8b5b8. +// +// Solidity: function removeStrategiesFromDepositWhitelist(address[] strategiesToRemoveFromWhitelist) returns() +func (_IStrategyManager *IStrategyManagerTransactor) RemoveStrategiesFromDepositWhitelist(opts *bind.TransactOpts, strategiesToRemoveFromWhitelist []common.Address) (*types.Transaction, error) { + return _IStrategyManager.contract.Transact(opts, "removeStrategiesFromDepositWhitelist", strategiesToRemoveFromWhitelist) +} + +// RemoveStrategiesFromDepositWhitelist is a paid mutator transaction binding the contract method 0xb5d8b5b8. +// +// Solidity: function removeStrategiesFromDepositWhitelist(address[] strategiesToRemoveFromWhitelist) returns() +func (_IStrategyManager *IStrategyManagerSession) RemoveStrategiesFromDepositWhitelist(strategiesToRemoveFromWhitelist []common.Address) (*types.Transaction, error) { + return _IStrategyManager.Contract.RemoveStrategiesFromDepositWhitelist(&_IStrategyManager.TransactOpts, strategiesToRemoveFromWhitelist) +} + +// RemoveStrategiesFromDepositWhitelist is a paid mutator transaction binding the contract method 0xb5d8b5b8. +// +// Solidity: function removeStrategiesFromDepositWhitelist(address[] strategiesToRemoveFromWhitelist) returns() +func (_IStrategyManager *IStrategyManagerTransactorSession) RemoveStrategiesFromDepositWhitelist(strategiesToRemoveFromWhitelist []common.Address) (*types.Transaction, error) { + return _IStrategyManager.Contract.RemoveStrategiesFromDepositWhitelist(&_IStrategyManager.TransactOpts, strategiesToRemoveFromWhitelist) +} + +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0xc608c7f3. +// +// 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) +} + +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0xc608c7f3. +// +// 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) +} + +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0xc608c7f3. +// +// 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) +} + +// 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 + + 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 *IStrategyManagerDepositIterator) 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(IStrategyManagerDeposit) + 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(IStrategyManagerDeposit) + 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 *IStrategyManagerDepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IStrategyManagerDepositIterator) 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 + 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. +// +// Solidity: event Deposit(address staker, address token, address strategy, uint256 shares) +func (_IStrategyManager *IStrategyManagerFilterer) FilterDeposit(opts *bind.FilterOpts) (*IStrategyManagerDepositIterator, error) { + + logs, sub, err := _IStrategyManager.contract.FilterLogs(opts, "Deposit") + if err != nil { + return nil, err + } + return &IStrategyManagerDepositIterator{contract: _IStrategyManager.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a96. +// +// Solidity: event Deposit(address staker, address token, address strategy, uint256 shares) +func (_IStrategyManager *IStrategyManagerFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *IStrategyManagerDeposit) (event.Subscription, error) { + + logs, sub, err := _IStrategyManager.contract.WatchLogs(opts, "Deposit") + 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(IStrategyManagerDeposit) + if err := _IStrategyManager.contract.UnpackLog(event, "Deposit", 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 +} + +// ParseDeposit is a log parse operation binding the contract event 0x7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a96. +// +// 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 { + 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 + + 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 *IStrategyManagerStrategyAddedToDepositWhitelistIterator) 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(IStrategyManagerStrategyAddedToDepositWhitelist) + 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(IStrategyManagerStrategyAddedToDepositWhitelist) + 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 *IStrategyManagerStrategyAddedToDepositWhitelistIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IStrategyManagerStrategyAddedToDepositWhitelistIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IStrategyManagerStrategyAddedToDepositWhitelist represents a StrategyAddedToDepositWhitelist event raised by the IStrategyManager contract. +type IStrategyManagerStrategyAddedToDepositWhitelist struct { + Strategy common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterStrategyAddedToDepositWhitelist is a free log retrieval operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe. +// +// Solidity: event StrategyAddedToDepositWhitelist(address strategy) +func (_IStrategyManager *IStrategyManagerFilterer) FilterStrategyAddedToDepositWhitelist(opts *bind.FilterOpts) (*IStrategyManagerStrategyAddedToDepositWhitelistIterator, error) { + + logs, sub, err := _IStrategyManager.contract.FilterLogs(opts, "StrategyAddedToDepositWhitelist") + if err != nil { + return nil, err + } + return &IStrategyManagerStrategyAddedToDepositWhitelistIterator{contract: _IStrategyManager.contract, event: "StrategyAddedToDepositWhitelist", logs: logs, sub: sub}, nil +} + +// WatchStrategyAddedToDepositWhitelist is a free log subscription operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe. +// +// 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, "StrategyAddedToDepositWhitelist") + 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(IStrategyManagerStrategyAddedToDepositWhitelist) + if err := _IStrategyManager.contract.UnpackLog(event, "StrategyAddedToDepositWhitelist", 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 +} + +// ParseStrategyAddedToDepositWhitelist is a log parse operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe. +// +// 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 +} + +// 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 + + 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 *IStrategyManagerStrategyRemovedFromDepositWhitelistIterator) 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(IStrategyManagerStrategyRemovedFromDepositWhitelist) + 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(IStrategyManagerStrategyRemovedFromDepositWhitelist) + 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 *IStrategyManagerStrategyRemovedFromDepositWhitelistIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IStrategyManagerStrategyRemovedFromDepositWhitelistIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IStrategyManagerStrategyRemovedFromDepositWhitelist represents a StrategyRemovedFromDepositWhitelist event raised by the IStrategyManager contract. +type IStrategyManagerStrategyRemovedFromDepositWhitelist struct { + Strategy common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterStrategyRemovedFromDepositWhitelist is a free log retrieval operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030. +// +// Solidity: event StrategyRemovedFromDepositWhitelist(address strategy) +func (_IStrategyManager *IStrategyManagerFilterer) FilterStrategyRemovedFromDepositWhitelist(opts *bind.FilterOpts) (*IStrategyManagerStrategyRemovedFromDepositWhitelistIterator, error) { + + logs, sub, err := _IStrategyManager.contract.FilterLogs(opts, "StrategyRemovedFromDepositWhitelist") + if err != nil { + return nil, err + } + return &IStrategyManagerStrategyRemovedFromDepositWhitelistIterator{contract: _IStrategyManager.contract, event: "StrategyRemovedFromDepositWhitelist", logs: logs, sub: sub}, nil +} + +// WatchStrategyRemovedFromDepositWhitelist is a free log subscription operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030. +// +// 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, "StrategyRemovedFromDepositWhitelist") + 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(IStrategyManagerStrategyRemovedFromDepositWhitelist) + if err := _IStrategyManager.contract.UnpackLog(event, "StrategyRemovedFromDepositWhitelist", 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 +} + +// ParseStrategyRemovedFromDepositWhitelist is a log parse operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030. +// +// 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 +} + +// 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 + + 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 *IStrategyManagerStrategyWhitelisterChangedIterator) 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(IStrategyManagerStrategyWhitelisterChanged) + 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(IStrategyManagerStrategyWhitelisterChanged) + 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 *IStrategyManagerStrategyWhitelisterChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IStrategyManagerStrategyWhitelisterChangedIterator) 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 +} + +// FilterStrategyWhitelisterChanged is a free log retrieval operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29. +// +// Solidity: event StrategyWhitelisterChanged(address previousAddress, address newAddress) +func (_IStrategyManager *IStrategyManagerFilterer) FilterStrategyWhitelisterChanged(opts *bind.FilterOpts) (*IStrategyManagerStrategyWhitelisterChangedIterator, error) { + + logs, sub, err := _IStrategyManager.contract.FilterLogs(opts, "StrategyWhitelisterChanged") + if err != nil { + return nil, err + } + return &IStrategyManagerStrategyWhitelisterChangedIterator{contract: _IStrategyManager.contract, event: "StrategyWhitelisterChanged", logs: logs, sub: sub}, nil +} + +// WatchStrategyWhitelisterChanged is a free log subscription operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29. +// +// 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, "StrategyWhitelisterChanged") + 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(IStrategyManagerStrategyWhitelisterChanged) + if err := _IStrategyManager.contract.UnpackLog(event, "StrategyWhitelisterChanged", 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 +} + +// ParseStrategyWhitelisterChanged is a log parse operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29. +// +// 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 + 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 + + 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 *IStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator) 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(IStrategyManagerUpdatedThirdPartyTransfersForbidden) + 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(IStrategyManagerUpdatedThirdPartyTransfersForbidden) + 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 *IStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator) 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 +} + +// FilterUpdatedThirdPartyTransfersForbidden is a free log retrieval operation binding the contract event 0x77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786. +// +// Solidity: event UpdatedThirdPartyTransfersForbidden(address strategy, bool value) +func (_IStrategyManager *IStrategyManagerFilterer) FilterUpdatedThirdPartyTransfersForbidden(opts *bind.FilterOpts) (*IStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator, error) { + + logs, sub, err := _IStrategyManager.contract.FilterLogs(opts, "UpdatedThirdPartyTransfersForbidden") + if err != nil { + return nil, err + } + return &IStrategyManagerUpdatedThirdPartyTransfersForbiddenIterator{contract: _IStrategyManager.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 (_IStrategyManager *IStrategyManagerFilterer) WatchUpdatedThirdPartyTransfersForbidden(opts *bind.WatchOpts, sink chan<- *IStrategyManagerUpdatedThirdPartyTransfersForbidden) (event.Subscription, error) { + + logs, sub, err := _IStrategyManager.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(IStrategyManagerUpdatedThirdPartyTransfersForbidden) + if err := _IStrategyManager.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 (_IStrategyManager *IStrategyManagerFilterer) ParseUpdatedThirdPartyTransfersForbidden(log types.Log) (*IStrategyManagerUpdatedThirdPartyTransfersForbidden, error) { + event := new(IStrategyManagerUpdatedThirdPartyTransfersForbidden) + if err := _IStrategyManager.contract.UnpackLog(event, "UpdatedThirdPartyTransfersForbidden", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/IStrategyManager/tmp.abi b/pkg/bindings/IStrategyManager/tmp.abi new file mode 100644 index 000000000..57baf1be8 --- /dev/null +++ b/pkg/bindings/IStrategyManager/tmp.abi @@ -0,0 +1,549 @@ +[ + { + "type": "function", + "name": "addShares", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "addStrategiesToDepositWhitelist", + "inputs": [ + { + "name": "strategiesToWhitelist", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "thirdPartyTransfersForbiddenValues", + "type": "bool[]", + "internalType": "bool[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "calculateWithdrawalRoot", + "inputs": [ + { + "name": "queuedWithdrawal", + "type": "tuple", + "internalType": "struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal", + "components": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "withdrawerAndNonce", + "type": "tuple", + "internalType": "struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce", + "components": [ + { + "name": "withdrawer", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "name": "withdrawalStartBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "delegatedAddress", + "type": "address", + "internalType": "address" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "delegation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "depositIntoStrategy", + "inputs": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "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": "contract IStrategy" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "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": "eigenPodManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IEigenPodManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getDeposits", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "migrateQueuedWithdrawal", + "inputs": [ + { + "name": "queuedWithdrawal", + "type": "tuple", + "internalType": "struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal", + "components": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "withdrawerAndNonce", + "type": "tuple", + "internalType": "struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce", + "components": [ + { + "name": "withdrawer", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "name": "withdrawalStartBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "delegatedAddress", + "type": "address", + "internalType": "address" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "removeShares", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "removeStrategiesFromDepositWhitelist", + "inputs": [ + { + "name": "strategiesToRemoveFromWhitelist", + "type": "address[]", + "internalType": "contract IStrategy[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "slasher", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ISlasher" + } + ], + "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": "contract IStrategy" + } + ], + "outputs": [ + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "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": "contract IStrategy" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "withdrawSharesAsTokens", + "inputs": [ + { + "name": "recipient", + "type": "address", + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Deposit", + "inputs": [ + { + "name": "staker", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "contract IERC20" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyAddedToDepositWhitelist", + "inputs": [ + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyRemovedFromDepositWhitelist", + "inputs": [ + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + } + ], + "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": "contract IStrategy" + }, + { + "name": "value", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + } +] diff --git a/pkg/bindings/IStrategyManager/tmp.bin b/pkg/bindings/IStrategyManager/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/IStrategyManager/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/IWhitelister/binding.go b/pkg/bindings/IWhitelister/binding.go new file mode 100644 index 000000000..e4afb3731 --- /dev/null +++ b/pkg/bindings/IWhitelister/binding.go @@ -0,0 +1,346 @@ +// 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/IWhitelister/tmp.abi b/pkg/bindings/IWhitelister/tmp.abi new file mode 100644 index 000000000..69ed9f391 --- /dev/null +++ b/pkg/bindings/IWhitelister/tmp.abi @@ -0,0 +1,243 @@ +[ + { + "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": "struct IDelegationManager.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": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + }, + { + "name": "tokens", + "type": "address[]", + "internalType": "contract IERC20[]" + }, + { + "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": "contract IStrategy" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "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": "struct IDelegationManager.QueuedWithdrawalParams[]", + "components": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "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" + } +] diff --git a/pkg/bindings/IWhitelister/tmp.bin b/pkg/bindings/IWhitelister/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/IWhitelister/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/Merkle/binding.go b/pkg/bindings/Merkle/binding.go new file mode 100644 index 000000000..fd0917459 --- /dev/null +++ b/pkg/bindings/Merkle/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 Merkle + +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 +) + +// MerkleMetaData contains all meta data concerning the Merkle contract. +var MerkleMetaData = &bind.MetaData{ + ABI: "[]", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220050367bd6c8a531653c81a99d97d97570ae407c226bb65075d03579e52787e7c64736f6c634300080c0033", +} + +// MerkleABI is the input ABI used to generate the binding from. +// Deprecated: Use MerkleMetaData.ABI instead. +var MerkleABI = MerkleMetaData.ABI + +// MerkleBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use MerkleMetaData.Bin instead. +var MerkleBin = MerkleMetaData.Bin + +// DeployMerkle deploys a new Ethereum contract, binding an instance of Merkle to it. +func DeployMerkle(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Merkle, error) { + parsed, err := MerkleMetaData.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(MerkleBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Merkle{MerkleCaller: MerkleCaller{contract: contract}, MerkleTransactor: MerkleTransactor{contract: contract}, MerkleFilterer: MerkleFilterer{contract: contract}}, nil +} + +// Merkle is an auto generated Go binding around an Ethereum contract. +type Merkle struct { + MerkleCaller // Read-only binding to the contract + MerkleTransactor // Write-only binding to the contract + MerkleFilterer // Log filterer for contract events +} + +// MerkleCaller is an auto generated read-only Go binding around an Ethereum contract. +type MerkleCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MerkleTransactor is an auto generated write-only Go binding around an Ethereum contract. +type MerkleTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MerkleFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type MerkleFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// MerkleSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type MerkleSession struct { + Contract *Merkle // 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 +} + +// MerkleCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type MerkleCallerSession struct { + Contract *MerkleCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// MerkleTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type MerkleTransactorSession struct { + Contract *MerkleTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// MerkleRaw is an auto generated low-level Go binding around an Ethereum contract. +type MerkleRaw struct { + Contract *Merkle // Generic contract binding to access the raw methods on +} + +// MerkleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type MerkleCallerRaw struct { + Contract *MerkleCaller // Generic read-only contract binding to access the raw methods on +} + +// MerkleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type MerkleTransactorRaw struct { + Contract *MerkleTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewMerkle creates a new instance of Merkle, bound to a specific deployed contract. +func NewMerkle(address common.Address, backend bind.ContractBackend) (*Merkle, error) { + contract, err := bindMerkle(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Merkle{MerkleCaller: MerkleCaller{contract: contract}, MerkleTransactor: MerkleTransactor{contract: contract}, MerkleFilterer: MerkleFilterer{contract: contract}}, nil +} + +// NewMerkleCaller creates a new read-only instance of Merkle, bound to a specific deployed contract. +func NewMerkleCaller(address common.Address, caller bind.ContractCaller) (*MerkleCaller, error) { + contract, err := bindMerkle(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &MerkleCaller{contract: contract}, nil +} + +// NewMerkleTransactor creates a new write-only instance of Merkle, bound to a specific deployed contract. +func NewMerkleTransactor(address common.Address, transactor bind.ContractTransactor) (*MerkleTransactor, error) { + contract, err := bindMerkle(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &MerkleTransactor{contract: contract}, nil +} + +// NewMerkleFilterer creates a new log filterer instance of Merkle, bound to a specific deployed contract. +func NewMerkleFilterer(address common.Address, filterer bind.ContractFilterer) (*MerkleFilterer, error) { + contract, err := bindMerkle(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &MerkleFilterer{contract: contract}, nil +} + +// bindMerkle binds a generic wrapper to an already deployed contract. +func bindMerkle(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := MerkleMetaData.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 (_Merkle *MerkleRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Merkle.Contract.MerkleCaller.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 (_Merkle *MerkleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Merkle.Contract.MerkleTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Merkle *MerkleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Merkle.Contract.MerkleTransactor.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 (_Merkle *MerkleCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Merkle.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 (_Merkle *MerkleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Merkle.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Merkle *MerkleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Merkle.Contract.contract.Transact(opts, method, params...) +} diff --git a/pkg/bindings/Merkle/tmp.abi b/pkg/bindings/Merkle/tmp.abi new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/pkg/bindings/Merkle/tmp.abi @@ -0,0 +1 @@ +[] diff --git a/pkg/bindings/Merkle/tmp.bin b/pkg/bindings/Merkle/tmp.bin new file mode 100644 index 000000000..31c01e8f4 --- /dev/null +++ b/pkg/bindings/Merkle/tmp.bin @@ -0,0 +1 @@ +0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220050367bd6c8a531653c81a99d97d97570ae407c226bb65075d03579e52787e7c64736f6c634300080c0033 diff --git a/pkg/bindings/Pausable/binding.go b/pkg/bindings/Pausable/binding.go new file mode 100644 index 000000000..e6ac9bd74 --- /dev/null +++ b/pkg/bindings/Pausable/binding.go @@ -0,0 +1,805 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package Pausable + +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 +) + +// 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: "0x608060405234801561001057600080fd5b506107c2806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635ac86ab71161005b5780635ac86ab7146100b25780635c975abb146100e6578063886f1195146100f7578063fabc1cbc1461012257600080fd5b806310d67a2f14610082578063136439dd14610097578063595c6a67146100aa575b600080fd5b61009561009036600461065b565b610135565b005b6100956100a536600461067f565b6101ef565b61009561032e565b6100d16100c0366004610698565b6001805460ff9092161b9081161490565b60405190151581526020015b60405180910390f35b6001546040519081526020016100dd565b60005461010a906001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b61009561013036600461067f565b6103f5565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101aa91906106bb565b6001600160a01b0316336001600160a01b0316146101e35760405162461bcd60e51b81526004016101da906106d8565b60405180910390fd5b6101ec8161054f565b50565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025b9190610722565b6102775760405162461bcd60e51b81526004016101da90610744565b600154818116146102f05760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016101da565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190610722565b6103b65760405162461bcd60e51b81526004016101da90610744565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046a91906106bb565b6001600160a01b0316336001600160a01b03161461049a5760405162461bcd60e51b81526004016101da906106d8565b6001541981196001541916146105185760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016101da565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610323565b6001600160a01b0381166105dd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016101da565b600054604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146101ec57600080fd5b60006020828403121561066d57600080fd5b813561067881610646565b9392505050565b60006020828403121561069157600080fd5b5035919050565b6000602082840312156106aa57600080fd5b813560ff8116811461067857600080fd5b6000602082840312156106cd57600080fd5b815161067881610646565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561073457600080fd5b8151801515811461067857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea2646970667358221220243792d6754d03382df6219e1de0b166a55ec1b4397bc2698c96c8a0ad69aa5164736f6c634300080c0033", +} + +// 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 + PausableTransactor // Write-only binding to the contract + PausableFilterer // Log filterer for contract events +} + +// PausableCaller is an auto generated read-only Go binding around an Ethereum contract. +type PausableCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PausableTransactor is an auto generated write-only Go binding around an Ethereum contract. +type PausableTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PausableFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type PausableFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PausableSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type PausableSession struct { + Contract *Pausable // 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 +} + +// PausableCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type PausableCallerSession struct { + Contract *PausableCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// PausableTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type PausableTransactorSession struct { + Contract *PausableTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PausableRaw is an auto generated low-level Go binding around an Ethereum contract. +type PausableRaw struct { + Contract *Pausable // Generic contract binding to access the raw methods on +} + +// PausableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type PausableCallerRaw struct { + Contract *PausableCaller // Generic read-only contract binding to access the raw methods on +} + +// PausableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type PausableTransactorRaw struct { + Contract *PausableTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewPausable creates a new instance of Pausable, bound to a specific deployed contract. +func NewPausable(address common.Address, backend bind.ContractBackend) (*Pausable, error) { + contract, err := bindPausable(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Pausable{PausableCaller: PausableCaller{contract: contract}, PausableTransactor: PausableTransactor{contract: contract}, PausableFilterer: PausableFilterer{contract: contract}}, nil +} + +// NewPausableCaller creates a new read-only instance of Pausable, bound to a specific deployed contract. +func NewPausableCaller(address common.Address, caller bind.ContractCaller) (*PausableCaller, error) { + contract, err := bindPausable(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &PausableCaller{contract: contract}, nil +} + +// NewPausableTransactor creates a new write-only instance of Pausable, bound to a specific deployed contract. +func NewPausableTransactor(address common.Address, transactor bind.ContractTransactor) (*PausableTransactor, error) { + contract, err := bindPausable(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &PausableTransactor{contract: contract}, nil +} + +// NewPausableFilterer creates a new log filterer instance of Pausable, bound to a specific deployed contract. +func NewPausableFilterer(address common.Address, filterer bind.ContractFilterer) (*PausableFilterer, error) { + contract, err := bindPausable(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &PausableFilterer{contract: contract}, nil +} + +// bindPausable binds a generic wrapper to an already deployed contract. +func bindPausable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := PausableMetaData.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 (_Pausable *PausableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Pausable.Contract.PausableCaller.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 (_Pausable *PausableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Pausable.Contract.PausableTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Pausable *PausableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Pausable.Contract.PausableTransactor.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 (_Pausable *PausableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Pausable.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 (_Pausable *PausableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Pausable.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Pausable *PausableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Pausable.Contract.contract.Transact(opts, method, params...) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_Pausable *PausableCaller) Paused(opts *bind.CallOpts, index uint8) (bool, error) { + var out []interface{} + err := _Pausable.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 (_Pausable *PausableSession) Paused(index uint8) (bool, error) { + return _Pausable.Contract.Paused(&_Pausable.CallOpts, index) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_Pausable *PausableCallerSession) Paused(index uint8) (bool, error) { + return _Pausable.Contract.Paused(&_Pausable.CallOpts, index) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_Pausable *PausableCaller) Paused0(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Pausable.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 (_Pausable *PausableSession) Paused0() (*big.Int, error) { + return _Pausable.Contract.Paused0(&_Pausable.CallOpts) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_Pausable *PausableCallerSession) Paused0() (*big.Int, error) { + return _Pausable.Contract.Paused0(&_Pausable.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_Pausable *PausableCaller) PauserRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Pausable.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 (_Pausable *PausableSession) PauserRegistry() (common.Address, error) { + return _Pausable.Contract.PauserRegistry(&_Pausable.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_Pausable *PausableCallerSession) PauserRegistry() (common.Address, error) { + return _Pausable.Contract.PauserRegistry(&_Pausable.CallOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_Pausable *PausableTransactor) Pause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _Pausable.contract.Transact(opts, "pause", newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_Pausable *PausableSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _Pausable.Contract.Pause(&_Pausable.TransactOpts, newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_Pausable *PausableTransactorSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _Pausable.Contract.Pause(&_Pausable.TransactOpts, newPausedStatus) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_Pausable *PausableTransactor) PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Pausable.contract.Transact(opts, "pauseAll") +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_Pausable *PausableSession) PauseAll() (*types.Transaction, error) { + return _Pausable.Contract.PauseAll(&_Pausable.TransactOpts) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_Pausable *PausableTransactorSession) PauseAll() (*types.Transaction, error) { + 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() +func (_Pausable *PausableTransactor) Unpause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _Pausable.contract.Transact(opts, "unpause", newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_Pausable *PausableSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _Pausable.Contract.Unpause(&_Pausable.TransactOpts, newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_Pausable *PausableTransactorSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _Pausable.Contract.Unpause(&_Pausable.TransactOpts, newPausedStatus) +} + +// PausablePausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the Pausable contract. +type PausablePausedIterator struct { + Event *PausablePaused // Event containing the contract specifics 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 *PausablePausedIterator) 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(PausablePaused) + 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(PausablePaused) + 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 *PausablePausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PausablePausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PausablePaused represents a Paused event raised by the Pausable contract. +type PausablePaused 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 (_Pausable *PausableFilterer) FilterPaused(opts *bind.FilterOpts, account []common.Address) (*PausablePausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _Pausable.contract.FilterLogs(opts, "Paused", accountRule) + if err != nil { + return nil, err + } + return &PausablePausedIterator{contract: _Pausable.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 (_Pausable *PausableFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *PausablePaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _Pausable.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(PausablePaused) + if err := _Pausable.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 (_Pausable *PausableFilterer) ParsePaused(log types.Log) (*PausablePaused, error) { + event := new(PausablePaused) + if err := _Pausable.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + 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 + + 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 *PausableUnpausedIterator) 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(PausableUnpaused) + 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(PausableUnpaused) + 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 *PausableUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PausableUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PausableUnpaused represents a Unpaused event raised by the Pausable contract. +type PausableUnpaused 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 (_Pausable *PausableFilterer) FilterUnpaused(opts *bind.FilterOpts, account []common.Address) (*PausableUnpausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _Pausable.contract.FilterLogs(opts, "Unpaused", accountRule) + if err != nil { + return nil, err + } + return &PausableUnpausedIterator{contract: _Pausable.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 (_Pausable *PausableFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *PausableUnpaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _Pausable.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(PausableUnpaused) + if err := _Pausable.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 (_Pausable *PausableFilterer) ParseUnpaused(log types.Log) (*PausableUnpaused, error) { + event := new(PausableUnpaused) + if err := _Pausable.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/Pausable/tmp.abi b/pkg/bindings/Pausable/tmp.abi new file mode 100644 index 000000000..cb2146604 --- /dev/null +++ b/pkg/bindings/Pausable/tmp.abi @@ -0,0 +1,150 @@ +[ + { + "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": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "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": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "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 + } +] diff --git a/pkg/bindings/Pausable/tmp.bin b/pkg/bindings/Pausable/tmp.bin new file mode 100644 index 000000000..40375427b --- /dev/null +++ b/pkg/bindings/Pausable/tmp.bin @@ -0,0 +1 @@ +0x608060405234801561001057600080fd5b506107c2806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635ac86ab71161005b5780635ac86ab7146100b25780635c975abb146100e6578063886f1195146100f7578063fabc1cbc1461012257600080fd5b806310d67a2f14610082578063136439dd14610097578063595c6a67146100aa575b600080fd5b61009561009036600461065b565b610135565b005b6100956100a536600461067f565b6101ef565b61009561032e565b6100d16100c0366004610698565b6001805460ff9092161b9081161490565b60405190151581526020015b60405180910390f35b6001546040519081526020016100dd565b60005461010a906001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b61009561013036600461067f565b6103f5565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101aa91906106bb565b6001600160a01b0316336001600160a01b0316146101e35760405162461bcd60e51b81526004016101da906106d8565b60405180910390fd5b6101ec8161054f565b50565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025b9190610722565b6102775760405162461bcd60e51b81526004016101da90610744565b600154818116146102f05760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016101da565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60005460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190610722565b6103b65760405162461bcd60e51b81526004016101da90610744565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046a91906106bb565b6001600160a01b0316336001600160a01b03161461049a5760405162461bcd60e51b81526004016101da906106d8565b6001541981196001541916146105185760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016101da565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610323565b6001600160a01b0381166105dd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016101da565b600054604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146101ec57600080fd5b60006020828403121561066d57600080fd5b813561067881610646565b9392505050565b60006020828403121561069157600080fd5b5035919050565b6000602082840312156106aa57600080fd5b813560ff8116811461067857600080fd5b6000602082840312156106cd57600080fd5b815161067881610646565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561073457600080fd5b8151801515811461067857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea2646970667358221220243792d6754d03382df6219e1de0b166a55ec1b4397bc2698c96c8a0ad69aa5164736f6c634300080c0033 diff --git a/pkg/bindings/PauserRegistry/binding.go b/pkg/bindings/PauserRegistry/binding.go new file mode 100644 index 000000000..c3be44491 --- /dev/null +++ b/pkg/bindings/PauserRegistry/binding.go @@ -0,0 +1,577 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package PauserRegistry + +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 +) + +// 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: "0x608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea264697066735822122082c17cbba412d9a44621d8a07946e79322d6248e2e7c652573dcc2c61babeb8c64736f6c634300080c0033", +} + +// PauserRegistryABI is the input ABI used to generate the binding from. +// Deprecated: Use PauserRegistryMetaData.ABI instead. +var PauserRegistryABI = PauserRegistryMetaData.ABI + +// PauserRegistryBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use PauserRegistryMetaData.Bin instead. +var PauserRegistryBin = PauserRegistryMetaData.Bin + +// DeployPauserRegistry deploys a new Ethereum contract, binding an instance of PauserRegistry to it. +func DeployPauserRegistry(auth *bind.TransactOpts, backend bind.ContractBackend, _pausers []common.Address, _unpauser common.Address) (common.Address, *types.Transaction, *PauserRegistry, error) { + parsed, err := PauserRegistryMetaData.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(PauserRegistryBin), backend, _pausers, _unpauser) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &PauserRegistry{PauserRegistryCaller: PauserRegistryCaller{contract: contract}, PauserRegistryTransactor: PauserRegistryTransactor{contract: contract}, PauserRegistryFilterer: PauserRegistryFilterer{contract: contract}}, nil +} + +// PauserRegistry is an auto generated Go binding around an Ethereum contract. +type PauserRegistry struct { + PauserRegistryCaller // Read-only binding to the contract + PauserRegistryTransactor // Write-only binding to the contract + PauserRegistryFilterer // Log filterer for contract events +} + +// PauserRegistryCaller is an auto generated read-only Go binding around an Ethereum contract. +type PauserRegistryCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PauserRegistryTransactor is an auto generated write-only Go binding around an Ethereum contract. +type PauserRegistryTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PauserRegistryFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type PauserRegistryFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PauserRegistrySession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type PauserRegistrySession struct { + Contract *PauserRegistry // 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 +} + +// PauserRegistryCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type PauserRegistryCallerSession struct { + Contract *PauserRegistryCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// PauserRegistryTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type PauserRegistryTransactorSession struct { + Contract *PauserRegistryTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PauserRegistryRaw is an auto generated low-level Go binding around an Ethereum contract. +type PauserRegistryRaw struct { + Contract *PauserRegistry // Generic contract binding to access the raw methods on +} + +// PauserRegistryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type PauserRegistryCallerRaw struct { + Contract *PauserRegistryCaller // Generic read-only contract binding to access the raw methods on +} + +// PauserRegistryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type PauserRegistryTransactorRaw struct { + Contract *PauserRegistryTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewPauserRegistry creates a new instance of PauserRegistry, bound to a specific deployed contract. +func NewPauserRegistry(address common.Address, backend bind.ContractBackend) (*PauserRegistry, error) { + contract, err := bindPauserRegistry(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &PauserRegistry{PauserRegistryCaller: PauserRegistryCaller{contract: contract}, PauserRegistryTransactor: PauserRegistryTransactor{contract: contract}, PauserRegistryFilterer: PauserRegistryFilterer{contract: contract}}, nil +} + +// NewPauserRegistryCaller creates a new read-only instance of PauserRegistry, bound to a specific deployed contract. +func NewPauserRegistryCaller(address common.Address, caller bind.ContractCaller) (*PauserRegistryCaller, error) { + contract, err := bindPauserRegistry(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &PauserRegistryCaller{contract: contract}, nil +} + +// NewPauserRegistryTransactor creates a new write-only instance of PauserRegistry, bound to a specific deployed contract. +func NewPauserRegistryTransactor(address common.Address, transactor bind.ContractTransactor) (*PauserRegistryTransactor, error) { + contract, err := bindPauserRegistry(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &PauserRegistryTransactor{contract: contract}, nil +} + +// NewPauserRegistryFilterer creates a new log filterer instance of PauserRegistry, bound to a specific deployed contract. +func NewPauserRegistryFilterer(address common.Address, filterer bind.ContractFilterer) (*PauserRegistryFilterer, error) { + contract, err := bindPauserRegistry(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &PauserRegistryFilterer{contract: contract}, nil +} + +// bindPauserRegistry binds a generic wrapper to an already deployed contract. +func bindPauserRegistry(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := PauserRegistryMetaData.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 (_PauserRegistry *PauserRegistryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _PauserRegistry.Contract.PauserRegistryCaller.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 (_PauserRegistry *PauserRegistryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _PauserRegistry.Contract.PauserRegistryTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_PauserRegistry *PauserRegistryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _PauserRegistry.Contract.PauserRegistryTransactor.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 (_PauserRegistry *PauserRegistryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _PauserRegistry.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 (_PauserRegistry *PauserRegistryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _PauserRegistry.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_PauserRegistry *PauserRegistryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _PauserRegistry.Contract.contract.Transact(opts, method, params...) +} + +// IsPauser is a free data retrieval call binding the contract method 0x46fbf68e. +// +// Solidity: function isPauser(address ) view returns(bool) +func (_PauserRegistry *PauserRegistryCaller) IsPauser(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _PauserRegistry.contract.Call(opts, &out, "isPauser", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsPauser is a free data retrieval call binding the contract method 0x46fbf68e. +// +// Solidity: function isPauser(address ) view returns(bool) +func (_PauserRegistry *PauserRegistrySession) IsPauser(arg0 common.Address) (bool, error) { + return _PauserRegistry.Contract.IsPauser(&_PauserRegistry.CallOpts, arg0) +} + +// IsPauser is a free data retrieval call binding the contract method 0x46fbf68e. +// +// Solidity: function isPauser(address ) view returns(bool) +func (_PauserRegistry *PauserRegistryCallerSession) IsPauser(arg0 common.Address) (bool, error) { + return _PauserRegistry.Contract.IsPauser(&_PauserRegistry.CallOpts, arg0) +} + +// Unpauser is a free data retrieval call binding the contract method 0xeab66d7a. +// +// Solidity: function unpauser() view returns(address) +func (_PauserRegistry *PauserRegistryCaller) Unpauser(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _PauserRegistry.contract.Call(opts, &out, "unpauser") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Unpauser is a free data retrieval call binding the contract method 0xeab66d7a. +// +// Solidity: function unpauser() view returns(address) +func (_PauserRegistry *PauserRegistrySession) Unpauser() (common.Address, error) { + return _PauserRegistry.Contract.Unpauser(&_PauserRegistry.CallOpts) +} + +// Unpauser is a free data retrieval call binding the contract method 0xeab66d7a. +// +// Solidity: function unpauser() view returns(address) +func (_PauserRegistry *PauserRegistryCallerSession) Unpauser() (common.Address, error) { + return _PauserRegistry.Contract.Unpauser(&_PauserRegistry.CallOpts) +} + +// SetIsPauser is a paid mutator transaction binding the contract method 0x85685206. +// +// Solidity: function setIsPauser(address newPauser, bool canPause) returns() +func (_PauserRegistry *PauserRegistryTransactor) SetIsPauser(opts *bind.TransactOpts, newPauser common.Address, canPause bool) (*types.Transaction, error) { + return _PauserRegistry.contract.Transact(opts, "setIsPauser", newPauser, canPause) +} + +// SetIsPauser is a paid mutator transaction binding the contract method 0x85685206. +// +// Solidity: function setIsPauser(address newPauser, bool canPause) returns() +func (_PauserRegistry *PauserRegistrySession) SetIsPauser(newPauser common.Address, canPause bool) (*types.Transaction, error) { + return _PauserRegistry.Contract.SetIsPauser(&_PauserRegistry.TransactOpts, newPauser, canPause) +} + +// SetIsPauser is a paid mutator transaction binding the contract method 0x85685206. +// +// Solidity: function setIsPauser(address newPauser, bool canPause) returns() +func (_PauserRegistry *PauserRegistryTransactorSession) SetIsPauser(newPauser common.Address, canPause bool) (*types.Transaction, error) { + return _PauserRegistry.Contract.SetIsPauser(&_PauserRegistry.TransactOpts, newPauser, canPause) +} + +// SetUnpauser is a paid mutator transaction binding the contract method 0xce548428. +// +// Solidity: function setUnpauser(address newUnpauser) returns() +func (_PauserRegistry *PauserRegistryTransactor) SetUnpauser(opts *bind.TransactOpts, newUnpauser common.Address) (*types.Transaction, error) { + return _PauserRegistry.contract.Transact(opts, "setUnpauser", newUnpauser) +} + +// SetUnpauser is a paid mutator transaction binding the contract method 0xce548428. +// +// Solidity: function setUnpauser(address newUnpauser) returns() +func (_PauserRegistry *PauserRegistrySession) SetUnpauser(newUnpauser common.Address) (*types.Transaction, error) { + return _PauserRegistry.Contract.SetUnpauser(&_PauserRegistry.TransactOpts, newUnpauser) +} + +// SetUnpauser is a paid mutator transaction binding the contract method 0xce548428. +// +// Solidity: function setUnpauser(address newUnpauser) returns() +func (_PauserRegistry *PauserRegistryTransactorSession) SetUnpauser(newUnpauser common.Address) (*types.Transaction, error) { + return _PauserRegistry.Contract.SetUnpauser(&_PauserRegistry.TransactOpts, newUnpauser) +} + +// PauserRegistryPauserStatusChangedIterator is returned from FilterPauserStatusChanged and is used to iterate over the raw logs and unpacked data for PauserStatusChanged events raised by the PauserRegistry contract. +type PauserRegistryPauserStatusChangedIterator struct { + Event *PauserRegistryPauserStatusChanged // Event containing the contract specifics 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 *PauserRegistryPauserStatusChangedIterator) 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(PauserRegistryPauserStatusChanged) + 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(PauserRegistryPauserStatusChanged) + 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 *PauserRegistryPauserStatusChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PauserRegistryPauserStatusChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PauserRegistryPauserStatusChanged represents a PauserStatusChanged event raised by the PauserRegistry contract. +type PauserRegistryPauserStatusChanged struct { + Pauser common.Address + CanPause bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPauserStatusChanged is a free log retrieval operation binding the contract event 0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152. +// +// Solidity: event PauserStatusChanged(address pauser, bool canPause) +func (_PauserRegistry *PauserRegistryFilterer) FilterPauserStatusChanged(opts *bind.FilterOpts) (*PauserRegistryPauserStatusChangedIterator, error) { + + logs, sub, err := _PauserRegistry.contract.FilterLogs(opts, "PauserStatusChanged") + if err != nil { + return nil, err + } + return &PauserRegistryPauserStatusChangedIterator{contract: _PauserRegistry.contract, event: "PauserStatusChanged", logs: logs, sub: sub}, nil +} + +// WatchPauserStatusChanged is a free log subscription operation binding the contract event 0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152. +// +// Solidity: event PauserStatusChanged(address pauser, bool canPause) +func (_PauserRegistry *PauserRegistryFilterer) WatchPauserStatusChanged(opts *bind.WatchOpts, sink chan<- *PauserRegistryPauserStatusChanged) (event.Subscription, error) { + + logs, sub, err := _PauserRegistry.contract.WatchLogs(opts, "PauserStatusChanged") + 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(PauserRegistryPauserStatusChanged) + if err := _PauserRegistry.contract.UnpackLog(event, "PauserStatusChanged", 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 +} + +// ParsePauserStatusChanged is a log parse operation binding the contract event 0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152. +// +// Solidity: event PauserStatusChanged(address pauser, bool canPause) +func (_PauserRegistry *PauserRegistryFilterer) ParsePauserStatusChanged(log types.Log) (*PauserRegistryPauserStatusChanged, error) { + event := new(PauserRegistryPauserStatusChanged) + if err := _PauserRegistry.contract.UnpackLog(event, "PauserStatusChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PauserRegistryUnpauserChangedIterator is returned from FilterUnpauserChanged and is used to iterate over the raw logs and unpacked data for UnpauserChanged events raised by the PauserRegistry contract. +type PauserRegistryUnpauserChangedIterator struct { + Event *PauserRegistryUnpauserChanged // Event containing the contract specifics 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 *PauserRegistryUnpauserChangedIterator) 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(PauserRegistryUnpauserChanged) + 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(PauserRegistryUnpauserChanged) + 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 *PauserRegistryUnpauserChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PauserRegistryUnpauserChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PauserRegistryUnpauserChanged represents a UnpauserChanged event raised by the PauserRegistry contract. +type PauserRegistryUnpauserChanged struct { + PreviousUnpauser common.Address + NewUnpauser common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpauserChanged is a free log retrieval operation binding the contract event 0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892. +// +// Solidity: event UnpauserChanged(address previousUnpauser, address newUnpauser) +func (_PauserRegistry *PauserRegistryFilterer) FilterUnpauserChanged(opts *bind.FilterOpts) (*PauserRegistryUnpauserChangedIterator, error) { + + logs, sub, err := _PauserRegistry.contract.FilterLogs(opts, "UnpauserChanged") + if err != nil { + return nil, err + } + return &PauserRegistryUnpauserChangedIterator{contract: _PauserRegistry.contract, event: "UnpauserChanged", logs: logs, sub: sub}, nil +} + +// WatchUnpauserChanged is a free log subscription operation binding the contract event 0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892. +// +// Solidity: event UnpauserChanged(address previousUnpauser, address newUnpauser) +func (_PauserRegistry *PauserRegistryFilterer) WatchUnpauserChanged(opts *bind.WatchOpts, sink chan<- *PauserRegistryUnpauserChanged) (event.Subscription, error) { + + logs, sub, err := _PauserRegistry.contract.WatchLogs(opts, "UnpauserChanged") + 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(PauserRegistryUnpauserChanged) + if err := _PauserRegistry.contract.UnpackLog(event, "UnpauserChanged", 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 +} + +// ParseUnpauserChanged is a log parse operation binding the contract event 0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892. +// +// Solidity: event UnpauserChanged(address previousUnpauser, address newUnpauser) +func (_PauserRegistry *PauserRegistryFilterer) ParseUnpauserChanged(log types.Log) (*PauserRegistryUnpauserChanged, error) { + event := new(PauserRegistryUnpauserChanged) + if err := _PauserRegistry.contract.UnpackLog(event, "UnpauserChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/PauserRegistry/tmp.abi b/pkg/bindings/PauserRegistry/tmp.abi new file mode 100644 index 000000000..472d5516e --- /dev/null +++ b/pkg/bindings/PauserRegistry/tmp.abi @@ -0,0 +1,119 @@ +[ + { + "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 + } +] diff --git a/pkg/bindings/PauserRegistry/tmp.bin b/pkg/bindings/PauserRegistry/tmp.bin new file mode 100644 index 000000000..fa535d259 --- /dev/null +++ b/pkg/bindings/PauserRegistry/tmp.bin @@ -0,0 +1 @@ +0x608060405234801561001057600080fd5b5060405161077838038061077883398101604081905261002f91610263565b60005b82518110156100775761006583828151811061005057610050610339565b6020026020010151600161008860201b60201c565b8061006f8161034f565b915050610032565b506100818161015a565b5050610378565b6001600160a01b0382166100f95760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101c85760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100f0565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025e57600080fd5b919050565b6000806040838503121561027657600080fd5b82516001600160401b038082111561028d57600080fd5b818501915085601f8301126102a157600080fd5b81516020828211156102b5576102b5610231565b8160051b604051601f19603f830116810181811086821117156102da576102da610231565b6040529283528183019350848101820192898411156102f857600080fd5b948201945b8386101561031d5761030e86610247565b855294820194938201936102fd565b965061032c9050878201610247565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561037157634e487b7160e01b600052601160045260246000fd5b5060010190565b6103f1806103876000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea264697066735822122082c17cbba412d9a44621d8a07946e79322d6248e2e7c652573dcc2c61babeb8c64736f6c634300080c0033 diff --git a/pkg/bindings/Slasher/tmp.abi b/pkg/bindings/Slasher/tmp.abi new file mode 100644 index 000000000..9bc140ea9 --- /dev/null +++ b/pkg/bindings/Slasher/tmp.abi @@ -0,0 +1,831 @@ +[ + { + "type": "constructor", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategyManager" + }, + { + "name": "", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "canSlash", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "canWithdraw", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "contractCanSlashOperatorUntilBlock", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "delegation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "freezeOperator", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getCorrectValueForInsertAfter", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getMiddlewareTimesIndexServeUntilBlock", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getMiddlewareTimesIndexStalestUpdateBlock", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "contract IPauserRegistry" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isFrozen", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "latestUpdateBlock", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "middlewareTimesLength", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorToMiddlewareTimes", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct ISlasher.MiddlewareTimes", + "components": [ + { + "name": "stalestUpdateBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "latestServeUntilBlock", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "operatorWhitelistedContractsLinkedListEntry", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "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": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "optIntoSlashing", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "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": "contract IPauserRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "recordFirstStakeUpdate", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "recordLastStakeUpdateAndRevokeSlashingAbility", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "recordStakeUpdate", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "resetFrozenStatus", + "inputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "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": "whitelistedContractDetails", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct ISlasher.MiddlewareDetails", + "components": [ + { + "name": "registrationMayBeginAtBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "contractCanSlashOperatorUntilBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "latestUpdateBlock", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "FrozenStatusReset", + "inputs": [ + { + "name": "previouslySlashedAddress", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "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": "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": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "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 + }, + { + "type": "event", + "name": "Unpaused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] diff --git a/pkg/bindings/Slasher/tmp.bin b/pkg/bindings/Slasher/tmp.bin new file mode 100644 index 000000000..d5fcee50b --- /dev/null +++ b/pkg/bindings/Slasher/tmp.bin @@ -0,0 +1 @@ +0x608060405234801561001057600080fd5b50604051610efe380380610efe83398101604081905261002f9161004e565b5050610088565b6001600160a01b038116811461004b57600080fd5b50565b6000806040838503121561006157600080fd5b825161006c81610036565b602084015190925061007d81610036565b809150509250929050565b610e67806100976000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea2646970667358221220a7d1b10a4f9175e5a0244b5c408905b3ea59bda809056a3a8f6b70b7a627d5b364736f6c634300080c0033 diff --git a/pkg/bindings/StrategyBase/binding.go b/pkg/bindings/StrategyBase/binding.go new file mode 100644 index 000000000..0bd6e0d32 --- /dev/null +++ b/pkg/bindings/StrategyBase/binding.go @@ -0,0 +1,1333 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package StrategyBase + +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 +) + +// 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\":\"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\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", + Bin: "0x60a060405234801561001057600080fd5b50604051620018b9380380620018b98339810160408190526100319161010c565b6001600160a01b03811660805261004661004c565b5061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161174c6200016d6000396000818161019901528181610570015281816109550152610a20015261174c6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046113db565b610310565b005b61014f61015f3660046113f8565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e0366004611411565b610510565b61014f6101f336600461143d565b6106b4565b6101c46102063660046113db565b6107c9565b61014f6107dd565b610232610221366004611476565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046113f8565b6108a9565b600054610177906201000090046001600160a01b031681565b6101c46102843660046113f8565b6108f4565b6101c46102973660046113db565b6108ff565b6102a461090d565b60405161018b91906114c9565b6101c46102bf3660046113db565b61092d565b61014f6102d23660046114fc565b6109c2565b6101c46102e53660046113f8565b610b8b565b6101c46102f83660046113f8565b610bc4565b61014f61030b3660046113f8565b610bcf565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610387919061153d565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061155a565b60405180910390fd5b6103c981610d2b565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d91906115a4565b6104595760405162461bcd60e51b81526004016103b7906115c6565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610e30565b60335460006105f86103e883611624565b905060006103e8610607610eb0565b6106119190611624565b9050600061061f878361163c565b90508061062c8489611653565b6106369190611672565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a68685611624565b603355505050505092915050565b600054610100900460ff16158080156106d45750600054600160ff909116105b806106ee5750303b1580156106ee575060005460ff166001145b6107515760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610774576000805461ff0019166101001790555b61077e8383610f22565b80156107c4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006107d76102588361092d565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561082a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084e91906115a4565b61086a5760405162461bcd60e51b81526004016103b7906115c6565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e86033546108bc9190611624565b905060006103e86108cb610eb0565b6108d59190611624565b9050816108e28583611653565b6108ec9190611672565b949350505050565b60006107d782610b8b565b60006107d76102f88361092d565b60606040518060800160405280604d81526020016116ca604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa15801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d79190611694565b6001805460029081161415610a155760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a8d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610a98848484610fb3565b60335480831115610b275760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610b356103e883611624565b905060006103e8610b44610eb0565b610b4e9190611624565b9050600082610b5d8784611653565b610b679190611672565b9050610b73868561163c565b603355610b81888883611036565b5050505050505050565b6000806103e8603354610b9e9190611624565b905060006103e8610bad610eb0565b610bb79190611624565b9050806108e28386611653565b60006107d7826108a9565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c46919061153d565b6001600160a01b0316336001600160a01b031614610c765760405162461bcd60e51b81526004016103b79061155a565b600154198119600154191614610cf45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610db95760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610eac5760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190611694565b905090565b600054610100900460ff16610f8d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b038416179055610eac81600061104a565b6032546001600160a01b038381169116146107c45760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6107c46001600160a01b0383168483611136565b6000546201000090046001600160a01b031615801561107157506001600160a01b03821615155b6110f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610eac82610d2b565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526107c4928692916000916111c6918516908490611243565b8051909150156107c457808060200190518101906111e491906115a4565b6107c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b6060611252848460008561125c565b90505b9392505050565b6060824710156112bd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6113145760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b0316858760405161133091906116ad565b60006040518083038185875af1925050503d806000811461136d576040519150601f19603f3d011682016040523d82523d6000602084013e611372565b606091505b509150915061138282828661138d565b979650505050505050565b6060831561139c575081611255565b8251156113ac5782518084602001fd5b8160405162461bcd60e51b81526004016103b791906114c9565b6001600160a01b03811681146103c957600080fd5b6000602082840312156113ed57600080fd5b8135611255816113c6565b60006020828403121561140a57600080fd5b5035919050565b6000806040838503121561142457600080fd5b823561142f816113c6565b946020939093013593505050565b6000806040838503121561145057600080fd5b823561145b816113c6565b9150602083013561146b816113c6565b809150509250929050565b60006020828403121561148857600080fd5b813560ff8116811461125557600080fd5b60005b838110156114b457818101518382015260200161149c565b838111156114c3576000848401525b50505050565b60208152600082518060208401526114e8816040850160208701611499565b601f01601f19169190910160400192915050565b60008060006060848603121561151157600080fd5b833561151c816113c6565b9250602084013561152c816113c6565b929592945050506040919091013590565b60006020828403121561154f57600080fd5b8151611255816113c6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156115b657600080fd5b8151801515811461125557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156116375761163761160e565b500190565b60008282101561164e5761164e61160e565b500390565b600081600019048311821515161561166d5761166d61160e565b500290565b60008261168f57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156116a657600080fd5b5051919050565b600082516116bf818460208701611499565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220e94b864fb5ca1469d7a213a96a7740a063e352988cf2baba0e6baef5578eca1164736f6c634300080c0033", +} + +// StrategyBaseABI is the input ABI used to generate the binding from. +// Deprecated: Use StrategyBaseMetaData.ABI instead. +var StrategyBaseABI = StrategyBaseMetaData.ABI + +// StrategyBaseBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use StrategyBaseMetaData.Bin instead. +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) { + parsed, err := StrategyBaseMetaData.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(StrategyBaseBin), backend, _strategyManager) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &StrategyBase{StrategyBaseCaller: StrategyBaseCaller{contract: contract}, StrategyBaseTransactor: StrategyBaseTransactor{contract: contract}, StrategyBaseFilterer: StrategyBaseFilterer{contract: contract}}, nil +} + +// StrategyBase is an auto generated Go binding around an Ethereum contract. +type StrategyBase struct { + StrategyBaseCaller // Read-only binding to the contract + StrategyBaseTransactor // Write-only binding to the contract + StrategyBaseFilterer // Log filterer for contract events +} + +// StrategyBaseCaller is an auto generated read-only Go binding around an Ethereum contract. +type StrategyBaseCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StrategyBaseTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StrategyBaseTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StrategyBaseFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StrategyBaseFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StrategyBaseSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StrategyBaseSession struct { + Contract *StrategyBase // 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 +} + +// StrategyBaseCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StrategyBaseCallerSession struct { + Contract *StrategyBaseCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StrategyBaseTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StrategyBaseTransactorSession struct { + Contract *StrategyBaseTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StrategyBaseRaw is an auto generated low-level Go binding around an Ethereum contract. +type StrategyBaseRaw struct { + Contract *StrategyBase // Generic contract binding to access the raw methods on +} + +// StrategyBaseCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StrategyBaseCallerRaw struct { + Contract *StrategyBaseCaller // Generic read-only contract binding to access the raw methods on +} + +// StrategyBaseTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StrategyBaseTransactorRaw struct { + Contract *StrategyBaseTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStrategyBase creates a new instance of StrategyBase, bound to a specific deployed contract. +func NewStrategyBase(address common.Address, backend bind.ContractBackend) (*StrategyBase, error) { + contract, err := bindStrategyBase(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StrategyBase{StrategyBaseCaller: StrategyBaseCaller{contract: contract}, StrategyBaseTransactor: StrategyBaseTransactor{contract: contract}, StrategyBaseFilterer: StrategyBaseFilterer{contract: contract}}, nil +} + +// NewStrategyBaseCaller creates a new read-only instance of StrategyBase, bound to a specific deployed contract. +func NewStrategyBaseCaller(address common.Address, caller bind.ContractCaller) (*StrategyBaseCaller, error) { + contract, err := bindStrategyBase(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StrategyBaseCaller{contract: contract}, nil +} + +// NewStrategyBaseTransactor creates a new write-only instance of StrategyBase, bound to a specific deployed contract. +func NewStrategyBaseTransactor(address common.Address, transactor bind.ContractTransactor) (*StrategyBaseTransactor, error) { + contract, err := bindStrategyBase(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StrategyBaseTransactor{contract: contract}, nil +} + +// NewStrategyBaseFilterer creates a new log filterer instance of StrategyBase, bound to a specific deployed contract. +func NewStrategyBaseFilterer(address common.Address, filterer bind.ContractFilterer) (*StrategyBaseFilterer, error) { + contract, err := bindStrategyBase(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StrategyBaseFilterer{contract: contract}, nil +} + +// bindStrategyBase binds a generic wrapper to an already deployed contract. +func bindStrategyBase(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StrategyBaseMetaData.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 (_StrategyBase *StrategyBaseRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StrategyBase.Contract.StrategyBaseCaller.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 (_StrategyBase *StrategyBaseRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StrategyBase.Contract.StrategyBaseTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StrategyBase *StrategyBaseRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StrategyBase.Contract.StrategyBaseTransactor.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 (_StrategyBase *StrategyBaseCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StrategyBase.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 (_StrategyBase *StrategyBaseTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StrategyBase.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StrategyBase *StrategyBaseTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StrategyBase.Contract.contract.Transact(opts, method, params...) +} + +// Explanation is a free data retrieval call binding the contract method 0xab5921e1. +// +// Solidity: function explanation() pure returns(string) +func (_StrategyBase *StrategyBaseCaller) Explanation(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _StrategyBase.contract.Call(opts, &out, "explanation") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Explanation is a free data retrieval call binding the contract method 0xab5921e1. +// +// Solidity: function explanation() pure returns(string) +func (_StrategyBase *StrategyBaseSession) Explanation() (string, error) { + return _StrategyBase.Contract.Explanation(&_StrategyBase.CallOpts) +} + +// Explanation is a free data retrieval call binding the contract method 0xab5921e1. +// +// Solidity: function explanation() pure returns(string) +func (_StrategyBase *StrategyBaseCallerSession) Explanation() (string, error) { + return _StrategyBase.Contract.Explanation(&_StrategyBase.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_StrategyBase *StrategyBaseCaller) Paused(opts *bind.CallOpts, index uint8) (bool, error) { + var out []interface{} + err := _StrategyBase.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 (_StrategyBase *StrategyBaseSession) Paused(index uint8) (bool, error) { + return _StrategyBase.Contract.Paused(&_StrategyBase.CallOpts, index) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_StrategyBase *StrategyBaseCallerSession) Paused(index uint8) (bool, error) { + return _StrategyBase.Contract.Paused(&_StrategyBase.CallOpts, index) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_StrategyBase *StrategyBaseCaller) Paused0(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _StrategyBase.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 (_StrategyBase *StrategyBaseSession) Paused0() (*big.Int, error) { + return _StrategyBase.Contract.Paused0(&_StrategyBase.CallOpts) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_StrategyBase *StrategyBaseCallerSession) Paused0() (*big.Int, error) { + return _StrategyBase.Contract.Paused0(&_StrategyBase.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_StrategyBase *StrategyBaseCaller) PauserRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _StrategyBase.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 (_StrategyBase *StrategyBaseSession) PauserRegistry() (common.Address, error) { + return _StrategyBase.Contract.PauserRegistry(&_StrategyBase.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_StrategyBase *StrategyBaseCallerSession) PauserRegistry() (common.Address, error) { + return _StrategyBase.Contract.PauserRegistry(&_StrategyBase.CallOpts) +} + +// Shares is a free data retrieval call binding the contract method 0xce7c2ac2. +// +// Solidity: function shares(address user) view returns(uint256) +func (_StrategyBase *StrategyBaseCaller) Shares(opts *bind.CallOpts, user common.Address) (*big.Int, error) { + var out []interface{} + err := _StrategyBase.contract.Call(opts, &out, "shares", user) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Shares is a free data retrieval call binding the contract method 0xce7c2ac2. +// +// Solidity: function shares(address user) view returns(uint256) +func (_StrategyBase *StrategyBaseSession) Shares(user common.Address) (*big.Int, error) { + return _StrategyBase.Contract.Shares(&_StrategyBase.CallOpts, user) +} + +// Shares is a free data retrieval call binding the contract method 0xce7c2ac2. +// +// Solidity: function shares(address user) view returns(uint256) +func (_StrategyBase *StrategyBaseCallerSession) Shares(user common.Address) (*big.Int, error) { + return _StrategyBase.Contract.Shares(&_StrategyBase.CallOpts, user) +} + +// SharesToUnderlying is a free data retrieval call binding the contract method 0xf3e73875. +// +// Solidity: function sharesToUnderlying(uint256 amountShares) view returns(uint256) +func (_StrategyBase *StrategyBaseCaller) SharesToUnderlying(opts *bind.CallOpts, amountShares *big.Int) (*big.Int, error) { + var out []interface{} + err := _StrategyBase.contract.Call(opts, &out, "sharesToUnderlying", amountShares) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// SharesToUnderlying is a free data retrieval call binding the contract method 0xf3e73875. +// +// Solidity: function sharesToUnderlying(uint256 amountShares) view returns(uint256) +func (_StrategyBase *StrategyBaseSession) SharesToUnderlying(amountShares *big.Int) (*big.Int, error) { + return _StrategyBase.Contract.SharesToUnderlying(&_StrategyBase.CallOpts, amountShares) +} + +// SharesToUnderlying is a free data retrieval call binding the contract method 0xf3e73875. +// +// Solidity: function sharesToUnderlying(uint256 amountShares) view returns(uint256) +func (_StrategyBase *StrategyBaseCallerSession) SharesToUnderlying(amountShares *big.Int) (*big.Int, error) { + return _StrategyBase.Contract.SharesToUnderlying(&_StrategyBase.CallOpts, amountShares) +} + +// SharesToUnderlyingView is a free data retrieval call binding the contract method 0x7a8b2637. +// +// Solidity: function sharesToUnderlyingView(uint256 amountShares) view returns(uint256) +func (_StrategyBase *StrategyBaseCaller) SharesToUnderlyingView(opts *bind.CallOpts, amountShares *big.Int) (*big.Int, error) { + var out []interface{} + err := _StrategyBase.contract.Call(opts, &out, "sharesToUnderlyingView", amountShares) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// SharesToUnderlyingView is a free data retrieval call binding the contract method 0x7a8b2637. +// +// Solidity: function sharesToUnderlyingView(uint256 amountShares) view returns(uint256) +func (_StrategyBase *StrategyBaseSession) SharesToUnderlyingView(amountShares *big.Int) (*big.Int, error) { + return _StrategyBase.Contract.SharesToUnderlyingView(&_StrategyBase.CallOpts, amountShares) +} + +// SharesToUnderlyingView is a free data retrieval call binding the contract method 0x7a8b2637. +// +// Solidity: function sharesToUnderlyingView(uint256 amountShares) view returns(uint256) +func (_StrategyBase *StrategyBaseCallerSession) SharesToUnderlyingView(amountShares *big.Int) (*big.Int, error) { + return _StrategyBase.Contract.SharesToUnderlyingView(&_StrategyBase.CallOpts, amountShares) +} + +// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. +// +// Solidity: function strategyManager() view returns(address) +func (_StrategyBase *StrategyBaseCaller) StrategyManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _StrategyBase.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 (_StrategyBase *StrategyBaseSession) StrategyManager() (common.Address, error) { + return _StrategyBase.Contract.StrategyManager(&_StrategyBase.CallOpts) +} + +// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. +// +// Solidity: function strategyManager() view returns(address) +func (_StrategyBase *StrategyBaseCallerSession) StrategyManager() (common.Address, error) { + return _StrategyBase.Contract.StrategyManager(&_StrategyBase.CallOpts) +} + +// TotalShares is a free data retrieval call binding the contract method 0x3a98ef39. +// +// Solidity: function totalShares() view returns(uint256) +func (_StrategyBase *StrategyBaseCaller) TotalShares(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _StrategyBase.contract.Call(opts, &out, "totalShares") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalShares is a free data retrieval call binding the contract method 0x3a98ef39. +// +// Solidity: function totalShares() view returns(uint256) +func (_StrategyBase *StrategyBaseSession) TotalShares() (*big.Int, error) { + return _StrategyBase.Contract.TotalShares(&_StrategyBase.CallOpts) +} + +// TotalShares is a free data retrieval call binding the contract method 0x3a98ef39. +// +// Solidity: function totalShares() view returns(uint256) +func (_StrategyBase *StrategyBaseCallerSession) TotalShares() (*big.Int, error) { + return _StrategyBase.Contract.TotalShares(&_StrategyBase.CallOpts) +} + +// UnderlyingToShares is a free data retrieval call binding the contract method 0x8c871019. +// +// Solidity: function underlyingToShares(uint256 amountUnderlying) view returns(uint256) +func (_StrategyBase *StrategyBaseCaller) UnderlyingToShares(opts *bind.CallOpts, amountUnderlying *big.Int) (*big.Int, error) { + var out []interface{} + err := _StrategyBase.contract.Call(opts, &out, "underlyingToShares", amountUnderlying) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UnderlyingToShares is a free data retrieval call binding the contract method 0x8c871019. +// +// Solidity: function underlyingToShares(uint256 amountUnderlying) view returns(uint256) +func (_StrategyBase *StrategyBaseSession) UnderlyingToShares(amountUnderlying *big.Int) (*big.Int, error) { + return _StrategyBase.Contract.UnderlyingToShares(&_StrategyBase.CallOpts, amountUnderlying) +} + +// UnderlyingToShares is a free data retrieval call binding the contract method 0x8c871019. +// +// Solidity: function underlyingToShares(uint256 amountUnderlying) view returns(uint256) +func (_StrategyBase *StrategyBaseCallerSession) UnderlyingToShares(amountUnderlying *big.Int) (*big.Int, error) { + return _StrategyBase.Contract.UnderlyingToShares(&_StrategyBase.CallOpts, amountUnderlying) +} + +// UnderlyingToSharesView is a free data retrieval call binding the contract method 0xe3dae51c. +// +// Solidity: function underlyingToSharesView(uint256 amountUnderlying) view returns(uint256) +func (_StrategyBase *StrategyBaseCaller) UnderlyingToSharesView(opts *bind.CallOpts, amountUnderlying *big.Int) (*big.Int, error) { + var out []interface{} + err := _StrategyBase.contract.Call(opts, &out, "underlyingToSharesView", amountUnderlying) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UnderlyingToSharesView is a free data retrieval call binding the contract method 0xe3dae51c. +// +// Solidity: function underlyingToSharesView(uint256 amountUnderlying) view returns(uint256) +func (_StrategyBase *StrategyBaseSession) UnderlyingToSharesView(amountUnderlying *big.Int) (*big.Int, error) { + return _StrategyBase.Contract.UnderlyingToSharesView(&_StrategyBase.CallOpts, amountUnderlying) +} + +// UnderlyingToSharesView is a free data retrieval call binding the contract method 0xe3dae51c. +// +// Solidity: function underlyingToSharesView(uint256 amountUnderlying) view returns(uint256) +func (_StrategyBase *StrategyBaseCallerSession) UnderlyingToSharesView(amountUnderlying *big.Int) (*big.Int, error) { + return _StrategyBase.Contract.UnderlyingToSharesView(&_StrategyBase.CallOpts, amountUnderlying) +} + +// UnderlyingToken is a free data retrieval call binding the contract method 0x2495a599. +// +// Solidity: function underlyingToken() view returns(address) +func (_StrategyBase *StrategyBaseCaller) UnderlyingToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _StrategyBase.contract.Call(opts, &out, "underlyingToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// UnderlyingToken is a free data retrieval call binding the contract method 0x2495a599. +// +// Solidity: function underlyingToken() view returns(address) +func (_StrategyBase *StrategyBaseSession) UnderlyingToken() (common.Address, error) { + return _StrategyBase.Contract.UnderlyingToken(&_StrategyBase.CallOpts) +} + +// UnderlyingToken is a free data retrieval call binding the contract method 0x2495a599. +// +// Solidity: function underlyingToken() view returns(address) +func (_StrategyBase *StrategyBaseCallerSession) UnderlyingToken() (common.Address, error) { + return _StrategyBase.Contract.UnderlyingToken(&_StrategyBase.CallOpts) +} + +// UserUnderlyingView is a free data retrieval call binding the contract method 0x553ca5f8. +// +// Solidity: function userUnderlyingView(address user) view returns(uint256) +func (_StrategyBase *StrategyBaseCaller) UserUnderlyingView(opts *bind.CallOpts, user common.Address) (*big.Int, error) { + var out []interface{} + err := _StrategyBase.contract.Call(opts, &out, "userUnderlyingView", user) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UserUnderlyingView is a free data retrieval call binding the contract method 0x553ca5f8. +// +// Solidity: function userUnderlyingView(address user) view returns(uint256) +func (_StrategyBase *StrategyBaseSession) UserUnderlyingView(user common.Address) (*big.Int, error) { + return _StrategyBase.Contract.UserUnderlyingView(&_StrategyBase.CallOpts, user) +} + +// UserUnderlyingView is a free data retrieval call binding the contract method 0x553ca5f8. +// +// Solidity: function userUnderlyingView(address user) view returns(uint256) +func (_StrategyBase *StrategyBaseCallerSession) UserUnderlyingView(user common.Address) (*big.Int, error) { + return _StrategyBase.Contract.UserUnderlyingView(&_StrategyBase.CallOpts, user) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address token, uint256 amount) returns(uint256 newShares) +func (_StrategyBase *StrategyBaseTransactor) Deposit(opts *bind.TransactOpts, token common.Address, amount *big.Int) (*types.Transaction, error) { + return _StrategyBase.contract.Transact(opts, "deposit", token, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address token, uint256 amount) returns(uint256 newShares) +func (_StrategyBase *StrategyBaseSession) Deposit(token common.Address, amount *big.Int) (*types.Transaction, error) { + return _StrategyBase.Contract.Deposit(&_StrategyBase.TransactOpts, token, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address token, uint256 amount) returns(uint256 newShares) +func (_StrategyBase *StrategyBaseTransactorSession) Deposit(token common.Address, amount *big.Int) (*types.Transaction, error) { + return _StrategyBase.Contract.Deposit(&_StrategyBase.TransactOpts, token, amount) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// 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) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// 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) +} + +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. +// +// 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) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_StrategyBase *StrategyBaseTransactor) Pause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _StrategyBase.contract.Transact(opts, "pause", newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_StrategyBase *StrategyBaseSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _StrategyBase.Contract.Pause(&_StrategyBase.TransactOpts, newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_StrategyBase *StrategyBaseTransactorSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _StrategyBase.Contract.Pause(&_StrategyBase.TransactOpts, newPausedStatus) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_StrategyBase *StrategyBaseTransactor) PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StrategyBase.contract.Transact(opts, "pauseAll") +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_StrategyBase *StrategyBaseSession) PauseAll() (*types.Transaction, error) { + return _StrategyBase.Contract.PauseAll(&_StrategyBase.TransactOpts) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_StrategyBase *StrategyBaseTransactorSession) PauseAll() (*types.Transaction, error) { + 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() +func (_StrategyBase *StrategyBaseTransactor) Unpause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _StrategyBase.contract.Transact(opts, "unpause", newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_StrategyBase *StrategyBaseSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _StrategyBase.Contract.Unpause(&_StrategyBase.TransactOpts, newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_StrategyBase *StrategyBaseTransactorSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _StrategyBase.Contract.Unpause(&_StrategyBase.TransactOpts, newPausedStatus) +} + +// UserUnderlying is a paid mutator transaction binding the contract method 0x8f6a6240. +// +// Solidity: function userUnderlying(address user) returns(uint256) +func (_StrategyBase *StrategyBaseTransactor) UserUnderlying(opts *bind.TransactOpts, user common.Address) (*types.Transaction, error) { + return _StrategyBase.contract.Transact(opts, "userUnderlying", user) +} + +// UserUnderlying is a paid mutator transaction binding the contract method 0x8f6a6240. +// +// Solidity: function userUnderlying(address user) returns(uint256) +func (_StrategyBase *StrategyBaseSession) UserUnderlying(user common.Address) (*types.Transaction, error) { + return _StrategyBase.Contract.UserUnderlying(&_StrategyBase.TransactOpts, user) +} + +// UserUnderlying is a paid mutator transaction binding the contract method 0x8f6a6240. +// +// Solidity: function userUnderlying(address user) returns(uint256) +func (_StrategyBase *StrategyBaseTransactorSession) UserUnderlying(user common.Address) (*types.Transaction, error) { + return _StrategyBase.Contract.UserUnderlying(&_StrategyBase.TransactOpts, user) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address recipient, address token, uint256 amountShares) returns() +func (_StrategyBase *StrategyBaseTransactor) Withdraw(opts *bind.TransactOpts, recipient common.Address, token common.Address, amountShares *big.Int) (*types.Transaction, error) { + return _StrategyBase.contract.Transact(opts, "withdraw", recipient, token, amountShares) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address recipient, address token, uint256 amountShares) returns() +func (_StrategyBase *StrategyBaseSession) Withdraw(recipient common.Address, token common.Address, amountShares *big.Int) (*types.Transaction, error) { + return _StrategyBase.Contract.Withdraw(&_StrategyBase.TransactOpts, recipient, token, amountShares) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address recipient, address token, uint256 amountShares) returns() +func (_StrategyBase *StrategyBaseTransactorSession) Withdraw(recipient common.Address, token common.Address, amountShares *big.Int) (*types.Transaction, error) { + return _StrategyBase.Contract.Withdraw(&_StrategyBase.TransactOpts, recipient, token, amountShares) +} + +// StrategyBaseInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the StrategyBase contract. +type StrategyBaseInitializedIterator struct { + Event *StrategyBaseInitialized // Event containing the contract specifics 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 *StrategyBaseInitializedIterator) 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(StrategyBaseInitialized) + 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(StrategyBaseInitialized) + 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 *StrategyBaseInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyBaseInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StrategyBaseInitialized represents a Initialized event raised by the StrategyBase contract. +type StrategyBaseInitialized 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 (_StrategyBase *StrategyBaseFilterer) FilterInitialized(opts *bind.FilterOpts) (*StrategyBaseInitializedIterator, error) { + + logs, sub, err := _StrategyBase.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &StrategyBaseInitializedIterator{contract: _StrategyBase.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 (_StrategyBase *StrategyBaseFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *StrategyBaseInitialized) (event.Subscription, error) { + + logs, sub, err := _StrategyBase.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(StrategyBaseInitialized) + if err := _StrategyBase.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 (_StrategyBase *StrategyBaseFilterer) ParseInitialized(log types.Log) (*StrategyBaseInitialized, error) { + event := new(StrategyBaseInitialized) + if err := _StrategyBase.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StrategyBasePausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the StrategyBase contract. +type StrategyBasePausedIterator struct { + Event *StrategyBasePaused // Event containing the contract specifics 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 *StrategyBasePausedIterator) 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(StrategyBasePaused) + 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(StrategyBasePaused) + 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 *StrategyBasePausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyBasePausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StrategyBasePaused represents a Paused event raised by the StrategyBase contract. +type StrategyBasePaused 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 (_StrategyBase *StrategyBaseFilterer) FilterPaused(opts *bind.FilterOpts, account []common.Address) (*StrategyBasePausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _StrategyBase.contract.FilterLogs(opts, "Paused", accountRule) + if err != nil { + return nil, err + } + return &StrategyBasePausedIterator{contract: _StrategyBase.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 (_StrategyBase *StrategyBaseFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *StrategyBasePaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _StrategyBase.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(StrategyBasePaused) + if err := _StrategyBase.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 (_StrategyBase *StrategyBaseFilterer) ParsePaused(log types.Log) (*StrategyBasePaused, error) { + event := new(StrategyBasePaused) + if err := _StrategyBase.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + 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 +} + +// StrategyBaseUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the StrategyBase contract. +type StrategyBaseUnpausedIterator struct { + Event *StrategyBaseUnpaused // Event containing the contract specifics 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 *StrategyBaseUnpausedIterator) 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(StrategyBaseUnpaused) + 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(StrategyBaseUnpaused) + 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 *StrategyBaseUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyBaseUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StrategyBaseUnpaused represents a Unpaused event raised by the StrategyBase contract. +type StrategyBaseUnpaused 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 (_StrategyBase *StrategyBaseFilterer) FilterUnpaused(opts *bind.FilterOpts, account []common.Address) (*StrategyBaseUnpausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _StrategyBase.contract.FilterLogs(opts, "Unpaused", accountRule) + if err != nil { + return nil, err + } + return &StrategyBaseUnpausedIterator{contract: _StrategyBase.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 (_StrategyBase *StrategyBaseFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *StrategyBaseUnpaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _StrategyBase.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(StrategyBaseUnpaused) + if err := _StrategyBase.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 (_StrategyBase *StrategyBaseFilterer) ParseUnpaused(log types.Log) (*StrategyBaseUnpaused, error) { + event := new(StrategyBaseUnpaused) + if err := _StrategyBase.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/StrategyBase/tmp.abi b/pkg/bindings/StrategyBase/tmp.abi new file mode 100644 index 000000000..1772a055f --- /dev/null +++ b/pkg/bindings/StrategyBase/tmp.abi @@ -0,0 +1,424 @@ +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_strategyManager", + "type": "address", + "internalType": "contract IStrategyManager" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "deposit", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "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": "contract IERC20" + }, + { + "name": "_pauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "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": "contract IPauserRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "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": "contract IStrategyManager" + } + ], + "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": "contract IERC20" + } + ], + "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": "contract IERC20" + }, + { + "name": "amountShares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "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": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "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 + } +] diff --git a/pkg/bindings/StrategyBase/tmp.bin b/pkg/bindings/StrategyBase/tmp.bin new file mode 100644 index 000000000..b167b6498 --- /dev/null +++ b/pkg/bindings/StrategyBase/tmp.bin @@ -0,0 +1 @@ +0x60a060405234801561001057600080fd5b50604051620018b9380380620018b98339810160408190526100319161010c565b6001600160a01b03811660805261004661004c565b5061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161174c6200016d6000396000818161019901528181610570015281816109550152610a20015261174c6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046113db565b610310565b005b61014f61015f3660046113f8565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e0366004611411565b610510565b61014f6101f336600461143d565b6106b4565b6101c46102063660046113db565b6107c9565b61014f6107dd565b610232610221366004611476565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046113f8565b6108a9565b600054610177906201000090046001600160a01b031681565b6101c46102843660046113f8565b6108f4565b6101c46102973660046113db565b6108ff565b6102a461090d565b60405161018b91906114c9565b6101c46102bf3660046113db565b61092d565b61014f6102d23660046114fc565b6109c2565b6101c46102e53660046113f8565b610b8b565b6101c46102f83660046113f8565b610bc4565b61014f61030b3660046113f8565b610bcf565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610387919061153d565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061155a565b60405180910390fd5b6103c981610d2b565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d91906115a4565b6104595760405162461bcd60e51b81526004016103b7906115c6565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610e30565b60335460006105f86103e883611624565b905060006103e8610607610eb0565b6106119190611624565b9050600061061f878361163c565b90508061062c8489611653565b6106369190611672565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a68685611624565b603355505050505092915050565b600054610100900460ff16158080156106d45750600054600160ff909116105b806106ee5750303b1580156106ee575060005460ff166001145b6107515760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610774576000805461ff0019166101001790555b61077e8383610f22565b80156107c4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006107d76102588361092d565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561082a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084e91906115a4565b61086a5760405162461bcd60e51b81526004016103b7906115c6565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e86033546108bc9190611624565b905060006103e86108cb610eb0565b6108d59190611624565b9050816108e28583611653565b6108ec9190611672565b949350505050565b60006107d782610b8b565b60006107d76102f88361092d565b60606040518060800160405280604d81526020016116ca604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa15801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d79190611694565b6001805460029081161415610a155760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a8d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610a98848484610fb3565b60335480831115610b275760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610b356103e883611624565b905060006103e8610b44610eb0565b610b4e9190611624565b9050600082610b5d8784611653565b610b679190611672565b9050610b73868561163c565b603355610b81888883611036565b5050505050505050565b6000806103e8603354610b9e9190611624565b905060006103e8610bad610eb0565b610bb79190611624565b9050806108e28386611653565b60006107d7826108a9565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c46919061153d565b6001600160a01b0316336001600160a01b031614610c765760405162461bcd60e51b81526004016103b79061155a565b600154198119600154191614610cf45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610db95760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610eac5760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190611694565b905090565b600054610100900460ff16610f8d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b038416179055610eac81600061104a565b6032546001600160a01b038381169116146107c45760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6107c46001600160a01b0383168483611136565b6000546201000090046001600160a01b031615801561107157506001600160a01b03821615155b6110f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610eac82610d2b565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526107c4928692916000916111c6918516908490611243565b8051909150156107c457808060200190518101906111e491906115a4565b6107c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b6060611252848460008561125c565b90505b9392505050565b6060824710156112bd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6113145760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b0316858760405161133091906116ad565b60006040518083038185875af1925050503d806000811461136d576040519150601f19603f3d011682016040523d82523d6000602084013e611372565b606091505b509150915061138282828661138d565b979650505050505050565b6060831561139c575081611255565b8251156113ac5782518084602001fd5b8160405162461bcd60e51b81526004016103b791906114c9565b6001600160a01b03811681146103c957600080fd5b6000602082840312156113ed57600080fd5b8135611255816113c6565b60006020828403121561140a57600080fd5b5035919050565b6000806040838503121561142457600080fd5b823561142f816113c6565b946020939093013593505050565b6000806040838503121561145057600080fd5b823561145b816113c6565b9150602083013561146b816113c6565b809150509250929050565b60006020828403121561148857600080fd5b813560ff8116811461125557600080fd5b60005b838110156114b457818101518382015260200161149c565b838111156114c3576000848401525b50505050565b60208152600082518060208401526114e8816040850160208701611499565b601f01601f19169190910160400192915050565b60008060006060848603121561151157600080fd5b833561151c816113c6565b9250602084013561152c816113c6565b929592945050506040919091013590565b60006020828403121561154f57600080fd5b8151611255816113c6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156115b657600080fd5b8151801515811461125557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156116375761163761160e565b500190565b60008282101561164e5761164e61160e565b500390565b600081600019048311821515161561166d5761166d61160e565b500290565b60008261168f57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156116a657600080fd5b5051919050565b600082516116bf818460208701611499565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220e94b864fb5ca1469d7a213a96a7740a063e352988cf2baba0e6baef5578eca1164736f6c634300080c0033 diff --git a/pkg/bindings/StrategyBaseTVLLimits/binding.go b/pkg/bindings/StrategyBaseTVLLimits/binding.go new file mode 100644 index 000000000..80c477a82 --- /dev/null +++ b/pkg/bindings/StrategyBaseTVLLimits/binding.go @@ -0,0 +1,1739 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package StrategyBaseTVLLimits + +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 +) + +// 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\":\"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\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", + Bin: "0x60a06040523480156200001157600080fd5b5060405162001d5c38038062001d5c833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611be36200017960003960008181610216015281816107a901528181610b470152610c120152611be36000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a13660046117b8565b6103ba565b005b6101a66101b6366004611802565b61049d565b6101a66101c936600461181f565b610550565b6101a66101dc366004611841565b610605565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f000000000000000000000000000000000000000000000000000000000000000081565b61024160335481565b604051908152602001610208565b61024160645481565b61024161026636600461185a565b610749565b6101a6610279366004611886565b6108ed565b61024161028c366004611802565b6109bb565b6101a66109cf565b6102b86102a73660046118bf565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e7366004611841565b610a9b565b6000546101f4906201000090046001600160a01b031681565b610241610313366004611841565b610ae6565b610241610326366004611802565b610af1565b610333610aff565b6040516102089190611912565b61024161034e366004611802565b610b1f565b6101a6610361366004611945565b610bb4565b60645460655460408051928352602083019190915201610208565b61024161038f366004611841565b610d7d565b6102416103a2366004611841565b610db6565b6101a66103b5366004611841565b610dc1565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b815260040161041090611986565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b6104468585610f1d565b610450838361102a565b8015610496576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051491906119d4565b6001600160a01b0316336001600160a01b0316146105445760405162461bcd60e51b8152600401610410906119f1565b61054d816110bb565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906119d4565b6001600160a01b0316336001600160a01b0316146105f75760405162461bcd60e51b8152600401610410906119f1565b6106018282610f1d565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106769190611a3b565b6106925760405162461bcd60e51b815260040161041090611a5d565b6001548181161461070b5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001805460009182918116141561079e5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108165760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b61082084846111c0565b60335460006108316103e883611abb565b905060006103e86108406112a2565b61084a9190611abb565b905060006108588783611ad3565b9050806108658489611aea565b61086f9190611b09565b9550856108d55760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6108df8685611abb565b603355505050505092915050565b600054610100900460ff161580801561090d5750600054600160ff909116105b806109275750303b158015610927575060005460ff166001145b6109435760405162461bcd60e51b815260040161041090611986565b6000805460ff191660011790558015610966576000805461ff0019166101001790555b610970838361102a565b80156109b6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109c96102e783610b1f565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a409190611a3b565b610a5c5760405162461bcd60e51b815260040161041090611a5d565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610aae9190611abb565b905060006103e8610abd6112a2565b610ac79190611abb565b905081610ad48583611aea565b610ade9190611b09565b949350505050565b60006109c982610d7d565b60006109c96103a283610b1f565b60606040518060800160405280604d8152602001611b61604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190611b2b565b6001805460029081161415610c075760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c7f5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610c8a848484611314565b60335480831115610d195760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d276103e883611abb565b905060006103e8610d366112a2565b610d409190611abb565b9050600082610d4f8784611aea565b610d599190611b09565b9050610d658685611ad3565b603355610d73888883611397565b5050505050505050565b6000806103e8603354610d909190611abb565b905060006103e8610d9f6112a2565b610da99190611abb565b905080610ad48386611aea565b60006109c982610a9b565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3891906119d4565b6001600160a01b0316336001600160a01b031614610e685760405162461bcd60e51b8152600401610410906119f1565b600154198119600154191614610ee65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161073e565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a18082111561101f5760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110955760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b0384161790556106018160006113ab565b6001600160a01b0381166111495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561122a5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b6065546112356112a2565b11156112985760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b6106018282611497565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130f9190611b2b565b905090565b6032546001600160a01b038381169116146109b65760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109b66001600160a01b0383168483611513565b6000546201000090046001600160a01b03161580156113d257506001600160a01b03821615155b6114545760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610601826110bb565b6032546001600160a01b038381169116146106015760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109b6928692916000916115a3918516908490611620565b8051909150156109b657808060200190518101906115c19190611a3b565b6109b65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b606061162f8484600085611639565b90505b9392505050565b60608247101561169a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6116f15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b0316858760405161170d9190611b44565b60006040518083038185875af1925050503d806000811461174a576040519150601f19603f3d011682016040523d82523d6000602084013e61174f565b606091505b509150915061175f82828661176a565b979650505050505050565b60608315611779575081611632565b8251156117895782518084602001fd5b8160405162461bcd60e51b81526004016104109190611912565b6001600160a01b038116811461054d57600080fd5b600080600080608085870312156117ce57600080fd5b843593506020850135925060408501356117e7816117a3565b915060608501356117f7816117a3565b939692955090935050565b60006020828403121561181457600080fd5b8135611632816117a3565b6000806040838503121561183257600080fd5b50508035926020909101359150565b60006020828403121561185357600080fd5b5035919050565b6000806040838503121561186d57600080fd5b8235611878816117a3565b946020939093013593505050565b6000806040838503121561189957600080fd5b82356118a4816117a3565b915060208301356118b4816117a3565b809150509250929050565b6000602082840312156118d157600080fd5b813560ff8116811461163257600080fd5b60005b838110156118fd5781810151838201526020016118e5565b8381111561190c576000848401525b50505050565b60208152600082518060208401526119318160408501602087016118e2565b601f01601f19169190910160400192915050565b60008060006060848603121561195a57600080fd5b8335611965816117a3565b92506020840135611975816117a3565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156119e657600080fd5b8151611632816117a3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611a4d57600080fd5b8151801515811461163257600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611ace57611ace611aa5565b500190565b600082821015611ae557611ae5611aa5565b500390565b6000816000190483118215151615611b0457611b04611aa5565b500290565b600082611b2657634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b3d57600080fd5b5051919050565b60008251611b568184602087016118e2565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212207bab305b60c15e9b123f16d012398eb332b53e2c758264adc4b591ab3941a40564736f6c634300080c0033", +} + +// StrategyBaseTVLLimitsABI is the input ABI used to generate the binding from. +// Deprecated: Use StrategyBaseTVLLimitsMetaData.ABI instead. +var StrategyBaseTVLLimitsABI = StrategyBaseTVLLimitsMetaData.ABI + +// StrategyBaseTVLLimitsBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use StrategyBaseTVLLimitsMetaData.Bin instead. +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) { + parsed, err := StrategyBaseTVLLimitsMetaData.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(StrategyBaseTVLLimitsBin), backend, _strategyManager) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &StrategyBaseTVLLimits{StrategyBaseTVLLimitsCaller: StrategyBaseTVLLimitsCaller{contract: contract}, StrategyBaseTVLLimitsTransactor: StrategyBaseTVLLimitsTransactor{contract: contract}, StrategyBaseTVLLimitsFilterer: StrategyBaseTVLLimitsFilterer{contract: contract}}, nil +} + +// StrategyBaseTVLLimits is an auto generated Go binding around an Ethereum contract. +type StrategyBaseTVLLimits struct { + StrategyBaseTVLLimitsCaller // Read-only binding to the contract + StrategyBaseTVLLimitsTransactor // Write-only binding to the contract + StrategyBaseTVLLimitsFilterer // Log filterer for contract events +} + +// StrategyBaseTVLLimitsCaller is an auto generated read-only Go binding around an Ethereum contract. +type StrategyBaseTVLLimitsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StrategyBaseTVLLimitsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StrategyBaseTVLLimitsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StrategyBaseTVLLimitsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StrategyBaseTVLLimitsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StrategyBaseTVLLimitsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StrategyBaseTVLLimitsSession struct { + Contract *StrategyBaseTVLLimits // 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 +} + +// StrategyBaseTVLLimitsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StrategyBaseTVLLimitsCallerSession struct { + Contract *StrategyBaseTVLLimitsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StrategyBaseTVLLimitsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StrategyBaseTVLLimitsTransactorSession struct { + Contract *StrategyBaseTVLLimitsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StrategyBaseTVLLimitsRaw is an auto generated low-level Go binding around an Ethereum contract. +type StrategyBaseTVLLimitsRaw struct { + Contract *StrategyBaseTVLLimits // Generic contract binding to access the raw methods on +} + +// StrategyBaseTVLLimitsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StrategyBaseTVLLimitsCallerRaw struct { + Contract *StrategyBaseTVLLimitsCaller // Generic read-only contract binding to access the raw methods on +} + +// StrategyBaseTVLLimitsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StrategyBaseTVLLimitsTransactorRaw struct { + Contract *StrategyBaseTVLLimitsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStrategyBaseTVLLimits creates a new instance of StrategyBaseTVLLimits, bound to a specific deployed contract. +func NewStrategyBaseTVLLimits(address common.Address, backend bind.ContractBackend) (*StrategyBaseTVLLimits, error) { + contract, err := bindStrategyBaseTVLLimits(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StrategyBaseTVLLimits{StrategyBaseTVLLimitsCaller: StrategyBaseTVLLimitsCaller{contract: contract}, StrategyBaseTVLLimitsTransactor: StrategyBaseTVLLimitsTransactor{contract: contract}, StrategyBaseTVLLimitsFilterer: StrategyBaseTVLLimitsFilterer{contract: contract}}, nil +} + +// NewStrategyBaseTVLLimitsCaller creates a new read-only instance of StrategyBaseTVLLimits, bound to a specific deployed contract. +func NewStrategyBaseTVLLimitsCaller(address common.Address, caller bind.ContractCaller) (*StrategyBaseTVLLimitsCaller, error) { + contract, err := bindStrategyBaseTVLLimits(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StrategyBaseTVLLimitsCaller{contract: contract}, nil +} + +// NewStrategyBaseTVLLimitsTransactor creates a new write-only instance of StrategyBaseTVLLimits, bound to a specific deployed contract. +func NewStrategyBaseTVLLimitsTransactor(address common.Address, transactor bind.ContractTransactor) (*StrategyBaseTVLLimitsTransactor, error) { + contract, err := bindStrategyBaseTVLLimits(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StrategyBaseTVLLimitsTransactor{contract: contract}, nil +} + +// NewStrategyBaseTVLLimitsFilterer creates a new log filterer instance of StrategyBaseTVLLimits, bound to a specific deployed contract. +func NewStrategyBaseTVLLimitsFilterer(address common.Address, filterer bind.ContractFilterer) (*StrategyBaseTVLLimitsFilterer, error) { + contract, err := bindStrategyBaseTVLLimits(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StrategyBaseTVLLimitsFilterer{contract: contract}, nil +} + +// bindStrategyBaseTVLLimits binds a generic wrapper to an already deployed contract. +func bindStrategyBaseTVLLimits(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StrategyBaseTVLLimitsMetaData.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 (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StrategyBaseTVLLimits.Contract.StrategyBaseTVLLimitsCaller.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 (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.Contract.StrategyBaseTVLLimitsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.Contract.StrategyBaseTVLLimitsTransactor.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 (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StrategyBaseTVLLimits.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 (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.Contract.contract.Transact(opts, method, params...) +} + +// Explanation is a free data retrieval call binding the contract method 0xab5921e1. +// +// Solidity: function explanation() pure returns(string) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCaller) Explanation(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _StrategyBaseTVLLimits.contract.Call(opts, &out, "explanation") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Explanation is a free data retrieval call binding the contract method 0xab5921e1. +// +// Solidity: function explanation() pure returns(string) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) Explanation() (string, error) { + return _StrategyBaseTVLLimits.Contract.Explanation(&_StrategyBaseTVLLimits.CallOpts) +} + +// Explanation is a free data retrieval call binding the contract method 0xab5921e1. +// +// Solidity: function explanation() pure returns(string) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCallerSession) Explanation() (string, error) { + return _StrategyBaseTVLLimits.Contract.Explanation(&_StrategyBaseTVLLimits.CallOpts) +} + +// GetTVLLimits is a free data retrieval call binding the contract method 0xdf6fadc1. +// +// Solidity: function getTVLLimits() view returns(uint256, uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCaller) GetTVLLimits(opts *bind.CallOpts) (*big.Int, *big.Int, error) { + var out []interface{} + err := _StrategyBaseTVLLimits.contract.Call(opts, &out, "getTVLLimits") + + if err != nil { + return *new(*big.Int), *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return out0, out1, err + +} + +// GetTVLLimits is a free data retrieval call binding the contract method 0xdf6fadc1. +// +// Solidity: function getTVLLimits() view returns(uint256, uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) GetTVLLimits() (*big.Int, *big.Int, error) { + return _StrategyBaseTVLLimits.Contract.GetTVLLimits(&_StrategyBaseTVLLimits.CallOpts) +} + +// GetTVLLimits is a free data retrieval call binding the contract method 0xdf6fadc1. +// +// Solidity: function getTVLLimits() view returns(uint256, uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCallerSession) GetTVLLimits() (*big.Int, *big.Int, error) { + return _StrategyBaseTVLLimits.Contract.GetTVLLimits(&_StrategyBaseTVLLimits.CallOpts) +} + +// MaxPerDeposit is a free data retrieval call binding the contract method 0x43fe08b0. +// +// Solidity: function maxPerDeposit() view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCaller) MaxPerDeposit(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _StrategyBaseTVLLimits.contract.Call(opts, &out, "maxPerDeposit") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MaxPerDeposit is a free data retrieval call binding the contract method 0x43fe08b0. +// +// Solidity: function maxPerDeposit() view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) MaxPerDeposit() (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.MaxPerDeposit(&_StrategyBaseTVLLimits.CallOpts) +} + +// MaxPerDeposit is a free data retrieval call binding the contract method 0x43fe08b0. +// +// Solidity: function maxPerDeposit() view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCallerSession) MaxPerDeposit() (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.MaxPerDeposit(&_StrategyBaseTVLLimits.CallOpts) +} + +// MaxTotalDeposits is a free data retrieval call binding the contract method 0x61b01b5d. +// +// Solidity: function maxTotalDeposits() view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCaller) MaxTotalDeposits(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _StrategyBaseTVLLimits.contract.Call(opts, &out, "maxTotalDeposits") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MaxTotalDeposits is a free data retrieval call binding the contract method 0x61b01b5d. +// +// Solidity: function maxTotalDeposits() view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) MaxTotalDeposits() (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.MaxTotalDeposits(&_StrategyBaseTVLLimits.CallOpts) +} + +// MaxTotalDeposits is a free data retrieval call binding the contract method 0x61b01b5d. +// +// Solidity: function maxTotalDeposits() view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCallerSession) MaxTotalDeposits() (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.MaxTotalDeposits(&_StrategyBaseTVLLimits.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCaller) Paused(opts *bind.CallOpts, index uint8) (bool, error) { + var out []interface{} + err := _StrategyBaseTVLLimits.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 (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) Paused(index uint8) (bool, error) { + return _StrategyBaseTVLLimits.Contract.Paused(&_StrategyBaseTVLLimits.CallOpts, index) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCallerSession) Paused(index uint8) (bool, error) { + return _StrategyBaseTVLLimits.Contract.Paused(&_StrategyBaseTVLLimits.CallOpts, index) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCaller) Paused0(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _StrategyBaseTVLLimits.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 (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) Paused0() (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.Paused0(&_StrategyBaseTVLLimits.CallOpts) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCallerSession) Paused0() (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.Paused0(&_StrategyBaseTVLLimits.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCaller) PauserRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _StrategyBaseTVLLimits.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 (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) PauserRegistry() (common.Address, error) { + return _StrategyBaseTVLLimits.Contract.PauserRegistry(&_StrategyBaseTVLLimits.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCallerSession) PauserRegistry() (common.Address, error) { + return _StrategyBaseTVLLimits.Contract.PauserRegistry(&_StrategyBaseTVLLimits.CallOpts) +} + +// Shares is a free data retrieval call binding the contract method 0xce7c2ac2. +// +// Solidity: function shares(address user) view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCaller) Shares(opts *bind.CallOpts, user common.Address) (*big.Int, error) { + var out []interface{} + err := _StrategyBaseTVLLimits.contract.Call(opts, &out, "shares", user) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Shares is a free data retrieval call binding the contract method 0xce7c2ac2. +// +// Solidity: function shares(address user) view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) Shares(user common.Address) (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.Shares(&_StrategyBaseTVLLimits.CallOpts, user) +} + +// Shares is a free data retrieval call binding the contract method 0xce7c2ac2. +// +// Solidity: function shares(address user) view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCallerSession) Shares(user common.Address) (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.Shares(&_StrategyBaseTVLLimits.CallOpts, user) +} + +// SharesToUnderlying is a free data retrieval call binding the contract method 0xf3e73875. +// +// Solidity: function sharesToUnderlying(uint256 amountShares) view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCaller) SharesToUnderlying(opts *bind.CallOpts, amountShares *big.Int) (*big.Int, error) { + var out []interface{} + err := _StrategyBaseTVLLimits.contract.Call(opts, &out, "sharesToUnderlying", amountShares) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// SharesToUnderlying is a free data retrieval call binding the contract method 0xf3e73875. +// +// Solidity: function sharesToUnderlying(uint256 amountShares) view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) SharesToUnderlying(amountShares *big.Int) (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.SharesToUnderlying(&_StrategyBaseTVLLimits.CallOpts, amountShares) +} + +// SharesToUnderlying is a free data retrieval call binding the contract method 0xf3e73875. +// +// Solidity: function sharesToUnderlying(uint256 amountShares) view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCallerSession) SharesToUnderlying(amountShares *big.Int) (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.SharesToUnderlying(&_StrategyBaseTVLLimits.CallOpts, amountShares) +} + +// SharesToUnderlyingView is a free data retrieval call binding the contract method 0x7a8b2637. +// +// Solidity: function sharesToUnderlyingView(uint256 amountShares) view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCaller) SharesToUnderlyingView(opts *bind.CallOpts, amountShares *big.Int) (*big.Int, error) { + var out []interface{} + err := _StrategyBaseTVLLimits.contract.Call(opts, &out, "sharesToUnderlyingView", amountShares) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// SharesToUnderlyingView is a free data retrieval call binding the contract method 0x7a8b2637. +// +// Solidity: function sharesToUnderlyingView(uint256 amountShares) view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) SharesToUnderlyingView(amountShares *big.Int) (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.SharesToUnderlyingView(&_StrategyBaseTVLLimits.CallOpts, amountShares) +} + +// SharesToUnderlyingView is a free data retrieval call binding the contract method 0x7a8b2637. +// +// Solidity: function sharesToUnderlyingView(uint256 amountShares) view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCallerSession) SharesToUnderlyingView(amountShares *big.Int) (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.SharesToUnderlyingView(&_StrategyBaseTVLLimits.CallOpts, amountShares) +} + +// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. +// +// Solidity: function strategyManager() view returns(address) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCaller) StrategyManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _StrategyBaseTVLLimits.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 (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) StrategyManager() (common.Address, error) { + return _StrategyBaseTVLLimits.Contract.StrategyManager(&_StrategyBaseTVLLimits.CallOpts) +} + +// StrategyManager is a free data retrieval call binding the contract method 0x39b70e38. +// +// Solidity: function strategyManager() view returns(address) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCallerSession) StrategyManager() (common.Address, error) { + return _StrategyBaseTVLLimits.Contract.StrategyManager(&_StrategyBaseTVLLimits.CallOpts) +} + +// TotalShares is a free data retrieval call binding the contract method 0x3a98ef39. +// +// Solidity: function totalShares() view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCaller) TotalShares(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _StrategyBaseTVLLimits.contract.Call(opts, &out, "totalShares") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalShares is a free data retrieval call binding the contract method 0x3a98ef39. +// +// Solidity: function totalShares() view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) TotalShares() (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.TotalShares(&_StrategyBaseTVLLimits.CallOpts) +} + +// TotalShares is a free data retrieval call binding the contract method 0x3a98ef39. +// +// Solidity: function totalShares() view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCallerSession) TotalShares() (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.TotalShares(&_StrategyBaseTVLLimits.CallOpts) +} + +// UnderlyingToShares is a free data retrieval call binding the contract method 0x8c871019. +// +// Solidity: function underlyingToShares(uint256 amountUnderlying) view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCaller) UnderlyingToShares(opts *bind.CallOpts, amountUnderlying *big.Int) (*big.Int, error) { + var out []interface{} + err := _StrategyBaseTVLLimits.contract.Call(opts, &out, "underlyingToShares", amountUnderlying) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UnderlyingToShares is a free data retrieval call binding the contract method 0x8c871019. +// +// Solidity: function underlyingToShares(uint256 amountUnderlying) view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) UnderlyingToShares(amountUnderlying *big.Int) (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.UnderlyingToShares(&_StrategyBaseTVLLimits.CallOpts, amountUnderlying) +} + +// UnderlyingToShares is a free data retrieval call binding the contract method 0x8c871019. +// +// Solidity: function underlyingToShares(uint256 amountUnderlying) view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCallerSession) UnderlyingToShares(amountUnderlying *big.Int) (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.UnderlyingToShares(&_StrategyBaseTVLLimits.CallOpts, amountUnderlying) +} + +// UnderlyingToSharesView is a free data retrieval call binding the contract method 0xe3dae51c. +// +// Solidity: function underlyingToSharesView(uint256 amountUnderlying) view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCaller) UnderlyingToSharesView(opts *bind.CallOpts, amountUnderlying *big.Int) (*big.Int, error) { + var out []interface{} + err := _StrategyBaseTVLLimits.contract.Call(opts, &out, "underlyingToSharesView", amountUnderlying) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UnderlyingToSharesView is a free data retrieval call binding the contract method 0xe3dae51c. +// +// Solidity: function underlyingToSharesView(uint256 amountUnderlying) view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) UnderlyingToSharesView(amountUnderlying *big.Int) (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.UnderlyingToSharesView(&_StrategyBaseTVLLimits.CallOpts, amountUnderlying) +} + +// UnderlyingToSharesView is a free data retrieval call binding the contract method 0xe3dae51c. +// +// Solidity: function underlyingToSharesView(uint256 amountUnderlying) view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCallerSession) UnderlyingToSharesView(amountUnderlying *big.Int) (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.UnderlyingToSharesView(&_StrategyBaseTVLLimits.CallOpts, amountUnderlying) +} + +// UnderlyingToken is a free data retrieval call binding the contract method 0x2495a599. +// +// Solidity: function underlyingToken() view returns(address) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCaller) UnderlyingToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _StrategyBaseTVLLimits.contract.Call(opts, &out, "underlyingToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// UnderlyingToken is a free data retrieval call binding the contract method 0x2495a599. +// +// Solidity: function underlyingToken() view returns(address) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) UnderlyingToken() (common.Address, error) { + return _StrategyBaseTVLLimits.Contract.UnderlyingToken(&_StrategyBaseTVLLimits.CallOpts) +} + +// UnderlyingToken is a free data retrieval call binding the contract method 0x2495a599. +// +// Solidity: function underlyingToken() view returns(address) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCallerSession) UnderlyingToken() (common.Address, error) { + return _StrategyBaseTVLLimits.Contract.UnderlyingToken(&_StrategyBaseTVLLimits.CallOpts) +} + +// UserUnderlyingView is a free data retrieval call binding the contract method 0x553ca5f8. +// +// Solidity: function userUnderlyingView(address user) view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCaller) UserUnderlyingView(opts *bind.CallOpts, user common.Address) (*big.Int, error) { + var out []interface{} + err := _StrategyBaseTVLLimits.contract.Call(opts, &out, "userUnderlyingView", user) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// UserUnderlyingView is a free data retrieval call binding the contract method 0x553ca5f8. +// +// Solidity: function userUnderlyingView(address user) view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) UserUnderlyingView(user common.Address) (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.UserUnderlyingView(&_StrategyBaseTVLLimits.CallOpts, user) +} + +// UserUnderlyingView is a free data retrieval call binding the contract method 0x553ca5f8. +// +// Solidity: function userUnderlyingView(address user) view returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsCallerSession) UserUnderlyingView(user common.Address) (*big.Int, error) { + return _StrategyBaseTVLLimits.Contract.UserUnderlyingView(&_StrategyBaseTVLLimits.CallOpts, user) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address token, uint256 amount) returns(uint256 newShares) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactor) Deposit(opts *bind.TransactOpts, token common.Address, amount *big.Int) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.contract.Transact(opts, "deposit", token, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address token, uint256 amount) returns(uint256 newShares) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) Deposit(token common.Address, amount *big.Int) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.Contract.Deposit(&_StrategyBaseTVLLimits.TransactOpts, token, amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. +// +// Solidity: function deposit(address token, uint256 amount) returns(uint256 newShares) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactorSession) Deposit(token common.Address, amount *big.Int) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.Contract.Deposit(&_StrategyBaseTVLLimits.TransactOpts, token, amount) +} + +// Initialize is a paid mutator transaction binding the contract method 0x019e2729. +// +// 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) +} + +// Initialize is a paid mutator transaction binding the contract method 0x019e2729. +// +// 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) +} + +// Initialize is a paid mutator transaction binding the contract method 0x019e2729. +// +// 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) +} + +// Initialize0 is a paid mutator transaction binding the contract method 0x485cc955. +// +// 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) +} + +// Initialize0 is a paid mutator transaction binding the contract method 0x485cc955. +// +// 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) +} + +// Initialize0 is a paid mutator transaction binding the contract method 0x485cc955. +// +// 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) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactor) Pause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.contract.Transact(opts, "pause", newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.Contract.Pause(&_StrategyBaseTVLLimits.TransactOpts, newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactorSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.Contract.Pause(&_StrategyBaseTVLLimits.TransactOpts, newPausedStatus) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactor) PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.contract.Transact(opts, "pauseAll") +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) PauseAll() (*types.Transaction, error) { + return _StrategyBaseTVLLimits.Contract.PauseAll(&_StrategyBaseTVLLimits.TransactOpts) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactorSession) PauseAll() (*types.Transaction, error) { + 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() +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactor) SetTVLLimits(opts *bind.TransactOpts, newMaxPerDeposit *big.Int, newMaxTotalDeposits *big.Int) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.contract.Transact(opts, "setTVLLimits", newMaxPerDeposit, newMaxTotalDeposits) +} + +// SetTVLLimits is a paid mutator transaction binding the contract method 0x11c70c9d. +// +// Solidity: function setTVLLimits(uint256 newMaxPerDeposit, uint256 newMaxTotalDeposits) returns() +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) SetTVLLimits(newMaxPerDeposit *big.Int, newMaxTotalDeposits *big.Int) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.Contract.SetTVLLimits(&_StrategyBaseTVLLimits.TransactOpts, newMaxPerDeposit, newMaxTotalDeposits) +} + +// SetTVLLimits is a paid mutator transaction binding the contract method 0x11c70c9d. +// +// Solidity: function setTVLLimits(uint256 newMaxPerDeposit, uint256 newMaxTotalDeposits) returns() +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactorSession) SetTVLLimits(newMaxPerDeposit *big.Int, newMaxTotalDeposits *big.Int) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.Contract.SetTVLLimits(&_StrategyBaseTVLLimits.TransactOpts, newMaxPerDeposit, newMaxTotalDeposits) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactor) Unpause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.contract.Transact(opts, "unpause", newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.Contract.Unpause(&_StrategyBaseTVLLimits.TransactOpts, newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactorSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.Contract.Unpause(&_StrategyBaseTVLLimits.TransactOpts, newPausedStatus) +} + +// UserUnderlying is a paid mutator transaction binding the contract method 0x8f6a6240. +// +// Solidity: function userUnderlying(address user) returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactor) UserUnderlying(opts *bind.TransactOpts, user common.Address) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.contract.Transact(opts, "userUnderlying", user) +} + +// UserUnderlying is a paid mutator transaction binding the contract method 0x8f6a6240. +// +// Solidity: function userUnderlying(address user) returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) UserUnderlying(user common.Address) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.Contract.UserUnderlying(&_StrategyBaseTVLLimits.TransactOpts, user) +} + +// UserUnderlying is a paid mutator transaction binding the contract method 0x8f6a6240. +// +// Solidity: function userUnderlying(address user) returns(uint256) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactorSession) UserUnderlying(user common.Address) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.Contract.UserUnderlying(&_StrategyBaseTVLLimits.TransactOpts, user) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address recipient, address token, uint256 amountShares) returns() +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactor) Withdraw(opts *bind.TransactOpts, recipient common.Address, token common.Address, amountShares *big.Int) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.contract.Transact(opts, "withdraw", recipient, token, amountShares) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address recipient, address token, uint256 amountShares) returns() +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsSession) Withdraw(recipient common.Address, token common.Address, amountShares *big.Int) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.Contract.Withdraw(&_StrategyBaseTVLLimits.TransactOpts, recipient, token, amountShares) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address recipient, address token, uint256 amountShares) returns() +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsTransactorSession) Withdraw(recipient common.Address, token common.Address, amountShares *big.Int) (*types.Transaction, error) { + return _StrategyBaseTVLLimits.Contract.Withdraw(&_StrategyBaseTVLLimits.TransactOpts, recipient, token, amountShares) +} + +// StrategyBaseTVLLimitsInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the StrategyBaseTVLLimits contract. +type StrategyBaseTVLLimitsInitializedIterator struct { + Event *StrategyBaseTVLLimitsInitialized // Event containing the contract specifics 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 *StrategyBaseTVLLimitsInitializedIterator) 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(StrategyBaseTVLLimitsInitialized) + 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(StrategyBaseTVLLimitsInitialized) + 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 *StrategyBaseTVLLimitsInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyBaseTVLLimitsInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StrategyBaseTVLLimitsInitialized represents a Initialized event raised by the StrategyBaseTVLLimits contract. +type StrategyBaseTVLLimitsInitialized 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 (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsFilterer) FilterInitialized(opts *bind.FilterOpts) (*StrategyBaseTVLLimitsInitializedIterator, error) { + + logs, sub, err := _StrategyBaseTVLLimits.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &StrategyBaseTVLLimitsInitializedIterator{contract: _StrategyBaseTVLLimits.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 (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *StrategyBaseTVLLimitsInitialized) (event.Subscription, error) { + + logs, sub, err := _StrategyBaseTVLLimits.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(StrategyBaseTVLLimitsInitialized) + if err := _StrategyBaseTVLLimits.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 (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsFilterer) ParseInitialized(log types.Log) (*StrategyBaseTVLLimitsInitialized, error) { + event := new(StrategyBaseTVLLimitsInitialized) + if err := _StrategyBaseTVLLimits.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StrategyBaseTVLLimitsMaxPerDepositUpdatedIterator is returned from FilterMaxPerDepositUpdated and is used to iterate over the raw logs and unpacked data for MaxPerDepositUpdated events raised by the StrategyBaseTVLLimits contract. +type StrategyBaseTVLLimitsMaxPerDepositUpdatedIterator struct { + Event *StrategyBaseTVLLimitsMaxPerDepositUpdated // Event containing the contract specifics 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 *StrategyBaseTVLLimitsMaxPerDepositUpdatedIterator) 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(StrategyBaseTVLLimitsMaxPerDepositUpdated) + 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(StrategyBaseTVLLimitsMaxPerDepositUpdated) + 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 *StrategyBaseTVLLimitsMaxPerDepositUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyBaseTVLLimitsMaxPerDepositUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StrategyBaseTVLLimitsMaxPerDepositUpdated represents a MaxPerDepositUpdated event raised by the StrategyBaseTVLLimits contract. +type StrategyBaseTVLLimitsMaxPerDepositUpdated struct { + PreviousValue *big.Int + NewValue *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMaxPerDepositUpdated is a free log retrieval operation binding the contract event 0xf97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5. +// +// Solidity: event MaxPerDepositUpdated(uint256 previousValue, uint256 newValue) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsFilterer) FilterMaxPerDepositUpdated(opts *bind.FilterOpts) (*StrategyBaseTVLLimitsMaxPerDepositUpdatedIterator, error) { + + logs, sub, err := _StrategyBaseTVLLimits.contract.FilterLogs(opts, "MaxPerDepositUpdated") + if err != nil { + return nil, err + } + return &StrategyBaseTVLLimitsMaxPerDepositUpdatedIterator{contract: _StrategyBaseTVLLimits.contract, event: "MaxPerDepositUpdated", logs: logs, sub: sub}, nil +} + +// WatchMaxPerDepositUpdated is a free log subscription operation binding the contract event 0xf97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5. +// +// Solidity: event MaxPerDepositUpdated(uint256 previousValue, uint256 newValue) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsFilterer) WatchMaxPerDepositUpdated(opts *bind.WatchOpts, sink chan<- *StrategyBaseTVLLimitsMaxPerDepositUpdated) (event.Subscription, error) { + + logs, sub, err := _StrategyBaseTVLLimits.contract.WatchLogs(opts, "MaxPerDepositUpdated") + 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(StrategyBaseTVLLimitsMaxPerDepositUpdated) + if err := _StrategyBaseTVLLimits.contract.UnpackLog(event, "MaxPerDepositUpdated", 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 +} + +// ParseMaxPerDepositUpdated is a log parse operation binding the contract event 0xf97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5. +// +// Solidity: event MaxPerDepositUpdated(uint256 previousValue, uint256 newValue) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsFilterer) ParseMaxPerDepositUpdated(log types.Log) (*StrategyBaseTVLLimitsMaxPerDepositUpdated, error) { + event := new(StrategyBaseTVLLimitsMaxPerDepositUpdated) + if err := _StrategyBaseTVLLimits.contract.UnpackLog(event, "MaxPerDepositUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StrategyBaseTVLLimitsMaxTotalDepositsUpdatedIterator is returned from FilterMaxTotalDepositsUpdated and is used to iterate over the raw logs and unpacked data for MaxTotalDepositsUpdated events raised by the StrategyBaseTVLLimits contract. +type StrategyBaseTVLLimitsMaxTotalDepositsUpdatedIterator struct { + Event *StrategyBaseTVLLimitsMaxTotalDepositsUpdated // Event containing the contract specifics 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 *StrategyBaseTVLLimitsMaxTotalDepositsUpdatedIterator) 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(StrategyBaseTVLLimitsMaxTotalDepositsUpdated) + 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(StrategyBaseTVLLimitsMaxTotalDepositsUpdated) + 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 *StrategyBaseTVLLimitsMaxTotalDepositsUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyBaseTVLLimitsMaxTotalDepositsUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StrategyBaseTVLLimitsMaxTotalDepositsUpdated represents a MaxTotalDepositsUpdated event raised by the StrategyBaseTVLLimits contract. +type StrategyBaseTVLLimitsMaxTotalDepositsUpdated struct { + PreviousValue *big.Int + NewValue *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMaxTotalDepositsUpdated is a free log retrieval operation binding the contract event 0x6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452. +// +// Solidity: event MaxTotalDepositsUpdated(uint256 previousValue, uint256 newValue) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsFilterer) FilterMaxTotalDepositsUpdated(opts *bind.FilterOpts) (*StrategyBaseTVLLimitsMaxTotalDepositsUpdatedIterator, error) { + + logs, sub, err := _StrategyBaseTVLLimits.contract.FilterLogs(opts, "MaxTotalDepositsUpdated") + if err != nil { + return nil, err + } + return &StrategyBaseTVLLimitsMaxTotalDepositsUpdatedIterator{contract: _StrategyBaseTVLLimits.contract, event: "MaxTotalDepositsUpdated", logs: logs, sub: sub}, nil +} + +// WatchMaxTotalDepositsUpdated is a free log subscription operation binding the contract event 0x6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452. +// +// Solidity: event MaxTotalDepositsUpdated(uint256 previousValue, uint256 newValue) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsFilterer) WatchMaxTotalDepositsUpdated(opts *bind.WatchOpts, sink chan<- *StrategyBaseTVLLimitsMaxTotalDepositsUpdated) (event.Subscription, error) { + + logs, sub, err := _StrategyBaseTVLLimits.contract.WatchLogs(opts, "MaxTotalDepositsUpdated") + 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(StrategyBaseTVLLimitsMaxTotalDepositsUpdated) + if err := _StrategyBaseTVLLimits.contract.UnpackLog(event, "MaxTotalDepositsUpdated", 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 +} + +// ParseMaxTotalDepositsUpdated is a log parse operation binding the contract event 0x6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452. +// +// Solidity: event MaxTotalDepositsUpdated(uint256 previousValue, uint256 newValue) +func (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsFilterer) ParseMaxTotalDepositsUpdated(log types.Log) (*StrategyBaseTVLLimitsMaxTotalDepositsUpdated, error) { + event := new(StrategyBaseTVLLimitsMaxTotalDepositsUpdated) + if err := _StrategyBaseTVLLimits.contract.UnpackLog(event, "MaxTotalDepositsUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StrategyBaseTVLLimitsPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the StrategyBaseTVLLimits contract. +type StrategyBaseTVLLimitsPausedIterator struct { + Event *StrategyBaseTVLLimitsPaused // Event containing the contract specifics 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 *StrategyBaseTVLLimitsPausedIterator) 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(StrategyBaseTVLLimitsPaused) + 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(StrategyBaseTVLLimitsPaused) + 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 *StrategyBaseTVLLimitsPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyBaseTVLLimitsPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StrategyBaseTVLLimitsPaused represents a Paused event raised by the StrategyBaseTVLLimits contract. +type StrategyBaseTVLLimitsPaused 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 (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsFilterer) FilterPaused(opts *bind.FilterOpts, account []common.Address) (*StrategyBaseTVLLimitsPausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _StrategyBaseTVLLimits.contract.FilterLogs(opts, "Paused", accountRule) + if err != nil { + return nil, err + } + return &StrategyBaseTVLLimitsPausedIterator{contract: _StrategyBaseTVLLimits.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 (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *StrategyBaseTVLLimitsPaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _StrategyBaseTVLLimits.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(StrategyBaseTVLLimitsPaused) + if err := _StrategyBaseTVLLimits.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 (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsFilterer) ParsePaused(log types.Log) (*StrategyBaseTVLLimitsPaused, error) { + event := new(StrategyBaseTVLLimitsPaused) + if err := _StrategyBaseTVLLimits.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + 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 +} + +// StrategyBaseTVLLimitsUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the StrategyBaseTVLLimits contract. +type StrategyBaseTVLLimitsUnpausedIterator struct { + Event *StrategyBaseTVLLimitsUnpaused // Event containing the contract specifics 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 *StrategyBaseTVLLimitsUnpausedIterator) 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(StrategyBaseTVLLimitsUnpaused) + 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(StrategyBaseTVLLimitsUnpaused) + 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 *StrategyBaseTVLLimitsUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyBaseTVLLimitsUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StrategyBaseTVLLimitsUnpaused represents a Unpaused event raised by the StrategyBaseTVLLimits contract. +type StrategyBaseTVLLimitsUnpaused 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 (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsFilterer) FilterUnpaused(opts *bind.FilterOpts, account []common.Address) (*StrategyBaseTVLLimitsUnpausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _StrategyBaseTVLLimits.contract.FilterLogs(opts, "Unpaused", accountRule) + if err != nil { + return nil, err + } + return &StrategyBaseTVLLimitsUnpausedIterator{contract: _StrategyBaseTVLLimits.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 (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *StrategyBaseTVLLimitsUnpaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _StrategyBaseTVLLimits.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(StrategyBaseTVLLimitsUnpaused) + if err := _StrategyBaseTVLLimits.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 (_StrategyBaseTVLLimits *StrategyBaseTVLLimitsFilterer) ParseUnpaused(log types.Log) (*StrategyBaseTVLLimitsUnpaused, error) { + event := new(StrategyBaseTVLLimitsUnpaused) + if err := _StrategyBaseTVLLimits.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/StrategyBaseTVLLimits/tmp.abi b/pkg/bindings/StrategyBaseTVLLimits/tmp.abi new file mode 100644 index 000000000..2d1212b3b --- /dev/null +++ b/pkg/bindings/StrategyBaseTVLLimits/tmp.abi @@ -0,0 +1,552 @@ +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_strategyManager", + "type": "address", + "internalType": "contract IStrategyManager" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "deposit", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "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": "contract IERC20" + }, + { + "name": "_pauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_underlyingToken", + "type": "address", + "internalType": "contract IERC20" + }, + { + "name": "_pauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "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": "contract IPauserRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "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": "contract IStrategyManager" + } + ], + "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": "contract IERC20" + } + ], + "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": "contract IERC20" + }, + { + "name": "amountShares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "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": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "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 + } +] diff --git a/pkg/bindings/StrategyBaseTVLLimits/tmp.bin b/pkg/bindings/StrategyBaseTVLLimits/tmp.bin new file mode 100644 index 000000000..a3d3af826 --- /dev/null +++ b/pkg/bindings/StrategyBaseTVLLimits/tmp.bin @@ -0,0 +1 @@ +0x60a06040523480156200001157600080fd5b5060405162001d5c38038062001d5c833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611be36200017960003960008181610216015281816107a901528181610b470152610c120152611be36000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a13660046117b8565b6103ba565b005b6101a66101b6366004611802565b61049d565b6101a66101c936600461181f565b610550565b6101a66101dc366004611841565b610605565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f000000000000000000000000000000000000000000000000000000000000000081565b61024160335481565b604051908152602001610208565b61024160645481565b61024161026636600461185a565b610749565b6101a6610279366004611886565b6108ed565b61024161028c366004611802565b6109bb565b6101a66109cf565b6102b86102a73660046118bf565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e7366004611841565b610a9b565b6000546101f4906201000090046001600160a01b031681565b610241610313366004611841565b610ae6565b610241610326366004611802565b610af1565b610333610aff565b6040516102089190611912565b61024161034e366004611802565b610b1f565b6101a6610361366004611945565b610bb4565b60645460655460408051928352602083019190915201610208565b61024161038f366004611841565b610d7d565b6102416103a2366004611841565b610db6565b6101a66103b5366004611841565b610dc1565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b815260040161041090611986565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b6104468585610f1d565b610450838361102a565b8015610496576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051491906119d4565b6001600160a01b0316336001600160a01b0316146105445760405162461bcd60e51b8152600401610410906119f1565b61054d816110bb565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906119d4565b6001600160a01b0316336001600160a01b0316146105f75760405162461bcd60e51b8152600401610410906119f1565b6106018282610f1d565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106769190611a3b565b6106925760405162461bcd60e51b815260040161041090611a5d565b6001548181161461070b5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001805460009182918116141561079e5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108165760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b61082084846111c0565b60335460006108316103e883611abb565b905060006103e86108406112a2565b61084a9190611abb565b905060006108588783611ad3565b9050806108658489611aea565b61086f9190611b09565b9550856108d55760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6108df8685611abb565b603355505050505092915050565b600054610100900460ff161580801561090d5750600054600160ff909116105b806109275750303b158015610927575060005460ff166001145b6109435760405162461bcd60e51b815260040161041090611986565b6000805460ff191660011790558015610966576000805461ff0019166101001790555b610970838361102a565b80156109b6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109c96102e783610b1f565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a409190611a3b565b610a5c5760405162461bcd60e51b815260040161041090611a5d565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610aae9190611abb565b905060006103e8610abd6112a2565b610ac79190611abb565b905081610ad48583611aea565b610ade9190611b09565b949350505050565b60006109c982610d7d565b60006109c96103a283610b1f565b60606040518060800160405280604d8152602001611b61604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610b90573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190611b2b565b6001805460029081161415610c075760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c7f5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610c8a848484611314565b60335480831115610d195760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d276103e883611abb565b905060006103e8610d366112a2565b610d409190611abb565b9050600082610d4f8784611aea565b610d599190611b09565b9050610d658685611ad3565b603355610d73888883611397565b5050505050505050565b6000806103e8603354610d909190611abb565b905060006103e8610d9f6112a2565b610da99190611abb565b905080610ad48386611aea565b60006109c982610a9b565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3891906119d4565b6001600160a01b0316336001600160a01b031614610e685760405162461bcd60e51b8152600401610410906119f1565b600154198119600154191614610ee65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161073e565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a18082111561101f5760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110955760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b0384161790556106018160006113ab565b6001600160a01b0381166111495760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561122a5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b6065546112356112a2565b11156112985760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b6106018282611497565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130f9190611b2b565b905090565b6032546001600160a01b038381169116146109b65760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109b66001600160a01b0383168483611513565b6000546201000090046001600160a01b03161580156113d257506001600160a01b03821615155b6114545760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610601826110bb565b6032546001600160a01b038381169116146106015760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109b6928692916000916115a3918516908490611620565b8051909150156109b657808060200190518101906115c19190611a3b565b6109b65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b606061162f8484600085611639565b90505b9392505050565b60608247101561169a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6116f15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b0316858760405161170d9190611b44565b60006040518083038185875af1925050503d806000811461174a576040519150601f19603f3d011682016040523d82523d6000602084013e61174f565b606091505b509150915061175f82828661176a565b979650505050505050565b60608315611779575081611632565b8251156117895782518084602001fd5b8160405162461bcd60e51b81526004016104109190611912565b6001600160a01b038116811461054d57600080fd5b600080600080608085870312156117ce57600080fd5b843593506020850135925060408501356117e7816117a3565b915060608501356117f7816117a3565b939692955090935050565b60006020828403121561181457600080fd5b8135611632816117a3565b6000806040838503121561183257600080fd5b50508035926020909101359150565b60006020828403121561185357600080fd5b5035919050565b6000806040838503121561186d57600080fd5b8235611878816117a3565b946020939093013593505050565b6000806040838503121561189957600080fd5b82356118a4816117a3565b915060208301356118b4816117a3565b809150509250929050565b6000602082840312156118d157600080fd5b813560ff8116811461163257600080fd5b60005b838110156118fd5781810151838201526020016118e5565b8381111561190c576000848401525b50505050565b60208152600082518060208401526119318160408501602087016118e2565b601f01601f19169190910160400192915050565b60008060006060848603121561195a57600080fd5b8335611965816117a3565b92506020840135611975816117a3565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156119e657600080fd5b8151611632816117a3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611a4d57600080fd5b8151801515811461163257600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611ace57611ace611aa5565b500190565b600082821015611ae557611ae5611aa5565b500390565b6000816000190483118215151615611b0457611b04611aa5565b500290565b600082611b2657634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b3d57600080fd5b5051919050565b60008251611b568184602087016118e2565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212207bab305b60c15e9b123f16d012398eb332b53e2c758264adc4b591ab3941a40564736f6c634300080c0033 diff --git a/pkg/bindings/StrategyManager/binding.go b/pkg/bindings/StrategyManager/binding.go new file mode 100644 index 000000000..ca103ffd5 --- /dev/null +++ b/pkg/bindings/StrategyManager/binding.go @@ -0,0 +1,2584 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package StrategyManager + +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 +) + +// IStrategyManagerDeprecatedStructQueuedWithdrawal is an auto generated low-level Go binding around an user-defined struct. +type IStrategyManagerDeprecatedStructQueuedWithdrawal struct { + Strategies []common.Address + Shares []*big.Int + Staker common.Address + WithdrawerAndNonce IStrategyManagerDeprecatedStructWithdrawerAndNonce + WithdrawalStartBlock uint32 + DelegatedAddress common.Address +} + +// IStrategyManagerDeprecatedStructWithdrawerAndNonce is an auto generated low-level Go binding around an user-defined struct. +type IStrategyManagerDeprecatedStructWithdrawerAndNonce struct { + Withdrawer common.Address + Nonce *big.Int +} + +// 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\":\"calculateWithdrawalRoot\",\"inputs\":[{\"name\":\"queuedWithdrawal\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_QueuedWithdrawal\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"components\":[{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"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\":\"migrateQueuedWithdrawal\",\"inputs\":[{\"name\":\"queuedWithdrawal\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_QueuedWithdrawal\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"components\":[{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"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\":\"function\",\"name\":\"withdrawalRootPending\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"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: "0x6101006040523480156200001257600080fd5b506040516200382938038062003829833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051613638620001f1600039600061161d0152600061048f015260006102a601526000818161059b01528181610c0501528181610f9f01528181610ff3015281816110f70152611bd301526136386000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c806394f649dd11610130578063c6656702116100b8578063df5cf7231161007c578063df5cf72314610596578063e7a050aa146105bd578063f2fde38b146105d0578063f698da25146105e3578063fabc1cbc146105eb57600080fd5b8063c665670214610520578063cbc2bd6214610533578063cd293f6f14610546578063cf756fdf14610570578063df5b35471461058357600080fd5b8063b43b514b116100ff578063b43b514b146104b1578063b5d8b5b8146104c4578063c3c6b3a9146104d7578063c4623ea1146104fa578063c608c7f31461050d57600080fd5b806394f649dd14610433578063967fc0d2146104545780639b4da03d14610467578063b13442711461048a57600080fd5b80635c975abb116101b35780637ecebe00116101825780637ecebe00146103b3578063886f1195146103d35780638b8aac3c146103e65780638c80d4e51461040f5780638da5cb5b1461042257600080fd5b80635c975abb14610355578063663c1de41461035d578063715018a6146103805780637a7e0d921461038857600080fd5b80634665bcda116101fa5780634665bcda146102a157806348825e94146102e05780634e5a426314610307578063595c6a671461031a5780635ac86ab71461032257600080fd5b806310d67a2f1461022c578063136439dd1461024157806320606b701461025457806332e89ace1461028e575b600080fd5b61023f61023a366004612b4a565b6105fe565b005b61023f61024f366004612b67565b6106ba565b61027b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61027b61029c366004612c00565b6107f9565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610285565b61027b7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61023f610315366004612ced565b610ae7565b61023f610b1f565b610345610330366004612d26565b609854600160ff9092169190911b9081161490565b6040519015158152602001610285565b60985461027b565b61034561036b366004612b4a565b60d16020526000908152604090205460ff1681565b61023f610be6565b61027b610396366004612d49565b60cd60209081526000928352604080842090915290825290205481565b61027b6103c1366004612b4a565b60ca6020526000908152604090205481565b6097546102c8906001600160a01b031681565b61027b6103f4366004612b4a565b6001600160a01b0316600090815260ce602052604090205490565b61023f61041d366004612d77565b610bfa565b6033546001600160a01b03166102c8565b610446610441366004612b4a565b610c53565b604051610285929190612e2c565b60cb546102c8906001600160a01b031681565b610345610475366004612b4a565b60d36020526000908152604090205460ff1681565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b61027b6104bf366004612fd5565b610dd3565b61023f6104d23660046130f0565b610e20565b6103456104e5366004612b67565b60cf6020526000908152604090205460ff1681565b61023f610508366004613132565b610f94565b61023f61051b366004613183565b610fe8565b61023f61052e366004612b4a565b6110a0565b6102c86105413660046131d6565b6110b1565b610559610554366004612fd5565b6110e9565b604080519215158352602083019190915201610285565b61023f61057e366004613132565b61117d565b61023f610591366004613202565b6112b1565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b61027b6105cb366004612d77565b6114da565b61023f6105de366004612b4a565b6115a3565b61027b611619565b61023f6105f9366004612b67565b611657565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610651573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610675919061326e565b6001600160a01b0316336001600160a01b0316146106ae5760405162461bcd60e51b81526004016106a59061328b565b60405180910390fd5b6106b7816117b3565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610702573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072691906132d5565b6107425760405162461bcd60e51b81526004016106a5906132f2565b609854818116146107bb5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156108505760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b600260655414156108a35760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a5565b60026065556001600160a01b038816600090815260d3602052604090205460ff161561094a5760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a4016106a5565b428410156109cc5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a4016106a5565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a84611619565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610ac78882886118aa565b610ad3888c8c8c611a69565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610b115760405162461bcd60e51b81526004016106a59061333a565b610b1b8282611c38565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b91906132d5565b610ba75760405162461bcd60e51b81526004016106a5906132f2565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610bee611ca6565b610bf86000611d00565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c425760405162461bcd60e51b81526004016106a5906133a4565b610c4d838383611d52565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c8b57610c8b612b90565b604051908082528060200260200182016040528015610cb4578160200160208202803683370190505b50905060005b82811015610d45576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610cf957610cf9613402565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610d3257610d32613402565b6020908102919091010152600101610cba565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610dc157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610da3575b50505050509150935093505050915091565b80516020808301516040808501516060860151608087015160a08801519351600097610e03979096959101613418565b604051602081830303815290604052805190602001209050919050565b60cb546001600160a01b03163314610e4a5760405162461bcd60e51b81526004016106a59061333a565b8060005b81811015610c4d5760d16000858584818110610e6c57610e6c613402565b9050602002016020810190610e819190612b4a565b6001600160a01b0316815260208101919091526040016000205460ff1615610f8c57600060d16000868685818110610ebb57610ebb613402565b9050602002016020810190610ed09190612b4a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610f2b57610f2b613402565b9050602002016020810190610f409190612b4a565b6040516001600160a01b03909116815260200160405180910390a1610f8c848483818110610f7057610f70613402565b9050602002016020810190610f859190612b4a565b6000611c38565b600101610e4e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fdc5760405162461bcd60e51b81526004016106a5906133a4565b610c4d84848484611eae565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110305760405162461bcd60e51b81526004016106a5906133a4565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b15801561108257600080fd5b505af1158015611096573d6000803e3d6000fd5b5050505050505050565b6110a8611ca6565b6106b78161213b565b60ce60205281600052604060002081815481106110cd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111345760405162461bcd60e51b81526004016106a5906133a4565b600061113f84610dd3565b600081815260cf60205260408120549192509060ff16156111745750600081815260cf60205260409020805460ff1916905560015b92509050915091565b600054610100900460ff161580801561119d5750600054600160ff909116105b806111b75750303b1580156111b7575060005460ff166001145b61121a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a5565b6000805460ff19166001179055801561123d576000805461ff0019166101001790555b6112456121a4565b60c955611252838361223b565b61125b85611d00565b6112648461213b565b80156112aa576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146112db5760405162461bcd60e51b81526004016106a59061333a565b8281146113645760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a4016106a5565b8260005b818110156114d25760d1600087878481811061138657611386613402565b905060200201602081019061139b9190612b4a565b6001600160a01b0316815260208101919091526040016000205460ff166114ca57600160d160008888858181106113d4576113d4613402565b90506020020160208101906113e99190612b4a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe86868381811061144457611444613402565b90506020020160208101906114599190612b4a565b6040516001600160a01b03909116815260200160405180910390a16114ca86868381811061148957611489613402565b905060200201602081019061149e9190612b4a565b8585848181106114b0576114b0613402565b90506020020160208101906114c59190613491565b611c38565b600101611368565b505050505050565b6098546000908190600190811614156115315760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b600260655414156115845760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a5565b600260655561159533868686611a69565b600160655595945050505050565b6115ab611ca6565b6001600160a01b0381166116105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a5565b6106b781611d00565b60007f000000000000000000000000000000000000000000000000000000000000000046141561164a575060c95490565b6116526121a4565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ce919061326e565b6001600160a01b0316336001600160a01b0316146116fe5760405162461bcd60e51b81526004016106a59061328b565b60985419811960985419161461177c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016107ee565b6001600160a01b0381166118415760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016106a5565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b156119c957604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906118ea9086908690600401613506565b602060405180830381865afa158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b919061351f565b6001600160e01b031916146119c45760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016106a5565b505050565b826001600160a01b03166119dd8383612321565b6001600160a01b0316146119c45760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016106a5565b6001600160a01b038316600090815260d16020526040812054849060ff16611b0f5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a4016106a5565b611b246001600160a01b038516338786612345565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611b73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b979190613549565b9150611ba586858785611eae565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611c1757600080fd5b505af1158015611c2b573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610bf85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a5565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611dc75760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f21000060648201526084016106a5565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611e595760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b60648201526084016106a5565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611ea157611e97858561239f565b6001915050611ea7565b60009150505b9392505050565b6001600160a01b038416611f2a5760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f20616464726573730000000000000060648201526084016106a5565b80611f965760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b60648201526084016106a5565b6001600160a01b03808516600090815260cd60209081526040808320938616835292905220546120a7576001600160a01b038416600090815260ce6020908152604090912054106120685760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a4016106a5565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd60209081526040808320938616835292905290812080548392906120de908490613578565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561225c57506001600160a01b03821615155b6122de5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610b1b826117b3565b60008060006123308585612591565b9150915061233d81612601565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610c4d9085906127bc565b6001600160a01b038216600090815260ce6020526040812054905b818110156124ba576001600160a01b03848116600090815260ce60205260409020805491851691839081106123f1576123f1613402565b6000918252602090912001546001600160a01b031614156124b2576001600160a01b038416600090815260ce60205260409020805461243290600190613590565b8154811061244257612442613402565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061247f5761247f613402565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506124ba565b6001016123ba565b818114156125425760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a4016106a5565b6001600160a01b038416600090815260ce60205260409020805480612569576125696135a7565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156125c85760208301516040840151606085015160001a6125bc8782858561288e565b945094505050506125fa565b8251604014156125f257602083015160408401516125e786838361297b565b9350935050506125fa565b506000905060025b9250929050565b6000816004811115612615576126156135bd565b141561261e5750565b6001816004811115612632576126326135bd565b14156126805760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106a5565b6002816004811115612694576126946135bd565b14156126e25760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106a5565b60038160048111156126f6576126f66135bd565b141561274f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106a5565b6004816004811115612763576127636135bd565b14156106b75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106a5565b6000612811826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166129b49092919063ffffffff16565b8051909150156119c4578080602001905181019061282f91906132d5565b6119c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156128c55750600090506003612972565b8460ff16601b141580156128dd57508460ff16601c14155b156128ee5750600090506004612972565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612942573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661296b57600060019250925050612972565b9150600090505b94509492505050565b6000806001600160ff1b0383168161299860ff86901c601b613578565b90506129a68782888561288e565b935093505050935093915050565b60606129c384846000856129cb565b949350505050565b606082471015612a2c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a5565b6001600160a01b0385163b612a835760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a5565b600080866001600160a01b03168587604051612a9f91906135d3565b60006040518083038185875af1925050503d8060008114612adc576040519150601f19603f3d011682016040523d82523d6000602084013e612ae1565b606091505b5091509150612af1828286612afc565b979650505050505050565b60608315612b0b575081611ea7565b825115612b1b5782518084602001fd5b8160405162461bcd60e51b81526004016106a591906135ef565b6001600160a01b03811681146106b757600080fd5b600060208284031215612b5c57600080fd5b8135611ea781612b35565b600060208284031215612b7957600080fd5b5035919050565b8035612b8b81612b35565b919050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715612bc957612bc9612b90565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612bf857612bf8612b90565b604052919050565b60008060008060008060c08789031215612c1957600080fd5b8635612c2481612b35565b9550602087810135612c3581612b35565b9550604088013594506060880135612c4c81612b35565b93506080880135925060a088013567ffffffffffffffff80821115612c7057600080fd5b818a0191508a601f830112612c8457600080fd5b813581811115612c9657612c96612b90565b612ca8601f8201601f19168501612bcf565b91508082528b84828501011115612cbe57600080fd5b80848401858401376000848284010152508093505050509295509295509295565b80151581146106b757600080fd5b60008060408385031215612d0057600080fd5b8235612d0b81612b35565b91506020830135612d1b81612cdf565b809150509250929050565b600060208284031215612d3857600080fd5b813560ff81168114611ea757600080fd5b60008060408385031215612d5c57600080fd5b8235612d6781612b35565b91506020830135612d1b81612b35565b600080600060608486031215612d8c57600080fd5b8335612d9781612b35565b92506020840135612da781612b35565b929592945050506040919091013590565b600081518084526020808501945080840160005b83811015612df15781516001600160a01b031687529582019590820190600101612dcc565b509495945050505050565b600081518084526020808501945080840160005b83811015612df157815187529582019590820190600101612e10565b604081526000612e3f6040830185612db8565b8281036020840152612e518185612dfc565b95945050505050565b600067ffffffffffffffff821115612e7457612e74612b90565b5060051b60200190565b600082601f830112612e8f57600080fd5b81356020612ea4612e9f83612e5a565b612bcf565b82815260059290921b84018101918181019086841115612ec357600080fd5b8286015b84811015612ee7578035612eda81612b35565b8352918301918301612ec7565b509695505050505050565b600082601f830112612f0357600080fd5b81356020612f13612e9f83612e5a565b82815260059290921b84018101918181019086841115612f3257600080fd5b8286015b84811015612ee75780358352918301918301612f36565b600060408284031215612f5f57600080fd5b6040516040810181811067ffffffffffffffff82111715612f8257612f82612b90565b6040529050808235612f9381612b35565b815260208301356bffffffffffffffffffffffff81168114612fb457600080fd5b6020919091015292915050565b803563ffffffff81168114612b8b57600080fd5b600060208284031215612fe757600080fd5b813567ffffffffffffffff80821115612fff57600080fd5b9083019060e0828603121561301357600080fd5b61301b612ba6565b82358281111561302a57600080fd5b61303687828601612e7e565b82525060208301358281111561304b57600080fd5b61305787828601612ef2565b60208301525061306960408401612b80565b604082015261307b8660608501612f4d565b606082015261308c60a08401612fc1565b608082015261309d60c08401612b80565b60a082015295945050505050565b60008083601f8401126130bd57600080fd5b50813567ffffffffffffffff8111156130d557600080fd5b6020830191508360208260051b85010111156125fa57600080fd5b6000806020838503121561310357600080fd5b823567ffffffffffffffff81111561311a57600080fd5b613126858286016130ab565b90969095509350505050565b6000806000806080858703121561314857600080fd5b843561315381612b35565b9350602085013561316381612b35565b9250604085013561317381612b35565b9396929550929360600135925050565b6000806000806080858703121561319957600080fd5b84356131a481612b35565b935060208501356131b481612b35565b92506040850135915060608501356131cb81612b35565b939692955090935050565b600080604083850312156131e957600080fd5b82356131f481612b35565b946020939093013593505050565b6000806000806040858703121561321857600080fd5b843567ffffffffffffffff8082111561323057600080fd5b61323c888389016130ab565b9096509450602087013591508082111561325557600080fd5b50613262878288016130ab565b95989497509550505050565b60006020828403121561328057600080fd5b8151611ea781612b35565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156132e757600080fd5b8151611ea781612cdf565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60e08152600061342b60e0830189612db8565b828103602084015261343d8189612dfc565b6001600160a01b0397881660408501528651881660608501526020909601516bffffffffffffffffffffffff166080840152505063ffffffff9290921660a083015290921660c09092019190915292915050565b6000602082840312156134a357600080fd5b8135611ea781612cdf565b60005b838110156134c95781810151838201526020016134b1565b83811115610c4d5750506000910152565b600081518084526134f28160208601602086016134ae565b601f01601f19169290920160200192915050565b8281526040602082015260006129c360408301846134da565b60006020828403121561353157600080fd5b81516001600160e01b031981168114611ea757600080fd5b60006020828403121561355b57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561358b5761358b613562565b500190565b6000828210156135a2576135a2613562565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600082516135e58184602087016134ae565b9190910192915050565b602081526000611ea760208301846134da56fea26469706673582212202773d2a44b16f9d031f081a5640f0da22f91019aae67af291d09030930d0c83164736f6c634300080c0033", +} + +// StrategyManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use StrategyManagerMetaData.ABI instead. +var StrategyManagerABI = StrategyManagerMetaData.ABI + +// StrategyManagerBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use StrategyManagerMetaData.Bin instead. +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) { + parsed, err := StrategyManagerMetaData.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(StrategyManagerBin), backend, _delegation, _eigenPodManager, _slasher) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &StrategyManager{StrategyManagerCaller: StrategyManagerCaller{contract: contract}, StrategyManagerTransactor: StrategyManagerTransactor{contract: contract}, StrategyManagerFilterer: StrategyManagerFilterer{contract: contract}}, nil +} + +// StrategyManager is an auto generated Go binding around an Ethereum contract. +type StrategyManager struct { + StrategyManagerCaller // Read-only binding to the contract + StrategyManagerTransactor // Write-only binding to the contract + StrategyManagerFilterer // Log filterer for contract events +} + +// StrategyManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type StrategyManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StrategyManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StrategyManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StrategyManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StrategyManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StrategyManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StrategyManagerSession struct { + Contract *StrategyManager // 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 +} + +// StrategyManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StrategyManagerCallerSession struct { + Contract *StrategyManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StrategyManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StrategyManagerTransactorSession struct { + Contract *StrategyManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StrategyManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type StrategyManagerRaw struct { + Contract *StrategyManager // Generic contract binding to access the raw methods on +} + +// StrategyManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StrategyManagerCallerRaw struct { + Contract *StrategyManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// StrategyManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StrategyManagerTransactorRaw struct { + Contract *StrategyManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStrategyManager creates a new instance of StrategyManager, bound to a specific deployed contract. +func NewStrategyManager(address common.Address, backend bind.ContractBackend) (*StrategyManager, error) { + contract, err := bindStrategyManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StrategyManager{StrategyManagerCaller: StrategyManagerCaller{contract: contract}, StrategyManagerTransactor: StrategyManagerTransactor{contract: contract}, StrategyManagerFilterer: StrategyManagerFilterer{contract: contract}}, nil +} + +// NewStrategyManagerCaller creates a new read-only instance of StrategyManager, bound to a specific deployed contract. +func NewStrategyManagerCaller(address common.Address, caller bind.ContractCaller) (*StrategyManagerCaller, error) { + contract, err := bindStrategyManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StrategyManagerCaller{contract: contract}, nil +} + +// NewStrategyManagerTransactor creates a new write-only instance of StrategyManager, bound to a specific deployed contract. +func NewStrategyManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*StrategyManagerTransactor, error) { + contract, err := bindStrategyManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StrategyManagerTransactor{contract: contract}, nil +} + +// NewStrategyManagerFilterer creates a new log filterer instance of StrategyManager, bound to a specific deployed contract. +func NewStrategyManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*StrategyManagerFilterer, error) { + contract, err := bindStrategyManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StrategyManagerFilterer{contract: contract}, nil +} + +// bindStrategyManager binds a generic wrapper to an already deployed contract. +func bindStrategyManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StrategyManagerMetaData.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 (_StrategyManager *StrategyManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StrategyManager.Contract.StrategyManagerCaller.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 (_StrategyManager *StrategyManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StrategyManager.Contract.StrategyManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StrategyManager *StrategyManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StrategyManager.Contract.StrategyManagerTransactor.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 (_StrategyManager *StrategyManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StrategyManager.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 (_StrategyManager *StrategyManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StrategyManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StrategyManager *StrategyManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StrategyManager.Contract.contract.Transact(opts, method, params...) +} + +// DEPOSITTYPEHASH is a free data retrieval call binding the contract method 0x48825e94. +// +// Solidity: function DEPOSIT_TYPEHASH() view returns(bytes32) +func (_StrategyManager *StrategyManagerCaller) DEPOSITTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _StrategyManager.contract.Call(opts, &out, "DEPOSIT_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DEPOSITTYPEHASH is a free data retrieval call binding the contract method 0x48825e94. +// +// Solidity: function DEPOSIT_TYPEHASH() view returns(bytes32) +func (_StrategyManager *StrategyManagerSession) DEPOSITTYPEHASH() ([32]byte, error) { + return _StrategyManager.Contract.DEPOSITTYPEHASH(&_StrategyManager.CallOpts) +} + +// DEPOSITTYPEHASH is a free data retrieval call binding the contract method 0x48825e94. +// +// Solidity: function DEPOSIT_TYPEHASH() view returns(bytes32) +func (_StrategyManager *StrategyManagerCallerSession) DEPOSITTYPEHASH() ([32]byte, error) { + return _StrategyManager.Contract.DEPOSITTYPEHASH(&_StrategyManager.CallOpts) +} + +// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70. +// +// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32) +func (_StrategyManager *StrategyManagerCaller) DOMAINTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _StrategyManager.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 (_StrategyManager *StrategyManagerSession) DOMAINTYPEHASH() ([32]byte, error) { + return _StrategyManager.Contract.DOMAINTYPEHASH(&_StrategyManager.CallOpts) +} + +// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70. +// +// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32) +func (_StrategyManager *StrategyManagerCallerSession) DOMAINTYPEHASH() ([32]byte, error) { + return _StrategyManager.Contract.DOMAINTYPEHASH(&_StrategyManager.CallOpts) +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0xb43b514b. +// +// Solidity: function calculateWithdrawalRoot((address[],uint256[],address,(address,uint96),uint32,address) queuedWithdrawal) pure returns(bytes32) +func (_StrategyManager *StrategyManagerCaller) CalculateWithdrawalRoot(opts *bind.CallOpts, queuedWithdrawal IStrategyManagerDeprecatedStructQueuedWithdrawal) ([32]byte, error) { + var out []interface{} + err := _StrategyManager.contract.Call(opts, &out, "calculateWithdrawalRoot", queuedWithdrawal) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0xb43b514b. +// +// Solidity: function calculateWithdrawalRoot((address[],uint256[],address,(address,uint96),uint32,address) queuedWithdrawal) pure returns(bytes32) +func (_StrategyManager *StrategyManagerSession) CalculateWithdrawalRoot(queuedWithdrawal IStrategyManagerDeprecatedStructQueuedWithdrawal) ([32]byte, error) { + return _StrategyManager.Contract.CalculateWithdrawalRoot(&_StrategyManager.CallOpts, queuedWithdrawal) +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0xb43b514b. +// +// Solidity: function calculateWithdrawalRoot((address[],uint256[],address,(address,uint96),uint32,address) queuedWithdrawal) pure returns(bytes32) +func (_StrategyManager *StrategyManagerCallerSession) CalculateWithdrawalRoot(queuedWithdrawal IStrategyManagerDeprecatedStructQueuedWithdrawal) ([32]byte, error) { + return _StrategyManager.Contract.CalculateWithdrawalRoot(&_StrategyManager.CallOpts, queuedWithdrawal) +} + +// Delegation is a free data retrieval call binding the contract method 0xdf5cf723. +// +// Solidity: function delegation() view returns(address) +func (_StrategyManager *StrategyManagerCaller) Delegation(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _StrategyManager.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 (_StrategyManager *StrategyManagerSession) Delegation() (common.Address, error) { + return _StrategyManager.Contract.Delegation(&_StrategyManager.CallOpts) +} + +// Delegation is a free data retrieval call binding the contract method 0xdf5cf723. +// +// Solidity: function delegation() view returns(address) +func (_StrategyManager *StrategyManagerCallerSession) Delegation() (common.Address, error) { + return _StrategyManager.Contract.Delegation(&_StrategyManager.CallOpts) +} + +// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25. +// +// Solidity: function domainSeparator() view returns(bytes32) +func (_StrategyManager *StrategyManagerCaller) DomainSeparator(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _StrategyManager.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 (_StrategyManager *StrategyManagerSession) DomainSeparator() ([32]byte, error) { + return _StrategyManager.Contract.DomainSeparator(&_StrategyManager.CallOpts) +} + +// DomainSeparator is a free data retrieval call binding the contract method 0xf698da25. +// +// Solidity: function domainSeparator() view returns(bytes32) +func (_StrategyManager *StrategyManagerCallerSession) DomainSeparator() ([32]byte, error) { + return _StrategyManager.Contract.DomainSeparator(&_StrategyManager.CallOpts) +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_StrategyManager *StrategyManagerCaller) EigenPodManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _StrategyManager.contract.Call(opts, &out, "eigenPodManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_StrategyManager *StrategyManagerSession) EigenPodManager() (common.Address, error) { + return _StrategyManager.Contract.EigenPodManager(&_StrategyManager.CallOpts) +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_StrategyManager *StrategyManagerCallerSession) EigenPodManager() (common.Address, error) { + return _StrategyManager.Contract.EigenPodManager(&_StrategyManager.CallOpts) +} + +// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd. +// +// Solidity: function getDeposits(address staker) view returns(address[], uint256[]) +func (_StrategyManager *StrategyManagerCaller) GetDeposits(opts *bind.CallOpts, staker common.Address) ([]common.Address, []*big.Int, error) { + var out []interface{} + err := _StrategyManager.contract.Call(opts, &out, "getDeposits", staker) + + if err != nil { + return *new([]common.Address), *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + out1 := *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int) + + return out0, out1, err + +} + +// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd. +// +// Solidity: function getDeposits(address staker) view returns(address[], uint256[]) +func (_StrategyManager *StrategyManagerSession) GetDeposits(staker common.Address) ([]common.Address, []*big.Int, error) { + return _StrategyManager.Contract.GetDeposits(&_StrategyManager.CallOpts, staker) +} + +// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd. +// +// Solidity: function getDeposits(address staker) view returns(address[], uint256[]) +func (_StrategyManager *StrategyManagerCallerSession) GetDeposits(staker common.Address) ([]common.Address, []*big.Int, error) { + return _StrategyManager.Contract.GetDeposits(&_StrategyManager.CallOpts, staker) +} + +// 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) { + var out []interface{} + err := _StrategyManager.contract.Call(opts, &out, "nonces", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// 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) +} + +// 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) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_StrategyManager *StrategyManagerCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _StrategyManager.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 (_StrategyManager *StrategyManagerSession) Owner() (common.Address, error) { + return _StrategyManager.Contract.Owner(&_StrategyManager.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_StrategyManager *StrategyManagerCallerSession) Owner() (common.Address, error) { + return _StrategyManager.Contract.Owner(&_StrategyManager.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_StrategyManager *StrategyManagerCaller) Paused(opts *bind.CallOpts, index uint8) (bool, error) { + var out []interface{} + err := _StrategyManager.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 (_StrategyManager *StrategyManagerSession) Paused(index uint8) (bool, error) { + return _StrategyManager.Contract.Paused(&_StrategyManager.CallOpts, index) +} + +// Paused is a free data retrieval call binding the contract method 0x5ac86ab7. +// +// Solidity: function paused(uint8 index) view returns(bool) +func (_StrategyManager *StrategyManagerCallerSession) Paused(index uint8) (bool, error) { + return _StrategyManager.Contract.Paused(&_StrategyManager.CallOpts, index) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_StrategyManager *StrategyManagerCaller) Paused0(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _StrategyManager.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 (_StrategyManager *StrategyManagerSession) Paused0() (*big.Int, error) { + return _StrategyManager.Contract.Paused0(&_StrategyManager.CallOpts) +} + +// Paused0 is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(uint256) +func (_StrategyManager *StrategyManagerCallerSession) Paused0() (*big.Int, error) { + return _StrategyManager.Contract.Paused0(&_StrategyManager.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_StrategyManager *StrategyManagerCaller) PauserRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _StrategyManager.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 (_StrategyManager *StrategyManagerSession) PauserRegistry() (common.Address, error) { + return _StrategyManager.Contract.PauserRegistry(&_StrategyManager.CallOpts) +} + +// PauserRegistry is a free data retrieval call binding the contract method 0x886f1195. +// +// Solidity: function pauserRegistry() view returns(address) +func (_StrategyManager *StrategyManagerCallerSession) PauserRegistry() (common.Address, error) { + return _StrategyManager.Contract.PauserRegistry(&_StrategyManager.CallOpts) +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_StrategyManager *StrategyManagerCaller) Slasher(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _StrategyManager.contract.Call(opts, &out, "slasher") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_StrategyManager *StrategyManagerSession) Slasher() (common.Address, error) { + return _StrategyManager.Contract.Slasher(&_StrategyManager.CallOpts) +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_StrategyManager *StrategyManagerCallerSession) Slasher() (common.Address, error) { + return _StrategyManager.Contract.Slasher(&_StrategyManager.CallOpts) +} + +// 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) { + var out []interface{} + err := _StrategyManager.contract.Call(opts, &out, "stakerStrategyList", arg0, arg1) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// 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) +} + +// 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) +} + +// StakerStrategyListLength is a free data retrieval call binding the contract method 0x8b8aac3c. +// +// Solidity: function stakerStrategyListLength(address staker) view returns(uint256) +func (_StrategyManager *StrategyManagerCaller) StakerStrategyListLength(opts *bind.CallOpts, staker common.Address) (*big.Int, error) { + var out []interface{} + err := _StrategyManager.contract.Call(opts, &out, "stakerStrategyListLength", staker) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// StakerStrategyListLength is a free data retrieval call binding the contract method 0x8b8aac3c. +// +// Solidity: function stakerStrategyListLength(address staker) view returns(uint256) +func (_StrategyManager *StrategyManagerSession) StakerStrategyListLength(staker common.Address) (*big.Int, error) { + return _StrategyManager.Contract.StakerStrategyListLength(&_StrategyManager.CallOpts, staker) +} + +// StakerStrategyListLength is a free data retrieval call binding the contract method 0x8b8aac3c. +// +// Solidity: function stakerStrategyListLength(address staker) view returns(uint256) +func (_StrategyManager *StrategyManagerCallerSession) StakerStrategyListLength(staker common.Address) (*big.Int, error) { + 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) { + var out []interface{} + err := _StrategyManager.contract.Call(opts, &out, "strategyIsWhitelistedForDeposit", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// 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) +} + +// 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) +} + +// StrategyWhitelister is a free data retrieval call binding the contract method 0x967fc0d2. +// +// Solidity: function strategyWhitelister() view returns(address) +func (_StrategyManager *StrategyManagerCaller) StrategyWhitelister(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _StrategyManager.contract.Call(opts, &out, "strategyWhitelister") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// StrategyWhitelister is a free data retrieval call binding the contract method 0x967fc0d2. +// +// Solidity: function strategyWhitelister() view returns(address) +func (_StrategyManager *StrategyManagerSession) StrategyWhitelister() (common.Address, error) { + return _StrategyManager.Contract.StrategyWhitelister(&_StrategyManager.CallOpts) +} + +// StrategyWhitelister is a free data retrieval call binding the contract method 0x967fc0d2. +// +// Solidity: function strategyWhitelister() view returns(address) +func (_StrategyManager *StrategyManagerCallerSession) StrategyWhitelister() (common.Address, error) { + return _StrategyManager.Contract.StrategyWhitelister(&_StrategyManager.CallOpts) +} + +// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d. +// +// 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 + +} + +// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d. +// +// Solidity: function thirdPartyTransfersForbidden(address ) view returns(bool) +func (_StrategyManager *StrategyManagerSession) ThirdPartyTransfersForbidden(arg0 common.Address) (bool, error) { + return _StrategyManager.Contract.ThirdPartyTransfersForbidden(&_StrategyManager.CallOpts, arg0) +} + +// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d. +// +// Solidity: function thirdPartyTransfersForbidden(address ) view returns(bool) +func (_StrategyManager *StrategyManagerCallerSession) ThirdPartyTransfersForbidden(arg0 common.Address) (bool, error) { + return _StrategyManager.Contract.ThirdPartyTransfersForbidden(&_StrategyManager.CallOpts, arg0) +} + +// WithdrawalRootPending is a free data retrieval call binding the contract method 0xc3c6b3a9. +// +// Solidity: function withdrawalRootPending(bytes32 ) view returns(bool) +func (_StrategyManager *StrategyManagerCaller) WithdrawalRootPending(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { + var out []interface{} + err := _StrategyManager.contract.Call(opts, &out, "withdrawalRootPending", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// WithdrawalRootPending is a free data retrieval call binding the contract method 0xc3c6b3a9. +// +// Solidity: function withdrawalRootPending(bytes32 ) view returns(bool) +func (_StrategyManager *StrategyManagerSession) WithdrawalRootPending(arg0 [32]byte) (bool, error) { + return _StrategyManager.Contract.WithdrawalRootPending(&_StrategyManager.CallOpts, arg0) +} + +// WithdrawalRootPending is a free data retrieval call binding the contract method 0xc3c6b3a9. +// +// Solidity: function withdrawalRootPending(bytes32 ) view returns(bool) +func (_StrategyManager *StrategyManagerCallerSession) WithdrawalRootPending(arg0 [32]byte) (bool, error) { + return _StrategyManager.Contract.WithdrawalRootPending(&_StrategyManager.CallOpts, arg0) +} + +// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1. +// +// Solidity: function addShares(address staker, address token, address strategy, uint256 shares) returns() +func (_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) +} + +// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1. +// +// 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) +} + +// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1. +// +// 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) +} + +// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547. +// +// 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) +} + +// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547. +// +// 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) +} + +// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547. +// +// 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) +} + +// DepositIntoStrategy is a paid mutator transaction binding the contract method 0xe7a050aa. +// +// Solidity: function depositIntoStrategy(address strategy, address token, uint256 amount) returns(uint256 shares) +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) +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) +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) +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) +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) +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. +// +// 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) +} + +// Initialize is a paid mutator transaction binding the contract method 0xcf756fdf. +// +// 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) +} + +// Initialize is a paid mutator transaction binding the contract method 0xcf756fdf. +// +// 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) +} + +// MigrateQueuedWithdrawal is a paid mutator transaction binding the contract method 0xcd293f6f. +// +// Solidity: function migrateQueuedWithdrawal((address[],uint256[],address,(address,uint96),uint32,address) queuedWithdrawal) returns(bool, bytes32) +func (_StrategyManager *StrategyManagerTransactor) MigrateQueuedWithdrawal(opts *bind.TransactOpts, queuedWithdrawal IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _StrategyManager.contract.Transact(opts, "migrateQueuedWithdrawal", queuedWithdrawal) +} + +// MigrateQueuedWithdrawal is a paid mutator transaction binding the contract method 0xcd293f6f. +// +// Solidity: function migrateQueuedWithdrawal((address[],uint256[],address,(address,uint96),uint32,address) queuedWithdrawal) returns(bool, bytes32) +func (_StrategyManager *StrategyManagerSession) MigrateQueuedWithdrawal(queuedWithdrawal IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _StrategyManager.Contract.MigrateQueuedWithdrawal(&_StrategyManager.TransactOpts, queuedWithdrawal) +} + +// MigrateQueuedWithdrawal is a paid mutator transaction binding the contract method 0xcd293f6f. +// +// Solidity: function migrateQueuedWithdrawal((address[],uint256[],address,(address,uint96),uint32,address) queuedWithdrawal) returns(bool, bytes32) +func (_StrategyManager *StrategyManagerTransactorSession) MigrateQueuedWithdrawal(queuedWithdrawal IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _StrategyManager.Contract.MigrateQueuedWithdrawal(&_StrategyManager.TransactOpts, queuedWithdrawal) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_StrategyManager *StrategyManagerTransactor) Pause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _StrategyManager.contract.Transact(opts, "pause", newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_StrategyManager *StrategyManagerSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _StrategyManager.Contract.Pause(&_StrategyManager.TransactOpts, newPausedStatus) +} + +// Pause is a paid mutator transaction binding the contract method 0x136439dd. +// +// Solidity: function pause(uint256 newPausedStatus) returns() +func (_StrategyManager *StrategyManagerTransactorSession) Pause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _StrategyManager.Contract.Pause(&_StrategyManager.TransactOpts, newPausedStatus) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_StrategyManager *StrategyManagerTransactor) PauseAll(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StrategyManager.contract.Transact(opts, "pauseAll") +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_StrategyManager *StrategyManagerSession) PauseAll() (*types.Transaction, error) { + return _StrategyManager.Contract.PauseAll(&_StrategyManager.TransactOpts) +} + +// PauseAll is a paid mutator transaction binding the contract method 0x595c6a67. +// +// Solidity: function pauseAll() returns() +func (_StrategyManager *StrategyManagerTransactorSession) PauseAll() (*types.Transaction, error) { + return _StrategyManager.Contract.PauseAll(&_StrategyManager.TransactOpts) +} + +// RemoveShares is a paid mutator transaction binding the contract method 0x8c80d4e5. +// +// 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) +} + +// RemoveShares is a paid mutator transaction binding the contract method 0x8c80d4e5. +// +// 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) +} + +// RemoveShares is a paid mutator transaction binding the contract method 0x8c80d4e5. +// +// 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) +} + +// RemoveStrategiesFromDepositWhitelist is a paid mutator transaction binding the contract method 0xb5d8b5b8. +// +// Solidity: function removeStrategiesFromDepositWhitelist(address[] strategiesToRemoveFromWhitelist) returns() +func (_StrategyManager *StrategyManagerTransactor) RemoveStrategiesFromDepositWhitelist(opts *bind.TransactOpts, strategiesToRemoveFromWhitelist []common.Address) (*types.Transaction, error) { + return _StrategyManager.contract.Transact(opts, "removeStrategiesFromDepositWhitelist", strategiesToRemoveFromWhitelist) +} + +// RemoveStrategiesFromDepositWhitelist is a paid mutator transaction binding the contract method 0xb5d8b5b8. +// +// Solidity: function removeStrategiesFromDepositWhitelist(address[] strategiesToRemoveFromWhitelist) returns() +func (_StrategyManager *StrategyManagerSession) RemoveStrategiesFromDepositWhitelist(strategiesToRemoveFromWhitelist []common.Address) (*types.Transaction, error) { + return _StrategyManager.Contract.RemoveStrategiesFromDepositWhitelist(&_StrategyManager.TransactOpts, strategiesToRemoveFromWhitelist) +} + +// RemoveStrategiesFromDepositWhitelist is a paid mutator transaction binding the contract method 0xb5d8b5b8. +// +// Solidity: function removeStrategiesFromDepositWhitelist(address[] strategiesToRemoveFromWhitelist) returns() +func (_StrategyManager *StrategyManagerTransactorSession) RemoveStrategiesFromDepositWhitelist(strategiesToRemoveFromWhitelist []common.Address) (*types.Transaction, error) { + return _StrategyManager.Contract.RemoveStrategiesFromDepositWhitelist(&_StrategyManager.TransactOpts, strategiesToRemoveFromWhitelist) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_StrategyManager *StrategyManagerTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StrategyManager.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_StrategyManager *StrategyManagerSession) RenounceOwnership() (*types.Transaction, error) { + return _StrategyManager.Contract.RenounceOwnership(&_StrategyManager.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_StrategyManager *StrategyManagerTransactorSession) RenounceOwnership() (*types.Transaction, error) { + 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() +func (_StrategyManager *StrategyManagerTransactor) SetStrategyWhitelister(opts *bind.TransactOpts, newStrategyWhitelister common.Address) (*types.Transaction, error) { + return _StrategyManager.contract.Transact(opts, "setStrategyWhitelister", newStrategyWhitelister) +} + +// SetStrategyWhitelister is a paid mutator transaction binding the contract method 0xc6656702. +// +// Solidity: function setStrategyWhitelister(address newStrategyWhitelister) returns() +func (_StrategyManager *StrategyManagerSession) SetStrategyWhitelister(newStrategyWhitelister common.Address) (*types.Transaction, error) { + return _StrategyManager.Contract.SetStrategyWhitelister(&_StrategyManager.TransactOpts, newStrategyWhitelister) +} + +// SetStrategyWhitelister is a paid mutator transaction binding the contract method 0xc6656702. +// +// Solidity: function setStrategyWhitelister(address newStrategyWhitelister) returns() +func (_StrategyManager *StrategyManagerTransactorSession) SetStrategyWhitelister(newStrategyWhitelister common.Address) (*types.Transaction, error) { + 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() +func (_StrategyManager *StrategyManagerTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _StrategyManager.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_StrategyManager *StrategyManagerSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _StrategyManager.Contract.TransferOwnership(&_StrategyManager.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_StrategyManager *StrategyManagerTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _StrategyManager.Contract.TransferOwnership(&_StrategyManager.TransactOpts, newOwner) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_StrategyManager *StrategyManagerTransactor) Unpause(opts *bind.TransactOpts, newPausedStatus *big.Int) (*types.Transaction, error) { + return _StrategyManager.contract.Transact(opts, "unpause", newPausedStatus) +} + +// Unpause is a paid mutator transaction binding the contract method 0xfabc1cbc. +// +// Solidity: function unpause(uint256 newPausedStatus) returns() +func (_StrategyManager *StrategyManagerSession) Unpause(newPausedStatus *big.Int) (*types.Transaction, error) { + return _StrategyManager.Contract.Unpause(&_StrategyManager.TransactOpts, newPausedStatus) +} + +// 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 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) +} + +// 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 *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) +} + +// 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 *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) +} + +// 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. +type StrategyManagerDepositIterator struct { + Event *StrategyManagerDeposit // Event containing the contract specifics 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 *StrategyManagerDepositIterator) 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(StrategyManagerDeposit) + 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(StrategyManagerDeposit) + 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 *StrategyManagerDepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyManagerDepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// 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. +// +// Solidity: event Deposit(address staker, address token, address strategy, uint256 shares) +func (_StrategyManager *StrategyManagerFilterer) FilterDeposit(opts *bind.FilterOpts) (*StrategyManagerDepositIterator, error) { + + logs, sub, err := _StrategyManager.contract.FilterLogs(opts, "Deposit") + if err != nil { + return nil, err + } + return &StrategyManagerDepositIterator{contract: _StrategyManager.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a96. +// +// Solidity: event Deposit(address staker, address token, 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") + 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(StrategyManagerDeposit) + if err := _StrategyManager.contract.UnpackLog(event, "Deposit", 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 +} + +// ParseDeposit is a log parse operation binding the contract event 0x7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a96. +// +// Solidity: event Deposit(address staker, address token, 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 { + return nil, err + } + event.Raw = log + return event, nil +} + +// StrategyManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the StrategyManager contract. +type StrategyManagerInitializedIterator struct { + Event *StrategyManagerInitialized // Event containing the contract specifics 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 *StrategyManagerInitializedIterator) 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(StrategyManagerInitialized) + 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(StrategyManagerInitialized) + 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 *StrategyManagerInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyManagerInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StrategyManagerInitialized represents a Initialized event raised by the StrategyManager contract. +type StrategyManagerInitialized 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 (_StrategyManager *StrategyManagerFilterer) FilterInitialized(opts *bind.FilterOpts) (*StrategyManagerInitializedIterator, error) { + + logs, sub, err := _StrategyManager.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &StrategyManagerInitializedIterator{contract: _StrategyManager.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 (_StrategyManager *StrategyManagerFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *StrategyManagerInitialized) (event.Subscription, error) { + + logs, sub, err := _StrategyManager.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(StrategyManagerInitialized) + if err := _StrategyManager.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 (_StrategyManager *StrategyManagerFilterer) ParseInitialized(log types.Log) (*StrategyManagerInitialized, error) { + event := new(StrategyManagerInitialized) + if err := _StrategyManager.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StrategyManagerOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the StrategyManager contract. +type StrategyManagerOwnershipTransferredIterator struct { + Event *StrategyManagerOwnershipTransferred // Event containing the contract specifics 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 *StrategyManagerOwnershipTransferredIterator) 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(StrategyManagerOwnershipTransferred) + 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(StrategyManagerOwnershipTransferred) + 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 *StrategyManagerOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyManagerOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StrategyManagerOwnershipTransferred represents a OwnershipTransferred event raised by the StrategyManager contract. +type StrategyManagerOwnershipTransferred 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 (_StrategyManager *StrategyManagerFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*StrategyManagerOwnershipTransferredIterator, 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 := _StrategyManager.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &StrategyManagerOwnershipTransferredIterator{contract: _StrategyManager.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 (_StrategyManager *StrategyManagerFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *StrategyManagerOwnershipTransferred, 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 := _StrategyManager.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(StrategyManagerOwnershipTransferred) + if err := _StrategyManager.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 (_StrategyManager *StrategyManagerFilterer) ParseOwnershipTransferred(log types.Log) (*StrategyManagerOwnershipTransferred, error) { + event := new(StrategyManagerOwnershipTransferred) + if err := _StrategyManager.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StrategyManagerPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the StrategyManager contract. +type StrategyManagerPausedIterator struct { + Event *StrategyManagerPaused // Event containing the contract specifics 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 *StrategyManagerPausedIterator) 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(StrategyManagerPaused) + 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(StrategyManagerPaused) + 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 *StrategyManagerPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyManagerPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StrategyManagerPaused represents a Paused event raised by the StrategyManager contract. +type StrategyManagerPaused 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 (_StrategyManager *StrategyManagerFilterer) FilterPaused(opts *bind.FilterOpts, account []common.Address) (*StrategyManagerPausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _StrategyManager.contract.FilterLogs(opts, "Paused", accountRule) + if err != nil { + return nil, err + } + return &StrategyManagerPausedIterator{contract: _StrategyManager.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 (_StrategyManager *StrategyManagerFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *StrategyManagerPaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _StrategyManager.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(StrategyManagerPaused) + if err := _StrategyManager.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 (_StrategyManager *StrategyManagerFilterer) ParsePaused(log types.Log) (*StrategyManagerPaused, error) { + event := new(StrategyManagerPaused) + if err := _StrategyManager.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + 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 + + 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 *StrategyManagerStrategyAddedToDepositWhitelistIterator) 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(StrategyManagerStrategyAddedToDepositWhitelist) + 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(StrategyManagerStrategyAddedToDepositWhitelist) + 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 *StrategyManagerStrategyAddedToDepositWhitelistIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyManagerStrategyAddedToDepositWhitelistIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StrategyManagerStrategyAddedToDepositWhitelist represents a StrategyAddedToDepositWhitelist event raised by the StrategyManager contract. +type StrategyManagerStrategyAddedToDepositWhitelist struct { + Strategy common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterStrategyAddedToDepositWhitelist is a free log retrieval operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe. +// +// Solidity: event StrategyAddedToDepositWhitelist(address strategy) +func (_StrategyManager *StrategyManagerFilterer) FilterStrategyAddedToDepositWhitelist(opts *bind.FilterOpts) (*StrategyManagerStrategyAddedToDepositWhitelistIterator, error) { + + logs, sub, err := _StrategyManager.contract.FilterLogs(opts, "StrategyAddedToDepositWhitelist") + if err != nil { + return nil, err + } + return &StrategyManagerStrategyAddedToDepositWhitelistIterator{contract: _StrategyManager.contract, event: "StrategyAddedToDepositWhitelist", logs: logs, sub: sub}, nil +} + +// WatchStrategyAddedToDepositWhitelist is a free log subscription operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe. +// +// Solidity: event StrategyAddedToDepositWhitelist(address strategy) +func (_StrategyManager *StrategyManagerFilterer) WatchStrategyAddedToDepositWhitelist(opts *bind.WatchOpts, sink chan<- *StrategyManagerStrategyAddedToDepositWhitelist) (event.Subscription, error) { + + logs, sub, err := _StrategyManager.contract.WatchLogs(opts, "StrategyAddedToDepositWhitelist") + 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(StrategyManagerStrategyAddedToDepositWhitelist) + if err := _StrategyManager.contract.UnpackLog(event, "StrategyAddedToDepositWhitelist", 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 +} + +// ParseStrategyAddedToDepositWhitelist is a log parse operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe. +// +// Solidity: event StrategyAddedToDepositWhitelist(address strategy) +func (_StrategyManager *StrategyManagerFilterer) ParseStrategyAddedToDepositWhitelist(log types.Log) (*StrategyManagerStrategyAddedToDepositWhitelist, error) { + event := new(StrategyManagerStrategyAddedToDepositWhitelist) + if err := _StrategyManager.contract.UnpackLog(event, "StrategyAddedToDepositWhitelist", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StrategyManagerStrategyRemovedFromDepositWhitelistIterator is returned from FilterStrategyRemovedFromDepositWhitelist and is used to iterate over the raw logs and unpacked data for StrategyRemovedFromDepositWhitelist events raised by the StrategyManager contract. +type StrategyManagerStrategyRemovedFromDepositWhitelistIterator struct { + Event *StrategyManagerStrategyRemovedFromDepositWhitelist // Event containing the contract specifics 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 *StrategyManagerStrategyRemovedFromDepositWhitelistIterator) 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(StrategyManagerStrategyRemovedFromDepositWhitelist) + 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(StrategyManagerStrategyRemovedFromDepositWhitelist) + 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 *StrategyManagerStrategyRemovedFromDepositWhitelistIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyManagerStrategyRemovedFromDepositWhitelistIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StrategyManagerStrategyRemovedFromDepositWhitelist represents a StrategyRemovedFromDepositWhitelist event raised by the StrategyManager contract. +type StrategyManagerStrategyRemovedFromDepositWhitelist struct { + Strategy common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterStrategyRemovedFromDepositWhitelist is a free log retrieval operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030. +// +// Solidity: event StrategyRemovedFromDepositWhitelist(address strategy) +func (_StrategyManager *StrategyManagerFilterer) FilterStrategyRemovedFromDepositWhitelist(opts *bind.FilterOpts) (*StrategyManagerStrategyRemovedFromDepositWhitelistIterator, error) { + + logs, sub, err := _StrategyManager.contract.FilterLogs(opts, "StrategyRemovedFromDepositWhitelist") + if err != nil { + return nil, err + } + return &StrategyManagerStrategyRemovedFromDepositWhitelistIterator{contract: _StrategyManager.contract, event: "StrategyRemovedFromDepositWhitelist", logs: logs, sub: sub}, nil +} + +// WatchStrategyRemovedFromDepositWhitelist is a free log subscription operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030. +// +// Solidity: event StrategyRemovedFromDepositWhitelist(address strategy) +func (_StrategyManager *StrategyManagerFilterer) WatchStrategyRemovedFromDepositWhitelist(opts *bind.WatchOpts, sink chan<- *StrategyManagerStrategyRemovedFromDepositWhitelist) (event.Subscription, error) { + + logs, sub, err := _StrategyManager.contract.WatchLogs(opts, "StrategyRemovedFromDepositWhitelist") + 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(StrategyManagerStrategyRemovedFromDepositWhitelist) + if err := _StrategyManager.contract.UnpackLog(event, "StrategyRemovedFromDepositWhitelist", 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 +} + +// ParseStrategyRemovedFromDepositWhitelist is a log parse operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030. +// +// Solidity: event StrategyRemovedFromDepositWhitelist(address strategy) +func (_StrategyManager *StrategyManagerFilterer) ParseStrategyRemovedFromDepositWhitelist(log types.Log) (*StrategyManagerStrategyRemovedFromDepositWhitelist, error) { + event := new(StrategyManagerStrategyRemovedFromDepositWhitelist) + if err := _StrategyManager.contract.UnpackLog(event, "StrategyRemovedFromDepositWhitelist", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StrategyManagerStrategyWhitelisterChangedIterator is returned from FilterStrategyWhitelisterChanged and is used to iterate over the raw logs and unpacked data for StrategyWhitelisterChanged events raised by the StrategyManager contract. +type StrategyManagerStrategyWhitelisterChangedIterator struct { + Event *StrategyManagerStrategyWhitelisterChanged // Event containing the contract specifics 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 *StrategyManagerStrategyWhitelisterChangedIterator) 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(StrategyManagerStrategyWhitelisterChanged) + 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(StrategyManagerStrategyWhitelisterChanged) + 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 *StrategyManagerStrategyWhitelisterChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyManagerStrategyWhitelisterChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StrategyManagerStrategyWhitelisterChanged represents a StrategyWhitelisterChanged event raised by the StrategyManager contract. +type StrategyManagerStrategyWhitelisterChanged struct { + PreviousAddress common.Address + NewAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterStrategyWhitelisterChanged is a free log retrieval operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29. +// +// Solidity: event StrategyWhitelisterChanged(address previousAddress, address newAddress) +func (_StrategyManager *StrategyManagerFilterer) FilterStrategyWhitelisterChanged(opts *bind.FilterOpts) (*StrategyManagerStrategyWhitelisterChangedIterator, error) { + + logs, sub, err := _StrategyManager.contract.FilterLogs(opts, "StrategyWhitelisterChanged") + if err != nil { + return nil, err + } + return &StrategyManagerStrategyWhitelisterChangedIterator{contract: _StrategyManager.contract, event: "StrategyWhitelisterChanged", logs: logs, sub: sub}, nil +} + +// WatchStrategyWhitelisterChanged is a free log subscription operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29. +// +// Solidity: event StrategyWhitelisterChanged(address previousAddress, address newAddress) +func (_StrategyManager *StrategyManagerFilterer) WatchStrategyWhitelisterChanged(opts *bind.WatchOpts, sink chan<- *StrategyManagerStrategyWhitelisterChanged) (event.Subscription, error) { + + logs, sub, err := _StrategyManager.contract.WatchLogs(opts, "StrategyWhitelisterChanged") + 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(StrategyManagerStrategyWhitelisterChanged) + if err := _StrategyManager.contract.UnpackLog(event, "StrategyWhitelisterChanged", 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 +} + +// ParseStrategyWhitelisterChanged is a log parse operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29. +// +// Solidity: event StrategyWhitelisterChanged(address previousAddress, address newAddress) +func (_StrategyManager *StrategyManagerFilterer) ParseStrategyWhitelisterChanged(log types.Log) (*StrategyManagerStrategyWhitelisterChanged, error) { + event := new(StrategyManagerStrategyWhitelisterChanged) + if err := _StrategyManager.contract.UnpackLog(event, "StrategyWhitelisterChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// StrategyManagerUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the StrategyManager contract. +type StrategyManagerUnpausedIterator struct { + Event *StrategyManagerUnpaused // Event containing the contract specifics 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 *StrategyManagerUnpausedIterator) 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(StrategyManagerUnpaused) + 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(StrategyManagerUnpaused) + 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 *StrategyManagerUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyManagerUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StrategyManagerUnpaused represents a Unpaused event raised by the StrategyManager contract. +type StrategyManagerUnpaused 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 (_StrategyManager *StrategyManagerFilterer) FilterUnpaused(opts *bind.FilterOpts, account []common.Address) (*StrategyManagerUnpausedIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _StrategyManager.contract.FilterLogs(opts, "Unpaused", accountRule) + if err != nil { + return nil, err + } + return &StrategyManagerUnpausedIterator{contract: _StrategyManager.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 (_StrategyManager *StrategyManagerFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *StrategyManagerUnpaused, account []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + + logs, sub, err := _StrategyManager.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(StrategyManagerUnpaused) + if err := _StrategyManager.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 (_StrategyManager *StrategyManagerFilterer) ParseUnpaused(log types.Log) (*StrategyManagerUnpaused, error) { + event := new(StrategyManagerUnpaused) + if err := _StrategyManager.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + 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/StrategyManager/tmp.abi b/pkg/bindings/StrategyManager/tmp.abi new file mode 100644 index 000000000..6d18e6fbe --- /dev/null +++ b/pkg/bindings/StrategyManager/tmp.abi @@ -0,0 +1,962 @@ +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_delegation", + "type": "address", + "internalType": "contract IDelegationManager" + }, + { + "name": "_eigenPodManager", + "type": "address", + "internalType": "contract IEigenPodManager" + }, + { + "name": "_slasher", + "type": "address", + "internalType": "contract ISlasher" + } + ], + "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": "contract IERC20" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "addStrategiesToDepositWhitelist", + "inputs": [ + { + "name": "strategiesToWhitelist", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "thirdPartyTransfersForbiddenValues", + "type": "bool[]", + "internalType": "bool[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "calculateWithdrawalRoot", + "inputs": [ + { + "name": "queuedWithdrawal", + "type": "tuple", + "internalType": "struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal", + "components": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "withdrawerAndNonce", + "type": "tuple", + "internalType": "struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce", + "components": [ + { + "name": "withdrawer", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "name": "withdrawalStartBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "delegatedAddress", + "type": "address", + "internalType": "address" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "delegation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "depositIntoStrategy", + "inputs": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "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": "contract IStrategy" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "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": "contract IEigenPodManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getDeposits", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "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": "contract IPauserRegistry" + }, + { + "name": "initialPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "migrateQueuedWithdrawal", + "inputs": [ + { + "name": "queuedWithdrawal", + "type": "tuple", + "internalType": "struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal", + "components": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "withdrawerAndNonce", + "type": "tuple", + "internalType": "struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce", + "components": [ + { + "name": "withdrawer", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "name": "withdrawalStartBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "delegatedAddress", + "type": "address", + "internalType": "address" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "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": "contract IPauserRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "removeShares", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "removeStrategiesFromDepositWhitelist", + "inputs": [ + { + "name": "strategiesToRemoveFromWhitelist", + "type": "address[]", + "internalType": "contract IStrategy[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setPauserRegistry", + "inputs": [ + { + "name": "newPauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "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": "contract IStrategy" + }, + { + "name": "value", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "slasher", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ISlasher" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakerStrategyList", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "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": "contract IStrategy" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyIsWhitelistedForDeposit", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "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": "contract IStrategy" + } + ], + "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": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdrawalRootPending", + "inputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "Deposit", + "inputs": [ + { + "name": "staker", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "contract IERC20" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + }, + { + "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": "contract IPauserRegistry" + }, + { + "name": "newPauserRegistry", + "type": "address", + "indexed": false, + "internalType": "contract IPauserRegistry" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyAddedToDepositWhitelist", + "inputs": [ + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyRemovedFromDepositWhitelist", + "inputs": [ + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + } + ], + "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": "contract IStrategy" + }, + { + "name": "value", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + } +] diff --git a/pkg/bindings/StrategyManager/tmp.bin b/pkg/bindings/StrategyManager/tmp.bin new file mode 100644 index 000000000..1067d7f21 --- /dev/null +++ b/pkg/bindings/StrategyManager/tmp.bin @@ -0,0 +1 @@ +0x6101006040523480156200001257600080fd5b506040516200382938038062003829833981016040819052620000359162000140565b6001600160a01b0380841660805280831660a052811660c0526200005862000065565b50504660e0525062000194565b600054610100900460ff1615620000d25760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000125576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013d57600080fd5b50565b6000806000606084860312156200015657600080fd5b8351620001638162000127565b6020850151909350620001768162000127565b6040850151909250620001898162000127565b809150509250925092565b60805160a05160c05160e051613638620001f1600039600061161d0152600061048f015260006102a601526000818161059b01528181610c0501528181610f9f01528181610ff3015281816110f70152611bd301526136386000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c806394f649dd11610130578063c6656702116100b8578063df5cf7231161007c578063df5cf72314610596578063e7a050aa146105bd578063f2fde38b146105d0578063f698da25146105e3578063fabc1cbc146105eb57600080fd5b8063c665670214610520578063cbc2bd6214610533578063cd293f6f14610546578063cf756fdf14610570578063df5b35471461058357600080fd5b8063b43b514b116100ff578063b43b514b146104b1578063b5d8b5b8146104c4578063c3c6b3a9146104d7578063c4623ea1146104fa578063c608c7f31461050d57600080fd5b806394f649dd14610433578063967fc0d2146104545780639b4da03d14610467578063b13442711461048a57600080fd5b80635c975abb116101b35780637ecebe00116101825780637ecebe00146103b3578063886f1195146103d35780638b8aac3c146103e65780638c80d4e51461040f5780638da5cb5b1461042257600080fd5b80635c975abb14610355578063663c1de41461035d578063715018a6146103805780637a7e0d921461038857600080fd5b80634665bcda116101fa5780634665bcda146102a157806348825e94146102e05780634e5a426314610307578063595c6a671461031a5780635ac86ab71461032257600080fd5b806310d67a2f1461022c578063136439dd1461024157806320606b701461025457806332e89ace1461028e575b600080fd5b61023f61023a366004612b4a565b6105fe565b005b61023f61024f366004612b67565b6106ba565b61027b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61027b61029c366004612c00565b6107f9565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610285565b61027b7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61023f610315366004612ced565b610ae7565b61023f610b1f565b610345610330366004612d26565b609854600160ff9092169190911b9081161490565b6040519015158152602001610285565b60985461027b565b61034561036b366004612b4a565b60d16020526000908152604090205460ff1681565b61023f610be6565b61027b610396366004612d49565b60cd60209081526000928352604080842090915290825290205481565b61027b6103c1366004612b4a565b60ca6020526000908152604090205481565b6097546102c8906001600160a01b031681565b61027b6103f4366004612b4a565b6001600160a01b0316600090815260ce602052604090205490565b61023f61041d366004612d77565b610bfa565b6033546001600160a01b03166102c8565b610446610441366004612b4a565b610c53565b604051610285929190612e2c565b60cb546102c8906001600160a01b031681565b610345610475366004612b4a565b60d36020526000908152604090205460ff1681565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b61027b6104bf366004612fd5565b610dd3565b61023f6104d23660046130f0565b610e20565b6103456104e5366004612b67565b60cf6020526000908152604090205460ff1681565b61023f610508366004613132565b610f94565b61023f61051b366004613183565b610fe8565b61023f61052e366004612b4a565b6110a0565b6102c86105413660046131d6565b6110b1565b610559610554366004612fd5565b6110e9565b604080519215158352602083019190915201610285565b61023f61057e366004613132565b61117d565b61023f610591366004613202565b6112b1565b6102c87f000000000000000000000000000000000000000000000000000000000000000081565b61027b6105cb366004612d77565b6114da565b61023f6105de366004612b4a565b6115a3565b61027b611619565b61023f6105f9366004612b67565b611657565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610651573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610675919061326e565b6001600160a01b0316336001600160a01b0316146106ae5760405162461bcd60e51b81526004016106a59061328b565b60405180910390fd5b6106b7816117b3565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610702573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072691906132d5565b6107425760405162461bcd60e51b81526004016106a5906132f2565b609854818116146107bb5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156108505760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b600260655414156108a35760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a5565b60026065556001600160a01b038816600090815260d3602052604090205460ff161561094a5760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a4016106a5565b428410156109cc5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a4016106a5565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a84611619565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610ac78882886118aa565b610ad3888c8c8c611a69565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610b115760405162461bcd60e51b81526004016106a59061333a565b610b1b8282611c38565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b91906132d5565b610ba75760405162461bcd60e51b81526004016106a5906132f2565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610bee611ca6565b610bf86000611d00565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c425760405162461bcd60e51b81526004016106a5906133a4565b610c4d838383611d52565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c8b57610c8b612b90565b604051908082528060200260200182016040528015610cb4578160200160208202803683370190505b50905060005b82811015610d45576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610cf957610cf9613402565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610d3257610d32613402565b6020908102919091010152600101610cba565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610dc157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610da3575b50505050509150935093505050915091565b80516020808301516040808501516060860151608087015160a08801519351600097610e03979096959101613418565b604051602081830303815290604052805190602001209050919050565b60cb546001600160a01b03163314610e4a5760405162461bcd60e51b81526004016106a59061333a565b8060005b81811015610c4d5760d16000858584818110610e6c57610e6c613402565b9050602002016020810190610e819190612b4a565b6001600160a01b0316815260208101919091526040016000205460ff1615610f8c57600060d16000868685818110610ebb57610ebb613402565b9050602002016020810190610ed09190612b4a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610f2b57610f2b613402565b9050602002016020810190610f409190612b4a565b6040516001600160a01b03909116815260200160405180910390a1610f8c848483818110610f7057610f70613402565b9050602002016020810190610f859190612b4a565b6000611c38565b600101610e4e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fdc5760405162461bcd60e51b81526004016106a5906133a4565b610c4d84848484611eae565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110305760405162461bcd60e51b81526004016106a5906133a4565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b15801561108257600080fd5b505af1158015611096573d6000803e3d6000fd5b5050505050505050565b6110a8611ca6565b6106b78161213b565b60ce60205281600052604060002081815481106110cd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111345760405162461bcd60e51b81526004016106a5906133a4565b600061113f84610dd3565b600081815260cf60205260408120549192509060ff16156111745750600081815260cf60205260409020805460ff1916905560015b92509050915091565b600054610100900460ff161580801561119d5750600054600160ff909116105b806111b75750303b1580156111b7575060005460ff166001145b61121a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a5565b6000805460ff19166001179055801561123d576000805461ff0019166101001790555b6112456121a4565b60c955611252838361223b565b61125b85611d00565b6112648461213b565b80156112aa576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146112db5760405162461bcd60e51b81526004016106a59061333a565b8281146113645760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a4016106a5565b8260005b818110156114d25760d1600087878481811061138657611386613402565b905060200201602081019061139b9190612b4a565b6001600160a01b0316815260208101919091526040016000205460ff166114ca57600160d160008888858181106113d4576113d4613402565b90506020020160208101906113e99190612b4a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe86868381811061144457611444613402565b90506020020160208101906114599190612b4a565b6040516001600160a01b03909116815260200160405180910390a16114ca86868381811061148957611489613402565b905060200201602081019061149e9190612b4a565b8585848181106114b0576114b0613402565b90506020020160208101906114c59190613491565b611c38565b600101611368565b505050505050565b6098546000908190600190811614156115315760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b600260655414156115845760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a5565b600260655561159533868686611a69565b600160655595945050505050565b6115ab611ca6565b6001600160a01b0381166116105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a5565b6106b781611d00565b60007f000000000000000000000000000000000000000000000000000000000000000046141561164a575060c95490565b6116526121a4565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ce919061326e565b6001600160a01b0316336001600160a01b0316146116fe5760405162461bcd60e51b81526004016106a59061328b565b60985419811960985419161461177c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016107ee565b6001600160a01b0381166118415760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016106a5565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b156119c957604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906118ea9086908690600401613506565b602060405180830381865afa158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b919061351f565b6001600160e01b031916146119c45760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016106a5565b505050565b826001600160a01b03166119dd8383612321565b6001600160a01b0316146119c45760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016106a5565b6001600160a01b038316600090815260d16020526040812054849060ff16611b0f5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a4016106a5565b611b246001600160a01b038516338786612345565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611b73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b979190613549565b9150611ba586858785611eae565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611c1757600080fd5b505af1158015611c2b573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610bf85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a5565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611dc75760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f21000060648201526084016106a5565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611e595760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b60648201526084016106a5565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611ea157611e97858561239f565b6001915050611ea7565b60009150505b9392505050565b6001600160a01b038416611f2a5760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f20616464726573730000000000000060648201526084016106a5565b80611f965760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b60648201526084016106a5565b6001600160a01b03808516600090815260cd60209081526040808320938616835292905220546120a7576001600160a01b038416600090815260ce6020908152604090912054106120685760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a4016106a5565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd60209081526040808320938616835292905290812080548392906120de908490613578565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561225c57506001600160a01b03821615155b6122de5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610b1b826117b3565b60008060006123308585612591565b9150915061233d81612601565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610c4d9085906127bc565b6001600160a01b038216600090815260ce6020526040812054905b818110156124ba576001600160a01b03848116600090815260ce60205260409020805491851691839081106123f1576123f1613402565b6000918252602090912001546001600160a01b031614156124b2576001600160a01b038416600090815260ce60205260409020805461243290600190613590565b8154811061244257612442613402565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061247f5761247f613402565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506124ba565b6001016123ba565b818114156125425760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a4016106a5565b6001600160a01b038416600090815260ce60205260409020805480612569576125696135a7565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156125c85760208301516040840151606085015160001a6125bc8782858561288e565b945094505050506125fa565b8251604014156125f257602083015160408401516125e786838361297b565b9350935050506125fa565b506000905060025b9250929050565b6000816004811115612615576126156135bd565b141561261e5750565b6001816004811115612632576126326135bd565b14156126805760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106a5565b6002816004811115612694576126946135bd565b14156126e25760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106a5565b60038160048111156126f6576126f66135bd565b141561274f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106a5565b6004816004811115612763576127636135bd565b14156106b75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106a5565b6000612811826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166129b49092919063ffffffff16565b8051909150156119c4578080602001905181019061282f91906132d5565b6119c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156128c55750600090506003612972565b8460ff16601b141580156128dd57508460ff16601c14155b156128ee5750600090506004612972565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612942573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661296b57600060019250925050612972565b9150600090505b94509492505050565b6000806001600160ff1b0383168161299860ff86901c601b613578565b90506129a68782888561288e565b935093505050935093915050565b60606129c384846000856129cb565b949350505050565b606082471015612a2c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a5565b6001600160a01b0385163b612a835760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a5565b600080866001600160a01b03168587604051612a9f91906135d3565b60006040518083038185875af1925050503d8060008114612adc576040519150601f19603f3d011682016040523d82523d6000602084013e612ae1565b606091505b5091509150612af1828286612afc565b979650505050505050565b60608315612b0b575081611ea7565b825115612b1b5782518084602001fd5b8160405162461bcd60e51b81526004016106a591906135ef565b6001600160a01b03811681146106b757600080fd5b600060208284031215612b5c57600080fd5b8135611ea781612b35565b600060208284031215612b7957600080fd5b5035919050565b8035612b8b81612b35565b919050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715612bc957612bc9612b90565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612bf857612bf8612b90565b604052919050565b60008060008060008060c08789031215612c1957600080fd5b8635612c2481612b35565b9550602087810135612c3581612b35565b9550604088013594506060880135612c4c81612b35565b93506080880135925060a088013567ffffffffffffffff80821115612c7057600080fd5b818a0191508a601f830112612c8457600080fd5b813581811115612c9657612c96612b90565b612ca8601f8201601f19168501612bcf565b91508082528b84828501011115612cbe57600080fd5b80848401858401376000848284010152508093505050509295509295509295565b80151581146106b757600080fd5b60008060408385031215612d0057600080fd5b8235612d0b81612b35565b91506020830135612d1b81612cdf565b809150509250929050565b600060208284031215612d3857600080fd5b813560ff81168114611ea757600080fd5b60008060408385031215612d5c57600080fd5b8235612d6781612b35565b91506020830135612d1b81612b35565b600080600060608486031215612d8c57600080fd5b8335612d9781612b35565b92506020840135612da781612b35565b929592945050506040919091013590565b600081518084526020808501945080840160005b83811015612df15781516001600160a01b031687529582019590820190600101612dcc565b509495945050505050565b600081518084526020808501945080840160005b83811015612df157815187529582019590820190600101612e10565b604081526000612e3f6040830185612db8565b8281036020840152612e518185612dfc565b95945050505050565b600067ffffffffffffffff821115612e7457612e74612b90565b5060051b60200190565b600082601f830112612e8f57600080fd5b81356020612ea4612e9f83612e5a565b612bcf565b82815260059290921b84018101918181019086841115612ec357600080fd5b8286015b84811015612ee7578035612eda81612b35565b8352918301918301612ec7565b509695505050505050565b600082601f830112612f0357600080fd5b81356020612f13612e9f83612e5a565b82815260059290921b84018101918181019086841115612f3257600080fd5b8286015b84811015612ee75780358352918301918301612f36565b600060408284031215612f5f57600080fd5b6040516040810181811067ffffffffffffffff82111715612f8257612f82612b90565b6040529050808235612f9381612b35565b815260208301356bffffffffffffffffffffffff81168114612fb457600080fd5b6020919091015292915050565b803563ffffffff81168114612b8b57600080fd5b600060208284031215612fe757600080fd5b813567ffffffffffffffff80821115612fff57600080fd5b9083019060e0828603121561301357600080fd5b61301b612ba6565b82358281111561302a57600080fd5b61303687828601612e7e565b82525060208301358281111561304b57600080fd5b61305787828601612ef2565b60208301525061306960408401612b80565b604082015261307b8660608501612f4d565b606082015261308c60a08401612fc1565b608082015261309d60c08401612b80565b60a082015295945050505050565b60008083601f8401126130bd57600080fd5b50813567ffffffffffffffff8111156130d557600080fd5b6020830191508360208260051b85010111156125fa57600080fd5b6000806020838503121561310357600080fd5b823567ffffffffffffffff81111561311a57600080fd5b613126858286016130ab565b90969095509350505050565b6000806000806080858703121561314857600080fd5b843561315381612b35565b9350602085013561316381612b35565b9250604085013561317381612b35565b9396929550929360600135925050565b6000806000806080858703121561319957600080fd5b84356131a481612b35565b935060208501356131b481612b35565b92506040850135915060608501356131cb81612b35565b939692955090935050565b600080604083850312156131e957600080fd5b82356131f481612b35565b946020939093013593505050565b6000806000806040858703121561321857600080fd5b843567ffffffffffffffff8082111561323057600080fd5b61323c888389016130ab565b9096509450602087013591508082111561325557600080fd5b50613262878288016130ab565b95989497509550505050565b60006020828403121561328057600080fd5b8151611ea781612b35565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156132e757600080fd5b8151611ea781612cdf565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60e08152600061342b60e0830189612db8565b828103602084015261343d8189612dfc565b6001600160a01b0397881660408501528651881660608501526020909601516bffffffffffffffffffffffff166080840152505063ffffffff9290921660a083015290921660c09092019190915292915050565b6000602082840312156134a357600080fd5b8135611ea781612cdf565b60005b838110156134c95781810151838201526020016134b1565b83811115610c4d5750506000910152565b600081518084526134f28160208601602086016134ae565b601f01601f19169290920160200192915050565b8281526040602082015260006129c360408301846134da565b60006020828403121561353157600080fd5b81516001600160e01b031981168114611ea757600080fd5b60006020828403121561355b57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561358b5761358b613562565b500190565b6000828210156135a2576135a2613562565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600082516135e58184602087016134ae565b9190910192915050565b602081526000611ea760208301846134da56fea26469706673582212202773d2a44b16f9d031f081a5640f0da22f91019aae67af291d09030930d0c83164736f6c634300080c0033 diff --git a/pkg/bindings/StrategyManagerStorage/binding.go b/pkg/bindings/StrategyManagerStorage/binding.go new file mode 100644 index 000000000..31675e673 --- /dev/null +++ b/pkg/bindings/StrategyManagerStorage/binding.go @@ -0,0 +1,1506 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package StrategyManagerStorage + +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 +) + +// IStrategyManagerDeprecatedStructQueuedWithdrawal is an auto generated low-level Go binding around an user-defined struct. +type IStrategyManagerDeprecatedStructQueuedWithdrawal struct { + Strategies []common.Address + Shares []*big.Int + Staker common.Address + WithdrawerAndNonce IStrategyManagerDeprecatedStructWithdrawerAndNonce + WithdrawalStartBlock uint32 + DelegatedAddress common.Address +} + +// IStrategyManagerDeprecatedStructWithdrawerAndNonce is an auto generated low-level Go binding around an user-defined struct. +type IStrategyManagerDeprecatedStructWithdrawerAndNonce struct { + Withdrawer common.Address + Nonce *big.Int +} + +// 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\":\"calculateWithdrawalRoot\",\"inputs\":[{\"name\":\"queuedWithdrawal\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_QueuedWithdrawal\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"components\":[{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"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\":\"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\":\"migrateQueuedWithdrawal\",\"inputs\":[{\"name\":\"queuedWithdrawal\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_QueuedWithdrawal\",\"components\":[{\"name\":\"strategies\",\"type\":\"address[]\",\"internalType\":\"contractIStrategy[]\"},{\"name\":\"shares\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"staker\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"withdrawerAndNonce\",\"type\":\"tuple\",\"internalType\":\"structIStrategyManager.DeprecatedStruct_WithdrawerAndNonce\",\"components\":[{\"name\":\"withdrawer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"withdrawalStartBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegatedAddress\",\"type\":\"address\",\"internalType\":\"address\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"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\":\"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\":\"function\",\"name\":\"withdrawalRootPending\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"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}]", +} + +// StrategyManagerStorageABI is the input ABI used to generate the binding from. +// Deprecated: Use StrategyManagerStorageMetaData.ABI instead. +var StrategyManagerStorageABI = StrategyManagerStorageMetaData.ABI + +// StrategyManagerStorage is an auto generated Go binding around an Ethereum contract. +type StrategyManagerStorage struct { + StrategyManagerStorageCaller // Read-only binding to the contract + StrategyManagerStorageTransactor // Write-only binding to the contract + StrategyManagerStorageFilterer // Log filterer for contract events +} + +// StrategyManagerStorageCaller is an auto generated read-only Go binding around an Ethereum contract. +type StrategyManagerStorageCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StrategyManagerStorageTransactor is an auto generated write-only Go binding around an Ethereum contract. +type StrategyManagerStorageTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StrategyManagerStorageFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type StrategyManagerStorageFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// StrategyManagerStorageSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type StrategyManagerStorageSession struct { + Contract *StrategyManagerStorage // 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 +} + +// StrategyManagerStorageCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type StrategyManagerStorageCallerSession struct { + Contract *StrategyManagerStorageCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// StrategyManagerStorageTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type StrategyManagerStorageTransactorSession struct { + Contract *StrategyManagerStorageTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// StrategyManagerStorageRaw is an auto generated low-level Go binding around an Ethereum contract. +type StrategyManagerStorageRaw struct { + Contract *StrategyManagerStorage // Generic contract binding to access the raw methods on +} + +// StrategyManagerStorageCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type StrategyManagerStorageCallerRaw struct { + Contract *StrategyManagerStorageCaller // Generic read-only contract binding to access the raw methods on +} + +// StrategyManagerStorageTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type StrategyManagerStorageTransactorRaw struct { + Contract *StrategyManagerStorageTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewStrategyManagerStorage creates a new instance of StrategyManagerStorage, bound to a specific deployed contract. +func NewStrategyManagerStorage(address common.Address, backend bind.ContractBackend) (*StrategyManagerStorage, error) { + contract, err := bindStrategyManagerStorage(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &StrategyManagerStorage{StrategyManagerStorageCaller: StrategyManagerStorageCaller{contract: contract}, StrategyManagerStorageTransactor: StrategyManagerStorageTransactor{contract: contract}, StrategyManagerStorageFilterer: StrategyManagerStorageFilterer{contract: contract}}, nil +} + +// NewStrategyManagerStorageCaller creates a new read-only instance of StrategyManagerStorage, bound to a specific deployed contract. +func NewStrategyManagerStorageCaller(address common.Address, caller bind.ContractCaller) (*StrategyManagerStorageCaller, error) { + contract, err := bindStrategyManagerStorage(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &StrategyManagerStorageCaller{contract: contract}, nil +} + +// NewStrategyManagerStorageTransactor creates a new write-only instance of StrategyManagerStorage, bound to a specific deployed contract. +func NewStrategyManagerStorageTransactor(address common.Address, transactor bind.ContractTransactor) (*StrategyManagerStorageTransactor, error) { + contract, err := bindStrategyManagerStorage(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &StrategyManagerStorageTransactor{contract: contract}, nil +} + +// NewStrategyManagerStorageFilterer creates a new log filterer instance of StrategyManagerStorage, bound to a specific deployed contract. +func NewStrategyManagerStorageFilterer(address common.Address, filterer bind.ContractFilterer) (*StrategyManagerStorageFilterer, error) { + contract, err := bindStrategyManagerStorage(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &StrategyManagerStorageFilterer{contract: contract}, nil +} + +// bindStrategyManagerStorage binds a generic wrapper to an already deployed contract. +func bindStrategyManagerStorage(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := StrategyManagerStorageMetaData.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 (_StrategyManagerStorage *StrategyManagerStorageRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StrategyManagerStorage.Contract.StrategyManagerStorageCaller.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 (_StrategyManagerStorage *StrategyManagerStorageRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StrategyManagerStorage.Contract.StrategyManagerStorageTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StrategyManagerStorage *StrategyManagerStorageRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StrategyManagerStorage.Contract.StrategyManagerStorageTransactor.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 (_StrategyManagerStorage *StrategyManagerStorageCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _StrategyManagerStorage.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 (_StrategyManagerStorage *StrategyManagerStorageTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _StrategyManagerStorage.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_StrategyManagerStorage *StrategyManagerStorageTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _StrategyManagerStorage.Contract.contract.Transact(opts, method, params...) +} + +// DEPOSITTYPEHASH is a free data retrieval call binding the contract method 0x48825e94. +// +// Solidity: function DEPOSIT_TYPEHASH() view returns(bytes32) +func (_StrategyManagerStorage *StrategyManagerStorageCaller) DEPOSITTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _StrategyManagerStorage.contract.Call(opts, &out, "DEPOSIT_TYPEHASH") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// DEPOSITTYPEHASH is a free data retrieval call binding the contract method 0x48825e94. +// +// Solidity: function DEPOSIT_TYPEHASH() view returns(bytes32) +func (_StrategyManagerStorage *StrategyManagerStorageSession) DEPOSITTYPEHASH() ([32]byte, error) { + return _StrategyManagerStorage.Contract.DEPOSITTYPEHASH(&_StrategyManagerStorage.CallOpts) +} + +// DEPOSITTYPEHASH is a free data retrieval call binding the contract method 0x48825e94. +// +// Solidity: function DEPOSIT_TYPEHASH() view returns(bytes32) +func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) DEPOSITTYPEHASH() ([32]byte, error) { + return _StrategyManagerStorage.Contract.DEPOSITTYPEHASH(&_StrategyManagerStorage.CallOpts) +} + +// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70. +// +// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32) +func (_StrategyManagerStorage *StrategyManagerStorageCaller) DOMAINTYPEHASH(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _StrategyManagerStorage.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 (_StrategyManagerStorage *StrategyManagerStorageSession) DOMAINTYPEHASH() ([32]byte, error) { + return _StrategyManagerStorage.Contract.DOMAINTYPEHASH(&_StrategyManagerStorage.CallOpts) +} + +// DOMAINTYPEHASH is a free data retrieval call binding the contract method 0x20606b70. +// +// Solidity: function DOMAIN_TYPEHASH() view returns(bytes32) +func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) DOMAINTYPEHASH() ([32]byte, error) { + return _StrategyManagerStorage.Contract.DOMAINTYPEHASH(&_StrategyManagerStorage.CallOpts) +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0xb43b514b. +// +// Solidity: function calculateWithdrawalRoot((address[],uint256[],address,(address,uint96),uint32,address) queuedWithdrawal) pure returns(bytes32) +func (_StrategyManagerStorage *StrategyManagerStorageCaller) CalculateWithdrawalRoot(opts *bind.CallOpts, queuedWithdrawal IStrategyManagerDeprecatedStructQueuedWithdrawal) ([32]byte, error) { + var out []interface{} + err := _StrategyManagerStorage.contract.Call(opts, &out, "calculateWithdrawalRoot", queuedWithdrawal) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0xb43b514b. +// +// Solidity: function calculateWithdrawalRoot((address[],uint256[],address,(address,uint96),uint32,address) queuedWithdrawal) pure returns(bytes32) +func (_StrategyManagerStorage *StrategyManagerStorageSession) CalculateWithdrawalRoot(queuedWithdrawal IStrategyManagerDeprecatedStructQueuedWithdrawal) ([32]byte, error) { + return _StrategyManagerStorage.Contract.CalculateWithdrawalRoot(&_StrategyManagerStorage.CallOpts, queuedWithdrawal) +} + +// CalculateWithdrawalRoot is a free data retrieval call binding the contract method 0xb43b514b. +// +// Solidity: function calculateWithdrawalRoot((address[],uint256[],address,(address,uint96),uint32,address) queuedWithdrawal) pure returns(bytes32) +func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) CalculateWithdrawalRoot(queuedWithdrawal IStrategyManagerDeprecatedStructQueuedWithdrawal) ([32]byte, error) { + return _StrategyManagerStorage.Contract.CalculateWithdrawalRoot(&_StrategyManagerStorage.CallOpts, queuedWithdrawal) +} + +// Delegation is a free data retrieval call binding the contract method 0xdf5cf723. +// +// Solidity: function delegation() view returns(address) +func (_StrategyManagerStorage *StrategyManagerStorageCaller) Delegation(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _StrategyManagerStorage.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 (_StrategyManagerStorage *StrategyManagerStorageSession) Delegation() (common.Address, error) { + return _StrategyManagerStorage.Contract.Delegation(&_StrategyManagerStorage.CallOpts) +} + +// Delegation is a free data retrieval call binding the contract method 0xdf5cf723. +// +// Solidity: function delegation() view returns(address) +func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) Delegation() (common.Address, error) { + return _StrategyManagerStorage.Contract.Delegation(&_StrategyManagerStorage.CallOpts) +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_StrategyManagerStorage *StrategyManagerStorageCaller) EigenPodManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _StrategyManagerStorage.contract.Call(opts, &out, "eigenPodManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_StrategyManagerStorage *StrategyManagerStorageSession) EigenPodManager() (common.Address, error) { + return _StrategyManagerStorage.Contract.EigenPodManager(&_StrategyManagerStorage.CallOpts) +} + +// EigenPodManager is a free data retrieval call binding the contract method 0x4665bcda. +// +// Solidity: function eigenPodManager() view returns(address) +func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) EigenPodManager() (common.Address, error) { + return _StrategyManagerStorage.Contract.EigenPodManager(&_StrategyManagerStorage.CallOpts) +} + +// GetDeposits is a free data retrieval call binding the contract method 0x94f649dd. +// +// 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, "getDeposits", staker) + + if err != nil { + return *new([]common.Address), *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + out1 := *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int) + + return out0, out1, err + +} + +// 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) +} + +// 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) { + var out []interface{} + err := _StrategyManagerStorage.contract.Call(opts, &out, "nonces", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// 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) +} + +// 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) +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_StrategyManagerStorage *StrategyManagerStorageCaller) Slasher(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _StrategyManagerStorage.contract.Call(opts, &out, "slasher") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_StrategyManagerStorage *StrategyManagerStorageSession) Slasher() (common.Address, error) { + return _StrategyManagerStorage.Contract.Slasher(&_StrategyManagerStorage.CallOpts) +} + +// Slasher is a free data retrieval call binding the contract method 0xb1344271. +// +// Solidity: function slasher() view returns(address) +func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) Slasher() (common.Address, error) { + return _StrategyManagerStorage.Contract.Slasher(&_StrategyManagerStorage.CallOpts) +} + +// 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) { + var out []interface{} + err := _StrategyManagerStorage.contract.Call(opts, &out, "stakerStrategyList", arg0, arg1) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// 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) +} + +// 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) +} + +// StakerStrategyListLength is a free data retrieval call binding the contract method 0x8b8aac3c. +// +// Solidity: function stakerStrategyListLength(address staker) view returns(uint256) +func (_StrategyManagerStorage *StrategyManagerStorageCaller) StakerStrategyListLength(opts *bind.CallOpts, staker common.Address) (*big.Int, error) { + var out []interface{} + err := _StrategyManagerStorage.contract.Call(opts, &out, "stakerStrategyListLength", staker) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// StakerStrategyListLength is a free data retrieval call binding the contract method 0x8b8aac3c. +// +// Solidity: function stakerStrategyListLength(address staker) view returns(uint256) +func (_StrategyManagerStorage *StrategyManagerStorageSession) StakerStrategyListLength(staker common.Address) (*big.Int, error) { + return _StrategyManagerStorage.Contract.StakerStrategyListLength(&_StrategyManagerStorage.CallOpts, staker) +} + +// StakerStrategyListLength is a free data retrieval call binding the contract method 0x8b8aac3c. +// +// Solidity: function stakerStrategyListLength(address staker) view returns(uint256) +func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) StakerStrategyListLength(staker common.Address) (*big.Int, error) { + 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) { + var out []interface{} + err := _StrategyManagerStorage.contract.Call(opts, &out, "strategyIsWhitelistedForDeposit", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// 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) +} + +// 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) +} + +// StrategyWhitelister is a free data retrieval call binding the contract method 0x967fc0d2. +// +// Solidity: function strategyWhitelister() view returns(address) +func (_StrategyManagerStorage *StrategyManagerStorageCaller) StrategyWhitelister(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _StrategyManagerStorage.contract.Call(opts, &out, "strategyWhitelister") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// StrategyWhitelister is a free data retrieval call binding the contract method 0x967fc0d2. +// +// Solidity: function strategyWhitelister() view returns(address) +func (_StrategyManagerStorage *StrategyManagerStorageSession) StrategyWhitelister() (common.Address, error) { + return _StrategyManagerStorage.Contract.StrategyWhitelister(&_StrategyManagerStorage.CallOpts) +} + +// StrategyWhitelister is a free data retrieval call binding the contract method 0x967fc0d2. +// +// Solidity: function strategyWhitelister() view returns(address) +func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) StrategyWhitelister() (common.Address, error) { + return _StrategyManagerStorage.Contract.StrategyWhitelister(&_StrategyManagerStorage.CallOpts) +} + +// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d. +// +// 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 + +} + +// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d. +// +// Solidity: function thirdPartyTransfersForbidden(address ) view returns(bool) +func (_StrategyManagerStorage *StrategyManagerStorageSession) ThirdPartyTransfersForbidden(arg0 common.Address) (bool, error) { + return _StrategyManagerStorage.Contract.ThirdPartyTransfersForbidden(&_StrategyManagerStorage.CallOpts, arg0) +} + +// ThirdPartyTransfersForbidden is a free data retrieval call binding the contract method 0x9b4da03d. +// +// Solidity: function thirdPartyTransfersForbidden(address ) view returns(bool) +func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) ThirdPartyTransfersForbidden(arg0 common.Address) (bool, error) { + return _StrategyManagerStorage.Contract.ThirdPartyTransfersForbidden(&_StrategyManagerStorage.CallOpts, arg0) +} + +// WithdrawalRootPending is a free data retrieval call binding the contract method 0xc3c6b3a9. +// +// Solidity: function withdrawalRootPending(bytes32 ) view returns(bool) +func (_StrategyManagerStorage *StrategyManagerStorageCaller) WithdrawalRootPending(opts *bind.CallOpts, arg0 [32]byte) (bool, error) { + var out []interface{} + err := _StrategyManagerStorage.contract.Call(opts, &out, "withdrawalRootPending", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// WithdrawalRootPending is a free data retrieval call binding the contract method 0xc3c6b3a9. +// +// Solidity: function withdrawalRootPending(bytes32 ) view returns(bool) +func (_StrategyManagerStorage *StrategyManagerStorageSession) WithdrawalRootPending(arg0 [32]byte) (bool, error) { + return _StrategyManagerStorage.Contract.WithdrawalRootPending(&_StrategyManagerStorage.CallOpts, arg0) +} + +// WithdrawalRootPending is a free data retrieval call binding the contract method 0xc3c6b3a9. +// +// Solidity: function withdrawalRootPending(bytes32 ) view returns(bool) +func (_StrategyManagerStorage *StrategyManagerStorageCallerSession) WithdrawalRootPending(arg0 [32]byte) (bool, error) { + return _StrategyManagerStorage.Contract.WithdrawalRootPending(&_StrategyManagerStorage.CallOpts, arg0) +} + +// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1. +// +// Solidity: function addShares(address staker, address token, address strategy, uint256 shares) returns() +func (_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) +} + +// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1. +// +// 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) +} + +// AddShares is a paid mutator transaction binding the contract method 0xc4623ea1. +// +// 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) +} + +// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547. +// +// 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) +} + +// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547. +// +// 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) +} + +// AddStrategiesToDepositWhitelist is a paid mutator transaction binding the contract method 0xdf5b3547. +// +// 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) +} + +// DepositIntoStrategy is a paid mutator transaction binding the contract method 0xe7a050aa. +// +// Solidity: function depositIntoStrategy(address strategy, address token, uint256 amount) returns(uint256 shares) +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) +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) +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) +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) +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) +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) +} + +// MigrateQueuedWithdrawal is a paid mutator transaction binding the contract method 0xcd293f6f. +// +// Solidity: function migrateQueuedWithdrawal((address[],uint256[],address,(address,uint96),uint32,address) queuedWithdrawal) returns(bool, bytes32) +func (_StrategyManagerStorage *StrategyManagerStorageTransactor) MigrateQueuedWithdrawal(opts *bind.TransactOpts, queuedWithdrawal IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _StrategyManagerStorage.contract.Transact(opts, "migrateQueuedWithdrawal", queuedWithdrawal) +} + +// MigrateQueuedWithdrawal is a paid mutator transaction binding the contract method 0xcd293f6f. +// +// Solidity: function migrateQueuedWithdrawal((address[],uint256[],address,(address,uint96),uint32,address) queuedWithdrawal) returns(bool, bytes32) +func (_StrategyManagerStorage *StrategyManagerStorageSession) MigrateQueuedWithdrawal(queuedWithdrawal IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _StrategyManagerStorage.Contract.MigrateQueuedWithdrawal(&_StrategyManagerStorage.TransactOpts, queuedWithdrawal) +} + +// MigrateQueuedWithdrawal is a paid mutator transaction binding the contract method 0xcd293f6f. +// +// Solidity: function migrateQueuedWithdrawal((address[],uint256[],address,(address,uint96),uint32,address) queuedWithdrawal) returns(bool, bytes32) +func (_StrategyManagerStorage *StrategyManagerStorageTransactorSession) MigrateQueuedWithdrawal(queuedWithdrawal IStrategyManagerDeprecatedStructQueuedWithdrawal) (*types.Transaction, error) { + return _StrategyManagerStorage.Contract.MigrateQueuedWithdrawal(&_StrategyManagerStorage.TransactOpts, queuedWithdrawal) +} + +// RemoveShares is a paid mutator transaction binding the contract method 0x8c80d4e5. +// +// 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) +} + +// RemoveShares is a paid mutator transaction binding the contract method 0x8c80d4e5. +// +// 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) +} + +// RemoveShares is a paid mutator transaction binding the contract method 0x8c80d4e5. +// +// 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) +} + +// RemoveStrategiesFromDepositWhitelist is a paid mutator transaction binding the contract method 0xb5d8b5b8. +// +// Solidity: function removeStrategiesFromDepositWhitelist(address[] strategiesToRemoveFromWhitelist) returns() +func (_StrategyManagerStorage *StrategyManagerStorageTransactor) RemoveStrategiesFromDepositWhitelist(opts *bind.TransactOpts, strategiesToRemoveFromWhitelist []common.Address) (*types.Transaction, error) { + return _StrategyManagerStorage.contract.Transact(opts, "removeStrategiesFromDepositWhitelist", strategiesToRemoveFromWhitelist) +} + +// RemoveStrategiesFromDepositWhitelist is a paid mutator transaction binding the contract method 0xb5d8b5b8. +// +// Solidity: function removeStrategiesFromDepositWhitelist(address[] strategiesToRemoveFromWhitelist) returns() +func (_StrategyManagerStorage *StrategyManagerStorageSession) RemoveStrategiesFromDepositWhitelist(strategiesToRemoveFromWhitelist []common.Address) (*types.Transaction, error) { + return _StrategyManagerStorage.Contract.RemoveStrategiesFromDepositWhitelist(&_StrategyManagerStorage.TransactOpts, strategiesToRemoveFromWhitelist) +} + +// RemoveStrategiesFromDepositWhitelist is a paid mutator transaction binding the contract method 0xb5d8b5b8. +// +// Solidity: function removeStrategiesFromDepositWhitelist(address[] strategiesToRemoveFromWhitelist) returns() +func (_StrategyManagerStorage *StrategyManagerStorageTransactorSession) RemoveStrategiesFromDepositWhitelist(strategiesToRemoveFromWhitelist []common.Address) (*types.Transaction, error) { + return _StrategyManagerStorage.Contract.RemoveStrategiesFromDepositWhitelist(&_StrategyManagerStorage.TransactOpts, strategiesToRemoveFromWhitelist) +} + +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0xc608c7f3. +// +// 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) +} + +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0xc608c7f3. +// +// 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) +} + +// WithdrawSharesAsTokens is a paid mutator transaction binding the contract method 0xc608c7f3. +// +// 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) +} + +// 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 + + 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 *StrategyManagerStorageDepositIterator) 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(StrategyManagerStorageDeposit) + 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(StrategyManagerStorageDeposit) + 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 *StrategyManagerStorageDepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyManagerStorageDepositIterator) 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 + 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. +// +// Solidity: event Deposit(address staker, address token, address strategy, uint256 shares) +func (_StrategyManagerStorage *StrategyManagerStorageFilterer) FilterDeposit(opts *bind.FilterOpts) (*StrategyManagerStorageDepositIterator, error) { + + logs, sub, err := _StrategyManagerStorage.contract.FilterLogs(opts, "Deposit") + if err != nil { + return nil, err + } + return &StrategyManagerStorageDepositIterator{contract: _StrategyManagerStorage.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a96. +// +// Solidity: event Deposit(address staker, address token, address strategy, uint256 shares) +func (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *StrategyManagerStorageDeposit) (event.Subscription, error) { + + logs, sub, err := _StrategyManagerStorage.contract.WatchLogs(opts, "Deposit") + 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(StrategyManagerStorageDeposit) + if err := _StrategyManagerStorage.contract.UnpackLog(event, "Deposit", 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 +} + +// ParseDeposit is a log parse operation binding the contract event 0x7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a96. +// +// 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 { + 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 + + 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 *StrategyManagerStorageStrategyAddedToDepositWhitelistIterator) 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(StrategyManagerStorageStrategyAddedToDepositWhitelist) + 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(StrategyManagerStorageStrategyAddedToDepositWhitelist) + 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 *StrategyManagerStorageStrategyAddedToDepositWhitelistIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyManagerStorageStrategyAddedToDepositWhitelistIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StrategyManagerStorageStrategyAddedToDepositWhitelist represents a StrategyAddedToDepositWhitelist event raised by the StrategyManagerStorage contract. +type StrategyManagerStorageStrategyAddedToDepositWhitelist struct { + Strategy common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterStrategyAddedToDepositWhitelist is a free log retrieval operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe. +// +// Solidity: event StrategyAddedToDepositWhitelist(address strategy) +func (_StrategyManagerStorage *StrategyManagerStorageFilterer) FilterStrategyAddedToDepositWhitelist(opts *bind.FilterOpts) (*StrategyManagerStorageStrategyAddedToDepositWhitelistIterator, error) { + + logs, sub, err := _StrategyManagerStorage.contract.FilterLogs(opts, "StrategyAddedToDepositWhitelist") + if err != nil { + return nil, err + } + return &StrategyManagerStorageStrategyAddedToDepositWhitelistIterator{contract: _StrategyManagerStorage.contract, event: "StrategyAddedToDepositWhitelist", logs: logs, sub: sub}, nil +} + +// WatchStrategyAddedToDepositWhitelist is a free log subscription operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe. +// +// 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, "StrategyAddedToDepositWhitelist") + 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(StrategyManagerStorageStrategyAddedToDepositWhitelist) + if err := _StrategyManagerStorage.contract.UnpackLog(event, "StrategyAddedToDepositWhitelist", 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 +} + +// ParseStrategyAddedToDepositWhitelist is a log parse operation binding the contract event 0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe. +// +// 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 +} + +// 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 + + 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 *StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator) 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(StrategyManagerStorageStrategyRemovedFromDepositWhitelist) + 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(StrategyManagerStorageStrategyRemovedFromDepositWhitelist) + 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 *StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// StrategyManagerStorageStrategyRemovedFromDepositWhitelist represents a StrategyRemovedFromDepositWhitelist event raised by the StrategyManagerStorage contract. +type StrategyManagerStorageStrategyRemovedFromDepositWhitelist struct { + Strategy common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterStrategyRemovedFromDepositWhitelist is a free log retrieval operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030. +// +// Solidity: event StrategyRemovedFromDepositWhitelist(address strategy) +func (_StrategyManagerStorage *StrategyManagerStorageFilterer) FilterStrategyRemovedFromDepositWhitelist(opts *bind.FilterOpts) (*StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator, error) { + + logs, sub, err := _StrategyManagerStorage.contract.FilterLogs(opts, "StrategyRemovedFromDepositWhitelist") + if err != nil { + return nil, err + } + return &StrategyManagerStorageStrategyRemovedFromDepositWhitelistIterator{contract: _StrategyManagerStorage.contract, event: "StrategyRemovedFromDepositWhitelist", logs: logs, sub: sub}, nil +} + +// WatchStrategyRemovedFromDepositWhitelist is a free log subscription operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030. +// +// 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, "StrategyRemovedFromDepositWhitelist") + 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(StrategyManagerStorageStrategyRemovedFromDepositWhitelist) + if err := _StrategyManagerStorage.contract.UnpackLog(event, "StrategyRemovedFromDepositWhitelist", 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 +} + +// ParseStrategyRemovedFromDepositWhitelist is a log parse operation binding the contract event 0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030. +// +// 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 +} + +// 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 + + 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 *StrategyManagerStorageStrategyWhitelisterChangedIterator) 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(StrategyManagerStorageStrategyWhitelisterChanged) + 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(StrategyManagerStorageStrategyWhitelisterChanged) + 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 *StrategyManagerStorageStrategyWhitelisterChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyManagerStorageStrategyWhitelisterChangedIterator) 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 +} + +// FilterStrategyWhitelisterChanged is a free log retrieval operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29. +// +// Solidity: event StrategyWhitelisterChanged(address previousAddress, address newAddress) +func (_StrategyManagerStorage *StrategyManagerStorageFilterer) FilterStrategyWhitelisterChanged(opts *bind.FilterOpts) (*StrategyManagerStorageStrategyWhitelisterChangedIterator, error) { + + logs, sub, err := _StrategyManagerStorage.contract.FilterLogs(opts, "StrategyWhitelisterChanged") + if err != nil { + return nil, err + } + return &StrategyManagerStorageStrategyWhitelisterChangedIterator{contract: _StrategyManagerStorage.contract, event: "StrategyWhitelisterChanged", logs: logs, sub: sub}, nil +} + +// WatchStrategyWhitelisterChanged is a free log subscription operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29. +// +// 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, "StrategyWhitelisterChanged") + 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(StrategyManagerStorageStrategyWhitelisterChanged) + if err := _StrategyManagerStorage.contract.UnpackLog(event, "StrategyWhitelisterChanged", 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 +} + +// ParseStrategyWhitelisterChanged is a log parse operation binding the contract event 0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29. +// +// 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 + 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 + + 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 *StrategyManagerStorageUpdatedThirdPartyTransfersForbiddenIterator) 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(StrategyManagerStorageUpdatedThirdPartyTransfersForbidden) + 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(StrategyManagerStorageUpdatedThirdPartyTransfersForbidden) + 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 *StrategyManagerStorageUpdatedThirdPartyTransfersForbiddenIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *StrategyManagerStorageUpdatedThirdPartyTransfersForbiddenIterator) 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 +} + +// FilterUpdatedThirdPartyTransfersForbidden is a free log retrieval operation binding the contract event 0x77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786. +// +// Solidity: event UpdatedThirdPartyTransfersForbidden(address strategy, bool value) +func (_StrategyManagerStorage *StrategyManagerStorageFilterer) FilterUpdatedThirdPartyTransfersForbidden(opts *bind.FilterOpts) (*StrategyManagerStorageUpdatedThirdPartyTransfersForbiddenIterator, error) { + + logs, sub, err := _StrategyManagerStorage.contract.FilterLogs(opts, "UpdatedThirdPartyTransfersForbidden") + if err != nil { + return nil, err + } + return &StrategyManagerStorageUpdatedThirdPartyTransfersForbiddenIterator{contract: _StrategyManagerStorage.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 (_StrategyManagerStorage *StrategyManagerStorageFilterer) WatchUpdatedThirdPartyTransfersForbidden(opts *bind.WatchOpts, sink chan<- *StrategyManagerStorageUpdatedThirdPartyTransfersForbidden) (event.Subscription, error) { + + logs, sub, err := _StrategyManagerStorage.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(StrategyManagerStorageUpdatedThirdPartyTransfersForbidden) + if err := _StrategyManagerStorage.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 (_StrategyManagerStorage *StrategyManagerStorageFilterer) ParseUpdatedThirdPartyTransfersForbidden(log types.Log) (*StrategyManagerStorageUpdatedThirdPartyTransfersForbidden, error) { + event := new(StrategyManagerStorageUpdatedThirdPartyTransfersForbidden) + if err := _StrategyManagerStorage.contract.UnpackLog(event, "UpdatedThirdPartyTransfersForbidden", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/bindings/StrategyManagerStorage/tmp.abi b/pkg/bindings/StrategyManagerStorage/tmp.abi new file mode 100644 index 000000000..7d03949e0 --- /dev/null +++ b/pkg/bindings/StrategyManagerStorage/tmp.abi @@ -0,0 +1,656 @@ +[ + { + "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": "contract IERC20" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "addStrategiesToDepositWhitelist", + "inputs": [ + { + "name": "strategiesToWhitelist", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "thirdPartyTransfersForbiddenValues", + "type": "bool[]", + "internalType": "bool[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "calculateWithdrawalRoot", + "inputs": [ + { + "name": "queuedWithdrawal", + "type": "tuple", + "internalType": "struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal", + "components": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "withdrawerAndNonce", + "type": "tuple", + "internalType": "struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce", + "components": [ + { + "name": "withdrawer", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "name": "withdrawalStartBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "delegatedAddress", + "type": "address", + "internalType": "address" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "delegation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "depositIntoStrategy", + "inputs": [ + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "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": "contract IStrategy" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + }, + { + "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": "eigenPodManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IEigenPodManager" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getDeposits", + "inputs": [ + { + "name": "staker", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "migrateQueuedWithdrawal", + "inputs": [ + { + "name": "queuedWithdrawal", + "type": "tuple", + "internalType": "struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal", + "components": [ + { + "name": "strategies", + "type": "address[]", + "internalType": "contract IStrategy[]" + }, + { + "name": "shares", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "staker", + "type": "address", + "internalType": "address" + }, + { + "name": "withdrawerAndNonce", + "type": "tuple", + "internalType": "struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce", + "components": [ + { + "name": "withdrawer", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint96", + "internalType": "uint96" + } + ] + }, + { + "name": "withdrawalStartBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "delegatedAddress", + "type": "address", + "internalType": "address" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "nonpayable" + }, + { + "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": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "removeStrategiesFromDepositWhitelist", + "inputs": [ + { + "name": "strategiesToRemoveFromWhitelist", + "type": "address[]", + "internalType": "contract IStrategy[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "slasher", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ISlasher" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "stakerStrategyList", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "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": "contract IStrategy" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "strategyIsWhitelistedForDeposit", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStrategy" + } + ], + "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": "contract IStrategy" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "withdrawSharesAsTokens", + "inputs": [ + { + "name": "recipient", + "type": "address", + "internalType": "address" + }, + { + "name": "strategy", + "type": "address", + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "token", + "type": "address", + "internalType": "contract IERC20" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdrawalRootPending", + "inputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "Deposit", + "inputs": [ + { + "name": "staker", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "contract IERC20" + }, + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + }, + { + "name": "shares", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyAddedToDepositWhitelist", + "inputs": [ + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StrategyRemovedFromDepositWhitelist", + "inputs": [ + { + "name": "strategy", + "type": "address", + "indexed": false, + "internalType": "contract IStrategy" + } + ], + "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": "contract IStrategy" + }, + { + "name": "value", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + } +] diff --git a/pkg/bindings/StrategyManagerStorage/tmp.bin b/pkg/bindings/StrategyManagerStorage/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/StrategyManagerStorage/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/pkg/bindings/StructuredLinkedList/binding.go b/pkg/bindings/StructuredLinkedList/binding.go new file mode 100644 index 000000000..d4b9b5523 --- /dev/null +++ b/pkg/bindings/StructuredLinkedList/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 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: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205bd8cdf8002773e2e90ef5e624aaeab92ffd9ebdb6578fec2e84d10c3980b0c064736f6c634300080c0033", +} + +// 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/StructuredLinkedList/tmp.abi b/pkg/bindings/StructuredLinkedList/tmp.abi new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/pkg/bindings/StructuredLinkedList/tmp.abi @@ -0,0 +1 @@ +[] diff --git a/pkg/bindings/StructuredLinkedList/tmp.bin b/pkg/bindings/StructuredLinkedList/tmp.bin new file mode 100644 index 000000000..194685cfe --- /dev/null +++ b/pkg/bindings/StructuredLinkedList/tmp.bin @@ -0,0 +1 @@ +0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205bd8cdf8002773e2e90ef5e624aaeab92ffd9ebdb6578fec2e84d10c3980b0c064736f6c634300080c0033 diff --git a/pkg/bindings/UpgradeableSignatureCheckingUtils/binding.go b/pkg/bindings/UpgradeableSignatureCheckingUtils/binding.go new file mode 100644 index 000000000..61b50a094 --- /dev/null +++ b/pkg/bindings/UpgradeableSignatureCheckingUtils/binding.go @@ -0,0 +1,377 @@ +// 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/pkg/bindings/UpgradeableSignatureCheckingUtils/tmp.abi b/pkg/bindings/UpgradeableSignatureCheckingUtils/tmp.abi new file mode 100644 index 000000000..785d56829 --- /dev/null +++ b/pkg/bindings/UpgradeableSignatureCheckingUtils/tmp.abi @@ -0,0 +1,41 @@ +[ + { + "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 + } +] diff --git a/pkg/bindings/UpgradeableSignatureCheckingUtils/tmp.bin b/pkg/bindings/UpgradeableSignatureCheckingUtils/tmp.bin new file mode 100644 index 000000000..ec687260b --- /dev/null +++ b/pkg/bindings/UpgradeableSignatureCheckingUtils/tmp.bin @@ -0,0 +1 @@ +0x diff --git a/scripts/compile-bindings.sh b/scripts/compile-bindings.sh new file mode 100755 index 000000000..bb7ab577c --- /dev/null +++ b/scripts/compile-bindings.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +BINDING_DIR=./pkg/bindings +JSON_DIR=./out + +function create_binding { + contract_name=$1 + + mkdir -p $BINDING_DIR/${contract_name} + + contract_json_path="${JSON_DIR}/${contract_name}.sol/${contract_name}.json" + + binding_out_dir="${BINDING_DIR}/${contract_name}" + mkdir -p $binding_out_dir || true + + cat $contract_json_path | jq -r '.abi' > $binding_out_dir/tmp.abi + cat $contract_json_path | jq -r '.bytecode.object' > $binding_out_dir/tmp.bin + + abigen \ + --bin=$binding_out_dir/tmp.bin \ + --abi=$binding_out_dir/tmp.abi \ + --pkg="${contract_name}" \ + --out=$BINDING_DIR/$contract_name/binding.go +} + +contracts=$(find src/contracts -type f -name "*.sol" ) +IFS=$'\n' + +for contract_name in $contracts; do + contract_name=$(basename $contract_name .sol) + create_binding $contract_name +done diff --git a/scripts/pre-commit.sh b/scripts/pre-commit.sh new file mode 100755 index 000000000..e844c4f76 --- /dev/null +++ b/scripts/pre-commit.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +make bindings