diff --git a/contracts-abi/abi/ValidatorOptInRouter.abi b/contracts-abi/abi/ValidatorOptInRouter.abi new file mode 100644 index 000000000..3ccdb6c0f --- /dev/null +++ b/contracts-abi/abi/ValidatorOptInRouter.abi @@ -0,0 +1,398 @@ +[ + { + "type": "constructor", + "inputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "fallback", + "stateMutability": "payable" + }, + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "UPGRADE_INTERFACE_VERSION", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "acceptOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "areValidatorsOptedIn", + "inputs": [ + { + "name": "valBLSPubKeys", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "outputs": [ + { + "name": "", + "type": "bool[]", + "internalType": "bool[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_validatorRegistry", + "type": "address", + "internalType": "address" + }, + { + "name": "_mevCommitAVS", + "type": "address", + "internalType": "address" + }, + { + "name": "_owner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "mevCommitAVS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IMevCommitAVS" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pendingOwner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "proxiableUUID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setMevCommitAVS", + "inputs": [ + { + "name": "_mevCommitAVS", + "type": "address", + "internalType": "contract IMevCommitAVS" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setValidatorRegistryV1", + "inputs": [ + { + "name": "_validatorRegistry", + "type": "address", + "internalType": "contract IValidatorRegistryV1" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "upgradeToAndCall", + "inputs": [ + { + "name": "newImplementation", + "type": "address", + "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "validatorRegistryV1", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IValidatorRegistryV1" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MevCommitAVSSet", + "inputs": [ + { + "name": "oldContract", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newContract", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferStarted", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "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": "Upgraded", + "inputs": [ + { + "name": "implementation", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ValidatorRegistryV1Set", + "inputs": [ + { + "name": "oldContract", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newContract", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "AddressEmptyCode", + "inputs": [ + { + "name": "target", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ERC1967InvalidImplementation", + "inputs": [ + { + "name": "implementation", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ERC1967NonPayable", + "inputs": [] + }, + { + "type": "error", + "name": "FailedInnerCall", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidFallback", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidInitialization", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidReceive", + "inputs": [] + }, + { + "type": "error", + "name": "NotInitializing", + "inputs": [] + }, + { + "type": "error", + "name": "OwnableInvalidOwner", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "OwnableUnauthorizedAccount", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "UUPSUnauthorizedCallContext", + "inputs": [] + }, + { + "type": "error", + "name": "UUPSUnsupportedProxiableUUID", + "inputs": [ + { + "name": "slot", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } +] diff --git a/contracts-abi/clients/ValidatorOptInRouter/ValidatorOptInRouter.go b/contracts-abi/clients/ValidatorOptInRouter/ValidatorOptInRouter.go new file mode 100644 index 000000000..df96a54e2 --- /dev/null +++ b/contracts-abi/clients/ValidatorOptInRouter/ValidatorOptInRouter.go @@ -0,0 +1,1441 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package validatoroptinrouter + +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 +) + +// ValidatoroptinrouterMetaData contains all meta data concerning the Validatoroptinrouter contract. +var ValidatoroptinrouterMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"areValidatorsOptedIn\",\"inputs\":[{\"name\":\"valBLSPubKeys\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool[]\",\"internalType\":\"bool[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_validatorRegistry\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_mevCommitAVS\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mevCommitAVS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIMevCommitAVS\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMevCommitAVS\",\"inputs\":[{\"name\":\"_mevCommitAVS\",\"type\":\"address\",\"internalType\":\"contractIMevCommitAVS\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setValidatorRegistryV1\",\"inputs\":[{\"name\":\"_validatorRegistry\",\"type\":\"address\",\"internalType\":\"contractIValidatorRegistryV1\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"validatorRegistryV1\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIValidatorRegistryV1\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MevCommitAVSSet\",\"inputs\":[{\"name\":\"oldContract\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newContract\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"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\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRegistryV1Set\",\"inputs\":[{\"name\":\"oldContract\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newContract\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidFallback\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidReceive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]", +} + +// ValidatoroptinrouterABI is the input ABI used to generate the binding from. +// Deprecated: Use ValidatoroptinrouterMetaData.ABI instead. +var ValidatoroptinrouterABI = ValidatoroptinrouterMetaData.ABI + +// Validatoroptinrouter is an auto generated Go binding around an Ethereum contract. +type Validatoroptinrouter struct { + ValidatoroptinrouterCaller // Read-only binding to the contract + ValidatoroptinrouterTransactor // Write-only binding to the contract + ValidatoroptinrouterFilterer // Log filterer for contract events +} + +// ValidatoroptinrouterCaller is an auto generated read-only Go binding around an Ethereum contract. +type ValidatoroptinrouterCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatoroptinrouterTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ValidatoroptinrouterTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatoroptinrouterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ValidatoroptinrouterFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ValidatoroptinrouterSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ValidatoroptinrouterSession struct { + Contract *Validatoroptinrouter // 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 +} + +// ValidatoroptinrouterCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ValidatoroptinrouterCallerSession struct { + Contract *ValidatoroptinrouterCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ValidatoroptinrouterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ValidatoroptinrouterTransactorSession struct { + Contract *ValidatoroptinrouterTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ValidatoroptinrouterRaw is an auto generated low-level Go binding around an Ethereum contract. +type ValidatoroptinrouterRaw struct { + Contract *Validatoroptinrouter // Generic contract binding to access the raw methods on +} + +// ValidatoroptinrouterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ValidatoroptinrouterCallerRaw struct { + Contract *ValidatoroptinrouterCaller // Generic read-only contract binding to access the raw methods on +} + +// ValidatoroptinrouterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ValidatoroptinrouterTransactorRaw struct { + Contract *ValidatoroptinrouterTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewValidatoroptinrouter creates a new instance of Validatoroptinrouter, bound to a specific deployed contract. +func NewValidatoroptinrouter(address common.Address, backend bind.ContractBackend) (*Validatoroptinrouter, error) { + contract, err := bindValidatoroptinrouter(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Validatoroptinrouter{ValidatoroptinrouterCaller: ValidatoroptinrouterCaller{contract: contract}, ValidatoroptinrouterTransactor: ValidatoroptinrouterTransactor{contract: contract}, ValidatoroptinrouterFilterer: ValidatoroptinrouterFilterer{contract: contract}}, nil +} + +// NewValidatoroptinrouterCaller creates a new read-only instance of Validatoroptinrouter, bound to a specific deployed contract. +func NewValidatoroptinrouterCaller(address common.Address, caller bind.ContractCaller) (*ValidatoroptinrouterCaller, error) { + contract, err := bindValidatoroptinrouter(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ValidatoroptinrouterCaller{contract: contract}, nil +} + +// NewValidatoroptinrouterTransactor creates a new write-only instance of Validatoroptinrouter, bound to a specific deployed contract. +func NewValidatoroptinrouterTransactor(address common.Address, transactor bind.ContractTransactor) (*ValidatoroptinrouterTransactor, error) { + contract, err := bindValidatoroptinrouter(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ValidatoroptinrouterTransactor{contract: contract}, nil +} + +// NewValidatoroptinrouterFilterer creates a new log filterer instance of Validatoroptinrouter, bound to a specific deployed contract. +func NewValidatoroptinrouterFilterer(address common.Address, filterer bind.ContractFilterer) (*ValidatoroptinrouterFilterer, error) { + contract, err := bindValidatoroptinrouter(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ValidatoroptinrouterFilterer{contract: contract}, nil +} + +// bindValidatoroptinrouter binds a generic wrapper to an already deployed contract. +func bindValidatoroptinrouter(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ValidatoroptinrouterMetaData.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 (_Validatoroptinrouter *ValidatoroptinrouterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Validatoroptinrouter.Contract.ValidatoroptinrouterCaller.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 (_Validatoroptinrouter *ValidatoroptinrouterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.ValidatoroptinrouterTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Validatoroptinrouter *ValidatoroptinrouterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.ValidatoroptinrouterTransactor.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 (_Validatoroptinrouter *ValidatoroptinrouterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Validatoroptinrouter.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 (_Validatoroptinrouter *ValidatoroptinrouterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Validatoroptinrouter *ValidatoroptinrouterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.contract.Transact(opts, method, params...) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_Validatoroptinrouter *ValidatoroptinrouterCaller) UPGRADEINTERFACEVERSION(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _Validatoroptinrouter.contract.Call(opts, &out, "UPGRADE_INTERFACE_VERSION") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_Validatoroptinrouter *ValidatoroptinrouterSession) UPGRADEINTERFACEVERSION() (string, error) { + return _Validatoroptinrouter.Contract.UPGRADEINTERFACEVERSION(&_Validatoroptinrouter.CallOpts) +} + +// UPGRADEINTERFACEVERSION is a free data retrieval call binding the contract method 0xad3cb1cc. +// +// Solidity: function UPGRADE_INTERFACE_VERSION() view returns(string) +func (_Validatoroptinrouter *ValidatoroptinrouterCallerSession) UPGRADEINTERFACEVERSION() (string, error) { + return _Validatoroptinrouter.Contract.UPGRADEINTERFACEVERSION(&_Validatoroptinrouter.CallOpts) +} + +// AreValidatorsOptedIn is a free data retrieval call binding the contract method 0x5b88b173. +// +// Solidity: function areValidatorsOptedIn(bytes[] valBLSPubKeys) view returns(bool[]) +func (_Validatoroptinrouter *ValidatoroptinrouterCaller) AreValidatorsOptedIn(opts *bind.CallOpts, valBLSPubKeys [][]byte) ([]bool, error) { + var out []interface{} + err := _Validatoroptinrouter.contract.Call(opts, &out, "areValidatorsOptedIn", valBLSPubKeys) + + if err != nil { + return *new([]bool), err + } + + out0 := *abi.ConvertType(out[0], new([]bool)).(*[]bool) + + return out0, err + +} + +// AreValidatorsOptedIn is a free data retrieval call binding the contract method 0x5b88b173. +// +// Solidity: function areValidatorsOptedIn(bytes[] valBLSPubKeys) view returns(bool[]) +func (_Validatoroptinrouter *ValidatoroptinrouterSession) AreValidatorsOptedIn(valBLSPubKeys [][]byte) ([]bool, error) { + return _Validatoroptinrouter.Contract.AreValidatorsOptedIn(&_Validatoroptinrouter.CallOpts, valBLSPubKeys) +} + +// AreValidatorsOptedIn is a free data retrieval call binding the contract method 0x5b88b173. +// +// Solidity: function areValidatorsOptedIn(bytes[] valBLSPubKeys) view returns(bool[]) +func (_Validatoroptinrouter *ValidatoroptinrouterCallerSession) AreValidatorsOptedIn(valBLSPubKeys [][]byte) ([]bool, error) { + return _Validatoroptinrouter.Contract.AreValidatorsOptedIn(&_Validatoroptinrouter.CallOpts, valBLSPubKeys) +} + +// MevCommitAVS is a free data retrieval call binding the contract method 0x22a3d9d6. +// +// Solidity: function mevCommitAVS() view returns(address) +func (_Validatoroptinrouter *ValidatoroptinrouterCaller) MevCommitAVS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Validatoroptinrouter.contract.Call(opts, &out, "mevCommitAVS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// MevCommitAVS is a free data retrieval call binding the contract method 0x22a3d9d6. +// +// Solidity: function mevCommitAVS() view returns(address) +func (_Validatoroptinrouter *ValidatoroptinrouterSession) MevCommitAVS() (common.Address, error) { + return _Validatoroptinrouter.Contract.MevCommitAVS(&_Validatoroptinrouter.CallOpts) +} + +// MevCommitAVS is a free data retrieval call binding the contract method 0x22a3d9d6. +// +// Solidity: function mevCommitAVS() view returns(address) +func (_Validatoroptinrouter *ValidatoroptinrouterCallerSession) MevCommitAVS() (common.Address, error) { + return _Validatoroptinrouter.Contract.MevCommitAVS(&_Validatoroptinrouter.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Validatoroptinrouter *ValidatoroptinrouterCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Validatoroptinrouter.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 (_Validatoroptinrouter *ValidatoroptinrouterSession) Owner() (common.Address, error) { + return _Validatoroptinrouter.Contract.Owner(&_Validatoroptinrouter.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Validatoroptinrouter *ValidatoroptinrouterCallerSession) Owner() (common.Address, error) { + return _Validatoroptinrouter.Contract.Owner(&_Validatoroptinrouter.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_Validatoroptinrouter *ValidatoroptinrouterCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Validatoroptinrouter.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_Validatoroptinrouter *ValidatoroptinrouterSession) PendingOwner() (common.Address, error) { + return _Validatoroptinrouter.Contract.PendingOwner(&_Validatoroptinrouter.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_Validatoroptinrouter *ValidatoroptinrouterCallerSession) PendingOwner() (common.Address, error) { + return _Validatoroptinrouter.Contract.PendingOwner(&_Validatoroptinrouter.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_Validatoroptinrouter *ValidatoroptinrouterCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _Validatoroptinrouter.contract.Call(opts, &out, "proxiableUUID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_Validatoroptinrouter *ValidatoroptinrouterSession) ProxiableUUID() ([32]byte, error) { + return _Validatoroptinrouter.Contract.ProxiableUUID(&_Validatoroptinrouter.CallOpts) +} + +// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. +// +// Solidity: function proxiableUUID() view returns(bytes32) +func (_Validatoroptinrouter *ValidatoroptinrouterCallerSession) ProxiableUUID() ([32]byte, error) { + return _Validatoroptinrouter.Contract.ProxiableUUID(&_Validatoroptinrouter.CallOpts) +} + +// ValidatorRegistryV1 is a free data retrieval call binding the contract method 0xa0c3cf38. +// +// Solidity: function validatorRegistryV1() view returns(address) +func (_Validatoroptinrouter *ValidatoroptinrouterCaller) ValidatorRegistryV1(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Validatoroptinrouter.contract.Call(opts, &out, "validatorRegistryV1") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ValidatorRegistryV1 is a free data retrieval call binding the contract method 0xa0c3cf38. +// +// Solidity: function validatorRegistryV1() view returns(address) +func (_Validatoroptinrouter *ValidatoroptinrouterSession) ValidatorRegistryV1() (common.Address, error) { + return _Validatoroptinrouter.Contract.ValidatorRegistryV1(&_Validatoroptinrouter.CallOpts) +} + +// ValidatorRegistryV1 is a free data retrieval call binding the contract method 0xa0c3cf38. +// +// Solidity: function validatorRegistryV1() view returns(address) +func (_Validatoroptinrouter *ValidatoroptinrouterCallerSession) ValidatorRegistryV1() (common.Address, error) { + return _Validatoroptinrouter.Contract.ValidatorRegistryV1(&_Validatoroptinrouter.CallOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_Validatoroptinrouter *ValidatoroptinrouterTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Validatoroptinrouter.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_Validatoroptinrouter *ValidatoroptinrouterSession) AcceptOwnership() (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.AcceptOwnership(&_Validatoroptinrouter.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_Validatoroptinrouter *ValidatoroptinrouterTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.AcceptOwnership(&_Validatoroptinrouter.TransactOpts) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. +// +// Solidity: function initialize(address _validatorRegistry, address _mevCommitAVS, address _owner) returns() +func (_Validatoroptinrouter *ValidatoroptinrouterTransactor) Initialize(opts *bind.TransactOpts, _validatorRegistry common.Address, _mevCommitAVS common.Address, _owner common.Address) (*types.Transaction, error) { + return _Validatoroptinrouter.contract.Transact(opts, "initialize", _validatorRegistry, _mevCommitAVS, _owner) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. +// +// Solidity: function initialize(address _validatorRegistry, address _mevCommitAVS, address _owner) returns() +func (_Validatoroptinrouter *ValidatoroptinrouterSession) Initialize(_validatorRegistry common.Address, _mevCommitAVS common.Address, _owner common.Address) (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.Initialize(&_Validatoroptinrouter.TransactOpts, _validatorRegistry, _mevCommitAVS, _owner) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. +// +// Solidity: function initialize(address _validatorRegistry, address _mevCommitAVS, address _owner) returns() +func (_Validatoroptinrouter *ValidatoroptinrouterTransactorSession) Initialize(_validatorRegistry common.Address, _mevCommitAVS common.Address, _owner common.Address) (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.Initialize(&_Validatoroptinrouter.TransactOpts, _validatorRegistry, _mevCommitAVS, _owner) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Validatoroptinrouter *ValidatoroptinrouterTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Validatoroptinrouter.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Validatoroptinrouter *ValidatoroptinrouterSession) RenounceOwnership() (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.RenounceOwnership(&_Validatoroptinrouter.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Validatoroptinrouter *ValidatoroptinrouterTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.RenounceOwnership(&_Validatoroptinrouter.TransactOpts) +} + +// SetMevCommitAVS is a paid mutator transaction binding the contract method 0x18df7701. +// +// Solidity: function setMevCommitAVS(address _mevCommitAVS) returns() +func (_Validatoroptinrouter *ValidatoroptinrouterTransactor) SetMevCommitAVS(opts *bind.TransactOpts, _mevCommitAVS common.Address) (*types.Transaction, error) { + return _Validatoroptinrouter.contract.Transact(opts, "setMevCommitAVS", _mevCommitAVS) +} + +// SetMevCommitAVS is a paid mutator transaction binding the contract method 0x18df7701. +// +// Solidity: function setMevCommitAVS(address _mevCommitAVS) returns() +func (_Validatoroptinrouter *ValidatoroptinrouterSession) SetMevCommitAVS(_mevCommitAVS common.Address) (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.SetMevCommitAVS(&_Validatoroptinrouter.TransactOpts, _mevCommitAVS) +} + +// SetMevCommitAVS is a paid mutator transaction binding the contract method 0x18df7701. +// +// Solidity: function setMevCommitAVS(address _mevCommitAVS) returns() +func (_Validatoroptinrouter *ValidatoroptinrouterTransactorSession) SetMevCommitAVS(_mevCommitAVS common.Address) (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.SetMevCommitAVS(&_Validatoroptinrouter.TransactOpts, _mevCommitAVS) +} + +// SetValidatorRegistryV1 is a paid mutator transaction binding the contract method 0x5605282e. +// +// Solidity: function setValidatorRegistryV1(address _validatorRegistry) returns() +func (_Validatoroptinrouter *ValidatoroptinrouterTransactor) SetValidatorRegistryV1(opts *bind.TransactOpts, _validatorRegistry common.Address) (*types.Transaction, error) { + return _Validatoroptinrouter.contract.Transact(opts, "setValidatorRegistryV1", _validatorRegistry) +} + +// SetValidatorRegistryV1 is a paid mutator transaction binding the contract method 0x5605282e. +// +// Solidity: function setValidatorRegistryV1(address _validatorRegistry) returns() +func (_Validatoroptinrouter *ValidatoroptinrouterSession) SetValidatorRegistryV1(_validatorRegistry common.Address) (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.SetValidatorRegistryV1(&_Validatoroptinrouter.TransactOpts, _validatorRegistry) +} + +// SetValidatorRegistryV1 is a paid mutator transaction binding the contract method 0x5605282e. +// +// Solidity: function setValidatorRegistryV1(address _validatorRegistry) returns() +func (_Validatoroptinrouter *ValidatoroptinrouterTransactorSession) SetValidatorRegistryV1(_validatorRegistry common.Address) (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.SetValidatorRegistryV1(&_Validatoroptinrouter.TransactOpts, _validatorRegistry) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Validatoroptinrouter *ValidatoroptinrouterTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _Validatoroptinrouter.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Validatoroptinrouter *ValidatoroptinrouterSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.TransferOwnership(&_Validatoroptinrouter.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Validatoroptinrouter *ValidatoroptinrouterTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.TransferOwnership(&_Validatoroptinrouter.TransactOpts, newOwner) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_Validatoroptinrouter *ValidatoroptinrouterTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _Validatoroptinrouter.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_Validatoroptinrouter *ValidatoroptinrouterSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.UpgradeToAndCall(&_Validatoroptinrouter.TransactOpts, newImplementation, data) +} + +// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. +// +// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() +func (_Validatoroptinrouter *ValidatoroptinrouterTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.UpgradeToAndCall(&_Validatoroptinrouter.TransactOpts, newImplementation, data) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Validatoroptinrouter *ValidatoroptinrouterTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _Validatoroptinrouter.contract.RawTransact(opts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Validatoroptinrouter *ValidatoroptinrouterSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.Fallback(&_Validatoroptinrouter.TransactOpts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_Validatoroptinrouter *ValidatoroptinrouterTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.Fallback(&_Validatoroptinrouter.TransactOpts, calldata) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Validatoroptinrouter *ValidatoroptinrouterTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Validatoroptinrouter.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 (_Validatoroptinrouter *ValidatoroptinrouterSession) Receive() (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.Receive(&_Validatoroptinrouter.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_Validatoroptinrouter *ValidatoroptinrouterTransactorSession) Receive() (*types.Transaction, error) { + return _Validatoroptinrouter.Contract.Receive(&_Validatoroptinrouter.TransactOpts) +} + +// ValidatoroptinrouterInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Validatoroptinrouter contract. +type ValidatoroptinrouterInitializedIterator struct { + Event *ValidatoroptinrouterInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatoroptinrouterInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatoroptinrouterInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatoroptinrouterInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatoroptinrouterInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatoroptinrouterInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatoroptinrouterInitialized represents a Initialized event raised by the Validatoroptinrouter contract. +type ValidatoroptinrouterInitialized struct { + Version uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Validatoroptinrouter *ValidatoroptinrouterFilterer) FilterInitialized(opts *bind.FilterOpts) (*ValidatoroptinrouterInitializedIterator, error) { + + logs, sub, err := _Validatoroptinrouter.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &ValidatoroptinrouterInitializedIterator{contract: _Validatoroptinrouter.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Validatoroptinrouter *ValidatoroptinrouterFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ValidatoroptinrouterInitialized) (event.Subscription, error) { + + logs, sub, err := _Validatoroptinrouter.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(ValidatoroptinrouterInitialized) + if err := _Validatoroptinrouter.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 0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2. +// +// Solidity: event Initialized(uint64 version) +func (_Validatoroptinrouter *ValidatoroptinrouterFilterer) ParseInitialized(log types.Log) (*ValidatoroptinrouterInitialized, error) { + event := new(ValidatoroptinrouterInitialized) + if err := _Validatoroptinrouter.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatoroptinrouterMevCommitAVSSetIterator is returned from FilterMevCommitAVSSet and is used to iterate over the raw logs and unpacked data for MevCommitAVSSet events raised by the Validatoroptinrouter contract. +type ValidatoroptinrouterMevCommitAVSSetIterator struct { + Event *ValidatoroptinrouterMevCommitAVSSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatoroptinrouterMevCommitAVSSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatoroptinrouterMevCommitAVSSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatoroptinrouterMevCommitAVSSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatoroptinrouterMevCommitAVSSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatoroptinrouterMevCommitAVSSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatoroptinrouterMevCommitAVSSet represents a MevCommitAVSSet event raised by the Validatoroptinrouter contract. +type ValidatoroptinrouterMevCommitAVSSet struct { + OldContract common.Address + NewContract common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMevCommitAVSSet is a free log retrieval operation binding the contract event 0x447ff28b7015145d149b3cd03a9f9e162a197e114c0559fcc47e6ce791f37676. +// +// Solidity: event MevCommitAVSSet(address oldContract, address newContract) +func (_Validatoroptinrouter *ValidatoroptinrouterFilterer) FilterMevCommitAVSSet(opts *bind.FilterOpts) (*ValidatoroptinrouterMevCommitAVSSetIterator, error) { + + logs, sub, err := _Validatoroptinrouter.contract.FilterLogs(opts, "MevCommitAVSSet") + if err != nil { + return nil, err + } + return &ValidatoroptinrouterMevCommitAVSSetIterator{contract: _Validatoroptinrouter.contract, event: "MevCommitAVSSet", logs: logs, sub: sub}, nil +} + +// WatchMevCommitAVSSet is a free log subscription operation binding the contract event 0x447ff28b7015145d149b3cd03a9f9e162a197e114c0559fcc47e6ce791f37676. +// +// Solidity: event MevCommitAVSSet(address oldContract, address newContract) +func (_Validatoroptinrouter *ValidatoroptinrouterFilterer) WatchMevCommitAVSSet(opts *bind.WatchOpts, sink chan<- *ValidatoroptinrouterMevCommitAVSSet) (event.Subscription, error) { + + logs, sub, err := _Validatoroptinrouter.contract.WatchLogs(opts, "MevCommitAVSSet") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ValidatoroptinrouterMevCommitAVSSet) + if err := _Validatoroptinrouter.contract.UnpackLog(event, "MevCommitAVSSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMevCommitAVSSet is a log parse operation binding the contract event 0x447ff28b7015145d149b3cd03a9f9e162a197e114c0559fcc47e6ce791f37676. +// +// Solidity: event MevCommitAVSSet(address oldContract, address newContract) +func (_Validatoroptinrouter *ValidatoroptinrouterFilterer) ParseMevCommitAVSSet(log types.Log) (*ValidatoroptinrouterMevCommitAVSSet, error) { + event := new(ValidatoroptinrouterMevCommitAVSSet) + if err := _Validatoroptinrouter.contract.UnpackLog(event, "MevCommitAVSSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatoroptinrouterOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the Validatoroptinrouter contract. +type ValidatoroptinrouterOwnershipTransferStartedIterator struct { + Event *ValidatoroptinrouterOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatoroptinrouterOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatoroptinrouterOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatoroptinrouterOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatoroptinrouterOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatoroptinrouterOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatoroptinrouterOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the Validatoroptinrouter contract. +type ValidatoroptinrouterOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_Validatoroptinrouter *ValidatoroptinrouterFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ValidatoroptinrouterOwnershipTransferStartedIterator, 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 := _Validatoroptinrouter.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &ValidatoroptinrouterOwnershipTransferStartedIterator{contract: _Validatoroptinrouter.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_Validatoroptinrouter *ValidatoroptinrouterFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *ValidatoroptinrouterOwnershipTransferStarted, 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 := _Validatoroptinrouter.contract.WatchLogs(opts, "OwnershipTransferStarted", 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(ValidatoroptinrouterOwnershipTransferStarted) + if err := _Validatoroptinrouter.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_Validatoroptinrouter *ValidatoroptinrouterFilterer) ParseOwnershipTransferStarted(log types.Log) (*ValidatoroptinrouterOwnershipTransferStarted, error) { + event := new(ValidatoroptinrouterOwnershipTransferStarted) + if err := _Validatoroptinrouter.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatoroptinrouterOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Validatoroptinrouter contract. +type ValidatoroptinrouterOwnershipTransferredIterator struct { + Event *ValidatoroptinrouterOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatoroptinrouterOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatoroptinrouterOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatoroptinrouterOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatoroptinrouterOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatoroptinrouterOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatoroptinrouterOwnershipTransferred represents a OwnershipTransferred event raised by the Validatoroptinrouter contract. +type ValidatoroptinrouterOwnershipTransferred 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 (_Validatoroptinrouter *ValidatoroptinrouterFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ValidatoroptinrouterOwnershipTransferredIterator, 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 := _Validatoroptinrouter.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &ValidatoroptinrouterOwnershipTransferredIterator{contract: _Validatoroptinrouter.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 (_Validatoroptinrouter *ValidatoroptinrouterFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ValidatoroptinrouterOwnershipTransferred, 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 := _Validatoroptinrouter.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(ValidatoroptinrouterOwnershipTransferred) + if err := _Validatoroptinrouter.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 (_Validatoroptinrouter *ValidatoroptinrouterFilterer) ParseOwnershipTransferred(log types.Log) (*ValidatoroptinrouterOwnershipTransferred, error) { + event := new(ValidatoroptinrouterOwnershipTransferred) + if err := _Validatoroptinrouter.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatoroptinrouterUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the Validatoroptinrouter contract. +type ValidatoroptinrouterUpgradedIterator struct { + Event *ValidatoroptinrouterUpgraded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatoroptinrouterUpgradedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatoroptinrouterUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatoroptinrouterUpgraded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatoroptinrouterUpgradedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatoroptinrouterUpgradedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatoroptinrouterUpgraded represents a Upgraded event raised by the Validatoroptinrouter contract. +type ValidatoroptinrouterUpgraded struct { + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_Validatoroptinrouter *ValidatoroptinrouterFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ValidatoroptinrouterUpgradedIterator, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _Validatoroptinrouter.contract.FilterLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return &ValidatoroptinrouterUpgradedIterator{contract: _Validatoroptinrouter.contract, event: "Upgraded", logs: logs, sub: sub}, nil +} + +// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_Validatoroptinrouter *ValidatoroptinrouterFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ValidatoroptinrouterUpgraded, implementation []common.Address) (event.Subscription, error) { + + var implementationRule []interface{} + for _, implementationItem := range implementation { + implementationRule = append(implementationRule, implementationItem) + } + + logs, sub, err := _Validatoroptinrouter.contract.WatchLogs(opts, "Upgraded", implementationRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ValidatoroptinrouterUpgraded) + if err := _Validatoroptinrouter.contract.UnpackLog(event, "Upgraded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. +// +// Solidity: event Upgraded(address indexed implementation) +func (_Validatoroptinrouter *ValidatoroptinrouterFilterer) ParseUpgraded(log types.Log) (*ValidatoroptinrouterUpgraded, error) { + event := new(ValidatoroptinrouterUpgraded) + if err := _Validatoroptinrouter.contract.UnpackLog(event, "Upgraded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ValidatoroptinrouterValidatorRegistryV1SetIterator is returned from FilterValidatorRegistryV1Set and is used to iterate over the raw logs and unpacked data for ValidatorRegistryV1Set events raised by the Validatoroptinrouter contract. +type ValidatoroptinrouterValidatorRegistryV1SetIterator struct { + Event *ValidatoroptinrouterValidatorRegistryV1Set // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ValidatoroptinrouterValidatorRegistryV1SetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ValidatoroptinrouterValidatorRegistryV1Set) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ValidatoroptinrouterValidatorRegistryV1Set) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ValidatoroptinrouterValidatorRegistryV1SetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ValidatoroptinrouterValidatorRegistryV1SetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ValidatoroptinrouterValidatorRegistryV1Set represents a ValidatorRegistryV1Set event raised by the Validatoroptinrouter contract. +type ValidatoroptinrouterValidatorRegistryV1Set struct { + OldContract common.Address + NewContract common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterValidatorRegistryV1Set is a free log retrieval operation binding the contract event 0x797d2b493f5b527eeb691c6b2fc743152c6df95318aecce8e12918fde52c5fe2. +// +// Solidity: event ValidatorRegistryV1Set(address oldContract, address newContract) +func (_Validatoroptinrouter *ValidatoroptinrouterFilterer) FilterValidatorRegistryV1Set(opts *bind.FilterOpts) (*ValidatoroptinrouterValidatorRegistryV1SetIterator, error) { + + logs, sub, err := _Validatoroptinrouter.contract.FilterLogs(opts, "ValidatorRegistryV1Set") + if err != nil { + return nil, err + } + return &ValidatoroptinrouterValidatorRegistryV1SetIterator{contract: _Validatoroptinrouter.contract, event: "ValidatorRegistryV1Set", logs: logs, sub: sub}, nil +} + +// WatchValidatorRegistryV1Set is a free log subscription operation binding the contract event 0x797d2b493f5b527eeb691c6b2fc743152c6df95318aecce8e12918fde52c5fe2. +// +// Solidity: event ValidatorRegistryV1Set(address oldContract, address newContract) +func (_Validatoroptinrouter *ValidatoroptinrouterFilterer) WatchValidatorRegistryV1Set(opts *bind.WatchOpts, sink chan<- *ValidatoroptinrouterValidatorRegistryV1Set) (event.Subscription, error) { + + logs, sub, err := _Validatoroptinrouter.contract.WatchLogs(opts, "ValidatorRegistryV1Set") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ValidatoroptinrouterValidatorRegistryV1Set) + if err := _Validatoroptinrouter.contract.UnpackLog(event, "ValidatorRegistryV1Set", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseValidatorRegistryV1Set is a log parse operation binding the contract event 0x797d2b493f5b527eeb691c6b2fc743152c6df95318aecce8e12918fde52c5fe2. +// +// Solidity: event ValidatorRegistryV1Set(address oldContract, address newContract) +func (_Validatoroptinrouter *ValidatoroptinrouterFilterer) ParseValidatorRegistryV1Set(log types.Log) (*ValidatoroptinrouterValidatorRegistryV1Set, error) { + event := new(ValidatoroptinrouterValidatorRegistryV1Set) + if err := _Validatoroptinrouter.contract.UnpackLog(event, "ValidatorRegistryV1Set", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contracts-abi/script.sh b/contracts-abi/script.sh index eae903171..b2269361f 100755 --- a/contracts-abi/script.sh +++ b/contracts-abi/script.sh @@ -40,6 +40,8 @@ extract_and_save_abi "$BASE_DIR/out/BlockTracker.sol/BlockTracker.json" "$ABI_DI extract_and_save_abi "$BASE_DIR/out/MevCommitAVS.sol/MevCommitAVS.json" "$ABI_DIR/MevCommitAVS.abi" +extract_and_save_abi "$BASE_DIR/out/ValidatorOptInRouter.sol/ValidatorOptInRouter.json" "$ABI_DIR/ValidatorOptInRouter.abi" + echo "ABI files extracted successfully." @@ -87,5 +89,7 @@ generate_go_code "$ABI_DIR/BlockTracker.abi" "BlockTracker" "blocktracker" generate_go_code "$ABI_DIR/MevCommitAVS.abi" "MevCommitAVS" "mevcommitavs" +generate_go_code "$ABI_DIR/ValidatorOptInRouter.abi" "ValidatorOptInRouter" "validatoroptinrouter" + echo "Go code generated successfully in separate folders." diff --git a/contracts/scripts/validator-registry/DeployValidatorOptInRouter.s.sol b/contracts/scripts/validator-registry/DeployValidatorOptInRouter.s.sol new file mode 100644 index 000000000..67a012912 --- /dev/null +++ b/contracts/scripts/validator-registry/DeployValidatorOptInRouter.s.sol @@ -0,0 +1,52 @@ +// SPDX-License-Identifier: BSL 1.1 + +// solhint-disable no-console +// solhint-disable one-contract-per-file + +pragma solidity 0.8.20; + +import {Script} from "forge-std/Script.sol"; +import {console} from "forge-std/console.sol"; +import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import {ValidatorOptInRouter} from "../../contracts/validator-registry/ValidatorOptInRouter.sol"; + +contract BaseDeploy is Script { + function deployValidatorOptInRouter( + address registryV1, + address mevCommitAVS, + address owner + ) public returns (address) { + console.log("Deploying ValidatorOptInRouter on chain:", block.chainid); + address proxy = Upgrades.deployUUPSProxy( + "ValidatorOptInRouter.sol", + abi.encodeCall( + ValidatorOptInRouter.initialize, + (registryV1, mevCommitAVS, owner) + ) + ); + console.log("ValidatorOptInRouter UUPS proxy deployed to:", address(proxy)); + ValidatorOptInRouter router = ValidatorOptInRouter(payable(proxy)); + console.log("ValidatorOptInRouter owner:", router.owner()); + return proxy; + } +} + +contract DeployHolesky is BaseDeploy { + address constant public VAL_REGISTRY_V1 = 0x5d4fC7B5Aeea4CF4F0Ca6Be09A2F5AaDAd2F2803; + address constant public MEV_COMMIT_AVS = 0xcAe2d8C15C603683C862F57850ef8Ae550280432; + + // This is the most important field. On mainnet it'll be the primev multisig. + address constant public OWNER = 0x4535bd6fF24860b5fd2889857651a85fb3d3C6b1; + + function run() external { + require(block.chainid == 17000, "must deploy on Holesky"); + + vm.startBroadcast(); + deployValidatorOptInRouter( + VAL_REGISTRY_V1, + MEV_COMMIT_AVS, + OWNER + ); + vm.stopBroadcast(); + } +} diff --git a/contracts/scripts/validator-registry/DeployValidatorRegistryV1.s.sol b/contracts/scripts/validator-registry/DeployValidatorRegistryV1.s.sol index f9f54519a..6a626909e 100644 --- a/contracts/scripts/validator-registry/DeployValidatorRegistryV1.s.sol +++ b/contracts/scripts/validator-registry/DeployValidatorRegistryV1.s.sol @@ -41,11 +41,14 @@ contract DeployHolesky is BaseDeploy { address constant public SLASH_RECEIVER = 0x4535bd6fF24860b5fd2889857651a85fb3d3C6b1; uint256 constant public UNSTAKE_PERIOD_BLOCKS = 32 * 3; // 2 epoch finalization time + settlement buffer + // This is the most important field. On mainnet it'll be the primev multisig. + address constant public OWNER = 0x4535bd6fF24860b5fd2889857651a85fb3d3C6b1; + function run() external { require(block.chainid == 17000, "must deploy on Holesky"); vm.startBroadcast(); deployValidatorRegistry(MIN_STAKE, SLASH_AMOUNT, - SLASH_ORACLE, SLASH_RECEIVER, UNSTAKE_PERIOD_BLOCKS, msg.sender); + SLASH_ORACLE, SLASH_RECEIVER, UNSTAKE_PERIOD_BLOCKS, OWNER); vm.stopBroadcast(); } } diff --git a/contracts/scripts/validator-registry/avs/DeployAVS.s.sol b/contracts/scripts/validator-registry/avs/DeployAVS.s.sol new file mode 100644 index 000000000..5e3bb4485 --- /dev/null +++ b/contracts/scripts/validator-registry/avs/DeployAVS.s.sol @@ -0,0 +1,115 @@ +// SPDX-License-Identifier: BSL 1.1 + +// solhint-disable no-console +// solhint-disable one-contract-per-file + +pragma solidity 0.8.20; + +import {Script} from "forge-std/Script.sol"; +import {console} from "forge-std/console.sol"; +import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import {MevCommitAVS} from "../../../contracts/validator-registry/avs/MevCommitAVS.sol"; +import {IDelegationManager} from "eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol"; +import {IEigenPodManager} from "eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol"; +import {IStrategyManager} from "eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol"; +import {IAVSDirectory} from "eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol"; +import {EigenHoleskyReleaseConsts} from "./ReleaseAddrConsts.sol"; + +contract BaseDeploy is Script { + function deployMevCommitAVS( + address owner, + IDelegationManager delegationManager, + IEigenPodManager eigenPodManager, + IStrategyManager strategyManager, + IAVSDirectory avsDirectory, + address[] memory restakeableStrategies, + address freezeOracle, + uint256 unfreezeFee, + address unfreezeReceiver, + uint256 unfreezePeriodBlocks, + uint256 operatorDeregPeriodBlocks, + uint256 validatorDeregPeriodBlocks, + uint256 lstRestakerDeregPeriodBlocks + ) public returns (address) { + console.log("Deploying MevCommitAVS on chain:", block.chainid); + string memory metadataUrl = "https://raw.githubusercontent.com/primev/mev-commit/main/static/avs-metadata.json"; + address proxy = Upgrades.deployUUPSProxy( + "MevCommitAVS.sol", + abi.encodeCall( + MevCommitAVS.initialize, + ( + owner, + delegationManager, + eigenPodManager, + strategyManager, + avsDirectory, + restakeableStrategies, + freezeOracle, + unfreezeFee, + unfreezeReceiver, + unfreezePeriodBlocks, + operatorDeregPeriodBlocks, + validatorDeregPeriodBlocks, + lstRestakerDeregPeriodBlocks, + metadataUrl + ) + ) + ); + console.log("MevCommitAVS UUPS proxy deployed to:", address(proxy)); + MevCommitAVS mevCommitAVS = MevCommitAVS(payable(proxy)); + console.log("MevCommitAVS owner:", mevCommitAVS.owner()); + return proxy; + } +} + +contract DeployHolesky is BaseDeploy { + // This is the most important field. On mainnet it'll be the primev multisig. + address constant public OWNER = 0x4535bd6fF24860b5fd2889857651a85fb3d3C6b1; + + IDelegationManager constant public DELEGATION_MANAGER = IDelegationManager(EigenHoleskyReleaseConsts.DELEGATION_MANAGER); + IEigenPodManager constant public EIGENPOD_MANAGER = IEigenPodManager(EigenHoleskyReleaseConsts.EIGENPOD_MANAGER); + IStrategyManager constant public STRATEGY_MANAGER = IStrategyManager(EigenHoleskyReleaseConsts.STRATEGY_MANAGER); + IAVSDirectory constant public AVS_DIRECTORY = IAVSDirectory(EigenHoleskyReleaseConsts.AVS_DIRECTORY); + address constant public FREEZE_ORACLE = 0x4535bd6fF24860b5fd2889857651a85fb3d3C6b1; // Temporary freeze oracle + uint256 constant public UNFREEZE_FEE = 0.1 ether; + address constant public UNFREEZE_RECEIVER = 0x4535bd6fF24860b5fd2889857651a85fb3d3C6b1; // Temporary unfreezeReceiver + uint256 constant public UNFREEZE_PERIOD_BLOCKS = 12000; // ~ 1 day + uint256 constant public OPERATOR_DEREG_PERIOD_BLOCKS = 12000; // ~ 1 day + uint256 constant public VALIDATOR_DEREG_PERIOD_BLOCKS = 32 * 3; // 2 epoch finalization time + settlement buffer + uint256 constant public LST_RESTARKER_DEREG_PERIOD_BLOCKS = 12000; // ~ 1 day + + function run() external { + require(block.chainid == 17000, "must deploy on Holesky"); + + address[] memory restakeableStrategies = new address[](11); + restakeableStrategies[0] = EigenHoleskyReleaseConsts.STRATEGY_BASE_STETH; + restakeableStrategies[1] = EigenHoleskyReleaseConsts.STRATEGY_BASE_RETH; + restakeableStrategies[2] = EigenHoleskyReleaseConsts.STRATEGY_BASE_WETH; + restakeableStrategies[3] = EigenHoleskyReleaseConsts.STRATEGY_BASE_LSETH; + restakeableStrategies[4] = EigenHoleskyReleaseConsts.STRATEGY_BASE_SFRXETH; + restakeableStrategies[5] = EigenHoleskyReleaseConsts.STRATEGY_BASE_ETHX; + restakeableStrategies[6] = EigenHoleskyReleaseConsts.STRATEGY_BASE_OSETH; + restakeableStrategies[7] = EigenHoleskyReleaseConsts.STRATEGY_BASE_CBETH; + restakeableStrategies[8] = EigenHoleskyReleaseConsts.STRATEGY_BASE_METH; + restakeableStrategies[9] = EigenHoleskyReleaseConsts.STRATEGY_BASE_ANKRETH; + restakeableStrategies[10] = EigenHoleskyReleaseConsts.BEACON_CHAIN_ETH; + + vm.startBroadcast(); + deployMevCommitAVS( + OWNER, + DELEGATION_MANAGER, + EIGENPOD_MANAGER, + STRATEGY_MANAGER, + AVS_DIRECTORY, + restakeableStrategies, + FREEZE_ORACLE, + UNFREEZE_FEE, + UNFREEZE_RECEIVER, + UNFREEZE_PERIOD_BLOCKS, + OPERATOR_DEREG_PERIOD_BLOCKS, + VALIDATOR_DEREG_PERIOD_BLOCKS, + LST_RESTARKER_DEREG_PERIOD_BLOCKS + ); + vm.stopBroadcast(); + } +} diff --git a/contracts/scripts/validator-registry/avs/ReleaseAddrConsts.sol b/contracts/scripts/validator-registry/avs/ReleaseAddrConsts.sol index 9d1207de9..5befe7b69 100644 --- a/contracts/scripts/validator-registry/avs/ReleaseAddrConsts.sol +++ b/contracts/scripts/validator-registry/avs/ReleaseAddrConsts.sol @@ -5,9 +5,8 @@ pragma solidity 0.8.20; -// TODO: Confirm every addr here with the markdown - -/// @notice Constants from https://github.com/Layr-Labs/eigenlayer-contracts?tab=readme-ov-file#deployments +/// @notice Constants from https://github.com/Layr-Labs/eigenlayer-contracts?tab=readme-ov-file#deployments, +/// @notice Last updated 07-26-2024 library EigenMainnetReleaseConsts { address internal constant DELEGATION_MANAGER = 0x39053D51B77DC0d36036Fc1fCc8Cb819df8Ef37A; @@ -15,6 +14,7 @@ library EigenMainnetReleaseConsts { address internal constant EIGENPOD_MANAGER = 0x91E677b07F7AF907ec9a428aafA9fc14a0d3A338; address internal constant AVS_DIRECTORY = 0x135DDa560e946695d6f155dACaFC6f1F25C1F5AF; address internal constant SLASHER = 0xD92145c07f8Ed1D392c1B88017934E301CC1c3Cd; + address internal constant REWARDS_COORDINATOR = 0x7750d328b314EfFa365A0402CcfD489B80B0adda; address internal constant STRATEGY_BASE_CBETH = 0x54945180dB7943c0ed0FEE7EdaB2Bd24620256bc; address internal constant STRATEGY_BASE_STETH = 0x93c4b944D05dfe6df7645A86cd2206016c51564D; @@ -32,6 +32,7 @@ library EigenMainnetReleaseConsts { } /// @notice Constants from https://github.com/Layr-Labs/eigenlayer-contracts?tab=readme-ov-file#current-testnet-deployment +/// @notice Last updated 07-26-2024 library EigenHoleskyReleaseConsts { address internal constant DELEGATION_MANAGER = 0xA44151489861Fe9e3055d95adC98FbD462B948e7; @@ -41,17 +42,15 @@ library EigenHoleskyReleaseConsts { address internal constant SLASHER = 0xcAe751b75833ef09627549868A04E32679386e7C; address internal constant REWARDS_COORDINATOR = 0xAcc1fb458a1317E886dB376Fc8141540537E68fE; - address internal constant STRATEGY_BASE_CBETH = 0x70EB4D3c164a6B4A5f908D4FBb5a9cAfFb66bAB6; address internal constant STRATEGY_BASE_STETH = 0x7D704507b76571a51d9caE8AdDAbBFd0ba0e63d3; address internal constant STRATEGY_BASE_RETH = 0x3A8fBdf9e77DFc25d09741f51d3E181b25d0c4E0; + address internal constant STRATEGY_BASE_WETH = 0x80528D6e9A2BAbFc766965E0E26d5aB08D9CFaF9; + address internal constant STRATEGY_BASE_LSETH = 0x05037A81BD7B4C9E0F7B430f1F2A22c31a2FD943; + address internal constant STRATEGY_BASE_SFRXETH = 0x9281ff96637710Cd9A5CAcce9c6FAD8C9F54631c; address internal constant STRATEGY_BASE_ETHX = 0x31B6F59e1627cEfC9fA174aD03859fC337666af7; - address internal constant STRATEGY_BASE_ANKRETH = 0x7673a47463F80c6a3553Db9E54c8cDcd5313d0ac; - address internal constant STRATEGY_BASE_OETH = 0x80528D6e9A2BAbFc766965E0E26d5aB08D9CFaF9; address internal constant STRATEGY_BASE_OSETH = 0x46281E3B7fDcACdBa44CADf069a94a588Fd4C6Ef; - address internal constant STRATEGY_BASE_SWETH = 0x9281ff96637710Cd9A5CAcce9c6FAD8C9F54631c; - address internal constant STRATEGY_BASE_WBETH = 0x80528D6e9A2BAbFc766965E0E26d5aB08D9CFaF9; - address internal constant STRATEGY_BASE_SFRXETH = 0x9281ff96637710Cd9A5CAcce9c6FAD8C9F54631c; - address internal constant STRATEGY_BASE_LSETH = 0x05037A81BD7B4C9E0F7B430f1F2A22c31a2FD943; - address internal constant STRATEGY_BASE_METH = 0x05037A81BD7B4C9E0F7B430f1F2A22c31a2FD943; + address internal constant STRATEGY_BASE_CBETH = 0x70EB4D3c164a6B4A5f908D4FBb5a9cAfFb66bAB6; + address internal constant STRATEGY_BASE_METH = 0xaccc5A86732BE85b5012e8614AF237801636F8e5; + address internal constant STRATEGY_BASE_ANKRETH = 0x7673a47463F80c6a3553Db9E54c8cDcd5313d0ac; address internal constant BEACON_CHAIN_ETH = 0xbeaC0eeEeeeeEEeEeEEEEeeEEeEeeeEeeEEBEaC0; } diff --git a/static/primev-logo.png b/static/primev-logo.png index a1c4ebaf5..7b8c98860 100644 Binary files a/static/primev-logo.png and b/static/primev-logo.png differ