diff --git a/contracts/bindings/create3.go b/contracts/bindings/create3.go new file mode 100644 index 00000000..fb0b2062 --- /dev/null +++ b/contracts/bindings/create3.go @@ -0,0 +1,255 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +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 +) + +// Create3MetaData contains all meta data concerning the Create3 contract. +var Create3MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"deploy\",\"inputs\":[{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"creationCode\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"deployed\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"getDeployed\",\"inputs\":[{\"name\":\"deployer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"deployed\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"}]", + Bin: "0x6080806040523461001657610576908161001c8239f35b600080fdfe60806040908082526004918236101561001757600080fd5b600091823560e01c90816350f1c4641461027d575063cdcb760a1461003b57600080fd5b807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610279576024359067ffffffffffffffff82116102755736602383011215610275578184013593610090856103ba565b9361009d83519586610379565b8585526020958686019436602483830101116102755781839260248a930188378701015282513360601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016878201908152833560148201529061012c81603484015b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610379565b51902093846101396103f4565b888151910184f59073ffffffffffffffffffffffffffffffffffffffff9586831615610219579183929161016d849361042d565b98519134905af1903d15610213573d90610186826103ba565b9161019386519384610379565b8252873d92013e5b80610209575b156101ae57505191168152f35b8460649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601560248201527f494e495449414c495a4154494f4e5f4641494c454400000000000000000000006044820152fd5b50833b15156101a1565b5061019b565b6064858a8851917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601160248201527f4445504c4f594d454e545f4641494c45440000000000000000000000000000006044820152fd5b8280fd5b5080fd5b8284863461027957827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027957359273ffffffffffffffffffffffffffffffffffffffff91828516850361032b575060609390931b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020848101918252602435603486015293610323919061031b8160548101610100565b51902061042d565b915191168152f35b80fd5b6040810190811067ffffffffffffffff82111761034a57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761034a57604052565b67ffffffffffffffff811161034a57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b604051906104018261032e565b601082527f67363d3d37363d34f03d5260086018f3000000000000000000000000000000006020830152565b6104356103f4565b602081519101206040519060208201927fff0000000000000000000000000000000000000000000000000000000000000084523060601b602184015260358301526055820152605581526080810181811067ffffffffffffffff82111761034a577f010000000000000000000000000000000000000000000000000000000000000060b673ffffffffffffffffffffffffffffffffffffffff948360405284519020937fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060a08201957fd694000000000000000000000000000000000000000000000000000000000000875260601b1660a28201520152601781526105398161032e565b519020169056fea2646970667358221220f5e52e339acedd2e2ccec7e05b021f47bf9ff9fb5d28f04bd5f8245432560a9064736f6c63430008170033", +} + +// Create3ABI is the input ABI used to generate the binding from. +// Deprecated: Use Create3MetaData.ABI instead. +var Create3ABI = Create3MetaData.ABI + +// Create3Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use Create3MetaData.Bin instead. +var Create3Bin = Create3MetaData.Bin + +// DeployCreate3 deploys a new Ethereum contract, binding an instance of Create3 to it. +func DeployCreate3(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Create3, error) { + parsed, err := Create3MetaData.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(Create3Bin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Create3{Create3Caller: Create3Caller{contract: contract}, Create3Transactor: Create3Transactor{contract: contract}, Create3Filterer: Create3Filterer{contract: contract}}, nil +} + +// Create3 is an auto generated Go binding around an Ethereum contract. +type Create3 struct { + Create3Caller // Read-only binding to the contract + Create3Transactor // Write-only binding to the contract + Create3Filterer // Log filterer for contract events +} + +// Create3Caller is an auto generated read-only Go binding around an Ethereum contract. +type Create3Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// Create3Transactor is an auto generated write-only Go binding around an Ethereum contract. +type Create3Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// Create3Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type Create3Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// Create3Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type Create3Session struct { + Contract *Create3 // 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 +} + +// Create3CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type Create3CallerSession struct { + Contract *Create3Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// Create3TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type Create3TransactorSession struct { + Contract *Create3Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// Create3Raw is an auto generated low-level Go binding around an Ethereum contract. +type Create3Raw struct { + Contract *Create3 // Generic contract binding to access the raw methods on +} + +// Create3CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type Create3CallerRaw struct { + Contract *Create3Caller // Generic read-only contract binding to access the raw methods on +} + +// Create3TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type Create3TransactorRaw struct { + Contract *Create3Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewCreate3 creates a new instance of Create3, bound to a specific deployed contract. +func NewCreate3(address common.Address, backend bind.ContractBackend) (*Create3, error) { + contract, err := bindCreate3(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Create3{Create3Caller: Create3Caller{contract: contract}, Create3Transactor: Create3Transactor{contract: contract}, Create3Filterer: Create3Filterer{contract: contract}}, nil +} + +// NewCreate3Caller creates a new read-only instance of Create3, bound to a specific deployed contract. +func NewCreate3Caller(address common.Address, caller bind.ContractCaller) (*Create3Caller, error) { + contract, err := bindCreate3(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &Create3Caller{contract: contract}, nil +} + +// NewCreate3Transactor creates a new write-only instance of Create3, bound to a specific deployed contract. +func NewCreate3Transactor(address common.Address, transactor bind.ContractTransactor) (*Create3Transactor, error) { + contract, err := bindCreate3(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &Create3Transactor{contract: contract}, nil +} + +// NewCreate3Filterer creates a new log filterer instance of Create3, bound to a specific deployed contract. +func NewCreate3Filterer(address common.Address, filterer bind.ContractFilterer) (*Create3Filterer, error) { + contract, err := bindCreate3(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &Create3Filterer{contract: contract}, nil +} + +// bindCreate3 binds a generic wrapper to an already deployed contract. +func bindCreate3(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := Create3MetaData.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 (_Create3 *Create3Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Create3.Contract.Create3Caller.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 (_Create3 *Create3Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Create3.Contract.Create3Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Create3 *Create3Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Create3.Contract.Create3Transactor.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 (_Create3 *Create3CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Create3.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 (_Create3 *Create3TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Create3.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Create3 *Create3TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Create3.Contract.contract.Transact(opts, method, params...) +} + +// GetDeployed is a free data retrieval call binding the contract method 0x50f1c464. +// +// Solidity: function getDeployed(address deployer, bytes32 salt) view returns(address deployed) +func (_Create3 *Create3Caller) GetDeployed(opts *bind.CallOpts, deployer common.Address, salt [32]byte) (common.Address, error) { + var out []interface{} + err := _Create3.contract.Call(opts, &out, "getDeployed", deployer, salt) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetDeployed is a free data retrieval call binding the contract method 0x50f1c464. +// +// Solidity: function getDeployed(address deployer, bytes32 salt) view returns(address deployed) +func (_Create3 *Create3Session) GetDeployed(deployer common.Address, salt [32]byte) (common.Address, error) { + return _Create3.Contract.GetDeployed(&_Create3.CallOpts, deployer, salt) +} + +// GetDeployed is a free data retrieval call binding the contract method 0x50f1c464. +// +// Solidity: function getDeployed(address deployer, bytes32 salt) view returns(address deployed) +func (_Create3 *Create3CallerSession) GetDeployed(deployer common.Address, salt [32]byte) (common.Address, error) { + return _Create3.Contract.GetDeployed(&_Create3.CallOpts, deployer, salt) +} + +// Deploy is a paid mutator transaction binding the contract method 0xcdcb760a. +// +// Solidity: function deploy(bytes32 salt, bytes creationCode) payable returns(address deployed) +func (_Create3 *Create3Transactor) Deploy(opts *bind.TransactOpts, salt [32]byte, creationCode []byte) (*types.Transaction, error) { + return _Create3.contract.Transact(opts, "deploy", salt, creationCode) +} + +// Deploy is a paid mutator transaction binding the contract method 0xcdcb760a. +// +// Solidity: function deploy(bytes32 salt, bytes creationCode) payable returns(address deployed) +func (_Create3 *Create3Session) Deploy(salt [32]byte, creationCode []byte) (*types.Transaction, error) { + return _Create3.Contract.Deploy(&_Create3.TransactOpts, salt, creationCode) +} + +// Deploy is a paid mutator transaction binding the contract method 0xcdcb760a. +// +// Solidity: function deploy(bytes32 salt, bytes creationCode) payable returns(address deployed) +func (_Create3 *Create3TransactorSession) Deploy(salt [32]byte, creationCode []byte) (*types.Transaction, error) { + return _Create3.Contract.Deploy(&_Create3.TransactOpts, salt, creationCode) +} diff --git a/contracts/bindings/create3_more.go b/contracts/bindings/create3_more.go new file mode 100644 index 00000000..dab1d8f0 --- /dev/null +++ b/contracts/bindings/create3_more.go @@ -0,0 +1,14 @@ +package bindings + +import ( + _ "embed" +) + +const ( + Create3DeployedBytecode = "0x60806040908082526004918236101561001757600080fd5b600091823560e01c90816350f1c4641461027d575063cdcb760a1461003b57600080fd5b807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610279576024359067ffffffffffffffff82116102755736602383011215610275578184013593610090856103ba565b9361009d83519586610379565b8585526020958686019436602483830101116102755781839260248a930188378701015282513360601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016878201908152833560148201529061012c81603484015b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610379565b51902093846101396103f4565b888151910184f59073ffffffffffffffffffffffffffffffffffffffff9586831615610219579183929161016d849361042d565b98519134905af1903d15610213573d90610186826103ba565b9161019386519384610379565b8252873d92013e5b80610209575b156101ae57505191168152f35b8460649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601560248201527f494e495449414c495a4154494f4e5f4641494c454400000000000000000000006044820152fd5b50833b15156101a1565b5061019b565b6064858a8851917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601160248201527f4445504c4f594d454e545f4641494c45440000000000000000000000000000006044820152fd5b8280fd5b5080fd5b8284863461027957827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027957359273ffffffffffffffffffffffffffffffffffffffff91828516850361032b575060609390931b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020848101918252602435603486015293610323919061031b8160548101610100565b51902061042d565b915191168152f35b80fd5b6040810190811067ffffffffffffffff82111761034a57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761034a57604052565b67ffffffffffffffff811161034a57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b604051906104018261032e565b601082527f67363d3d37363d34f03d5260086018f3000000000000000000000000000000006020830152565b6104356103f4565b602081519101206040519060208201927fff0000000000000000000000000000000000000000000000000000000000000084523060601b602184015260358301526055820152605581526080810181811067ffffffffffffffff82111761034a577f010000000000000000000000000000000000000000000000000000000000000060b673ffffffffffffffffffffffffffffffffffffffff948360405284519020937fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060a08201957fd694000000000000000000000000000000000000000000000000000000000000875260601b1660a28201520152601781526105398161032e565b519020169056fea26469706673582212203c3f094c14080645260151fc0973813e7e3e388692d8194b173368b56b8ac64864736f6c63430008170033" +) + +//go:embed create3_storage_layout.json +var create3StorageLayoutJSON []byte + +var Create3StorageLayout = mustGetStorageLayout(create3StorageLayoutJSON) diff --git a/contracts/bindings/create3_storage_layout.json b/contracts/bindings/create3_storage_layout.json new file mode 100644 index 00000000..127dec9f --- /dev/null +++ b/contracts/bindings/create3_storage_layout.json @@ -0,0 +1,4 @@ +{ + "storage": [], + "types": {} +} diff --git a/contracts/bindings/iptokenstaking.go b/contracts/bindings/iptokenstaking.go new file mode 100644 index 00000000..f44bc403 --- /dev/null +++ b/contracts/bindings/iptokenstaking.go @@ -0,0 +1,3437 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +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 +) + +// IIPTokenStakingInitializerArgs is an auto generated low-level Go binding around an user-defined struct. +type IIPTokenStakingInitializerArgs struct { + Owner common.Address + MinStakeAmount *big.Int + MinUnstakeAmount *big.Int + MinCommissionRate *big.Int + Fee *big.Int +} + +// IPTokenStakingMetaData contains all meta data concerning the IPTokenStaking contract. +var IPTokenStakingMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"stakingRounding\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"defaultMinFee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"AA\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BB\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"DEFAULT_MIN_FEE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_MONIKER_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PP\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"STAKE_ROUNDING\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createValidator\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"moniker\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"commissionRate\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"maxCommissionRate\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"maxCommissionChangeRate\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"supportsUnlocked\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"fee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"args\",\"type\":\"tuple\",\"internalType\":\"structIIPTokenStaking.InitializerArgs\",\"components\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"minStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minUnstakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minCommissionRate\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"fee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"minCommissionRate\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minStakeAmount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minUnstakeAmount\",\"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\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"redelegate\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpSrcPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpDstPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"redelegateOnBehalf\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpSrcPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpDstPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"roundedStakeAmount\",\"inputs\":[{\"name\":\"rawAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"remainder\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setFee\",\"inputs\":[{\"name\":\"newFee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMinCommissionRate\",\"inputs\":[{\"name\":\"newValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMinStakeAmount\",\"inputs\":[{\"name\":\"newMinStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMinUnstakeAmount\",\"inputs\":[{\"name\":\"newMinUnstakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperator\",\"inputs\":[{\"name\":\"uncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"setRewardsAddress\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"newRewardsAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"setWithdrawalAddress\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"newWithdrawalAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"stake\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"stakingPeriod\",\"type\":\"uint8\",\"internalType\":\"enumIIPTokenStaking.StakingPeriod\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"delegationId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"stakeOnBehalf\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"stakingPeriod\",\"type\":\"uint8\",\"internalType\":\"enumIIPTokenStaking.StakingPeriod\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"delegationId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unjail\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"unjailOnBehalf\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"unsetOperator\",\"inputs\":[{\"name\":\"uncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unstake\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"unstakeOnBehalf\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"updateValidatorCommission\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"commissionRate\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"CreateValidator\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"moniker\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"commissionRate\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"maxCommissionRate\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"maxCommissionChangeRate\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"supportsUnlocked\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"operatorAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"stakingPeriod\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FeeSet\",\"inputs\":[{\"name\":\"newFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MinCommissionRateChanged\",\"inputs\":[{\"name\":\"minCommissionRate\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MinStakeAmountSet\",\"inputs\":[{\"name\":\"minStakeAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MinUnstakeAmountSet\",\"inputs\":[{\"name\":\"minUnstakeAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"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\":\"Redelegate\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpSrcPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpDstPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetOperator\",\"inputs\":[{\"name\":\"uncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetRewardAddress\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"executionAddress\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetWithdrawalAddress\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"executionAddress\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unjail\",\"inputs\":[{\"name\":\"unjailer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UnsetOperator\",\"inputs\":[{\"name\":\"uncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdateValidatorCommssion\",\"inputs\":[{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"commissionRate\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"delegatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"delegationId\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"operatorAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"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\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]}]", + Bin: "0x60c034620001f75762002a19906001600160401b0390601f38849003908101601f191682019083821183831017620001fc5780839160409687948552833981010312620001f75760208151910151908015620001a557608052633b9aca008110620001515760a0527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82851c1662000140578080831603620000fb575b835161280690816200021382396080518181816106040152818161075701528181610bb501528181611546015281816119a901528181611fbe015281816122ff0152612556015260a051818181610a1501526122190152f35b6001600160401b0319909116811790915581519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080620000a2565b835163f92ee8a960e01b8152600490fd5b825162461bcd60e51b815260206004820152602760248201527f4950546f6b656e5374616b696e673a20496e76616c69642064656661756c74206044820152666d696e2066656560c81b6064820152608490fd5b835162461bcd60e51b815260206004820152602560248201527f4950546f6b656e5374616b696e673a205a65726f207374616b696e6720726f756044820152646e64696e6760d81b6064820152608490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c8063014e81781461123d5780631487153e14611220578063396e1e471461120457806339ec4df9146111e55780633dd9fb9a146111a2578063561edf7e1461110d5780635727dc5c146110f157806369fe0e2d146110cc5780636ea3a228146110a7578063715018a614610fe0578063787f82c814610f4b57806379ba509714610ec157806386eb5e4814610e775780638740597a14610acf5780638da5cb5b14610a7b5780638ed65fbc14610a3857806394fd0fe0146109fd57806398d730a21461095f578063997da8d4146109445780639d04b121146108985780639d9d293f14610854578063a0284f16146107f2578063ab8870f6146107cd578063b2bc29ef1461077a578063bda16b151461073f578063c582db4414610640578063d2e1f5b8146105e7578063ddca3f43146105ca578063e30c397814610576578063eb4af04514610551578063ec21dac214610514578063eeeac01e146104d9578063f1887684146104ba578063f2fde38b146103e85763fce5dc8c146101a257600080fd5b346103e45760a06003193601126103e4577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82851c16159167ffffffffffffffff8116801590816103dc575b60011490816103d2575b1590816103c9575b506103a1578260017fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000831617855561036c575b50610242612777565b61024a612777565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005580359073ffffffffffffffffffffffffffffffffffffffff821680830361036857610297612777565b61029f612777565b1561033957506102ae906123b5565b6102b9602435612524565b6102c46044356122cd565b6102cf606435612469565b6102da608435612217565b6102e2578280f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291817fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff602093541690555160018152a138808280f35b602490868651917f1e4fbdf7000000000000000000000000000000000000000000000000000000008352820152fd5b8680fd5b7fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000166801000000000000000117835538610239565b5083517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b90501538610206565b303b1591506101fe565b8491506101f4565b8280fd5b8382346104b65760206003193601126104b6573573ffffffffffffffffffffffffffffffffffffffff8082168092036103e4576104236121a7565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b5080fd5b5050346104b657816003193601126104b6576020906001549051908152f35b5050346104b657816003193601126104b657602090517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f8152f35b8361054e61052136611405565b966105358782989398979497969596611bab565b61053f8484611bab565b6105498686611bab565b611926565b80f35b8382346104b65760206003193601126104b65761054e906105706121a7565b35612524565b5050346104b657816003193601126104b65760209073ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0054169051908152f35b50346103e457826003193601126103e45760209250549051908152f35b50823461063d57602060031936011261063d5750356106306106297f000000000000000000000000000000000000000000000000000000000000000083611b36565b8092611b6f565b9082519182526020820152f35b80fd5b5090806003193601126103e457813567ffffffffffffffff811161073b5761066b903690840161125e565b9190926024359063ffffffff8216809203610737576106c09061068e8587611bab565b6106b83373ffffffffffffffffffffffffffffffffffffffff6106b1888a611e63565b16146116fd565b543414611473565b8480341561072e575b81808092813491f115610724576107187f202c9aad6965f28c0ce1cd00460c1adfa2c90277f4f0a7abb813e2f04cecd70b946107088754841015611aab565b8351948486958652850191611788565b9060208301520390a180f35b81513d86823e3d90fd5b506108fc6106c9565b8580fd5b8380fd5b5050346104b657816003193601126104b657602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b8361054e61078736611291565b9661079b8782989398979497969596611bab565b6107be3373ffffffffffffffffffffffffffffffffffffffff6106b18585611e63565b6107c88484611bab565b6114fe565b8382346104b65760206003193601126104b65761054e906107ec6121a7565b35612469565b602083610829610801366112ff565b956108128682979397969496611bab565b61081c8484611bab565b610824611ebd565b611fa2565b9060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005551908152f35b8361054e61086136611405565b966108758782989398979497969596611bab565b6105353373ffffffffffffffffffffffffffffffffffffffff6106b18585611e63565b50906108a33661136e565b909291936108b18486611bab565b6108d973ffffffffffffffffffffffffffffffffffffffff916106b833846106b1898b611e63565b8580341561093b575b81808092813491f115610931576109247f28c0529db8cf660d5b4c1e4b9313683fa7241c3fc49452e7d0ebae215a5f84b2958451958587968752860191611788565b911660208301520390a180f35b82513d87823e3d90fd5b506108fc6108e2565b5050346104b657816003193601126104b65751908152602090f35b5090346103e45760206003193601126103e45781359167ffffffffffffffff831161073b576109b56109f7917fe3a30390f081e6e95d8bcc1b0459ae73d4ca4fc9bf6351e006d072c02f5209ff9436910161125e565b9190926109c28385611bab565b6109e53373ffffffffffffffffffffffffffffffffffffffff6106b18688611e63565b51928392602084526020840191611788565b0390a180f35b5050346104b657816003193601126104b657602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b8361054e610a45366113be565b92610a538382949394611bab565b610a763373ffffffffffffffffffffffffffffffffffffffff6106b18585611e63565b6117c7565b5050346104b657816003193601126104b65760209073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054169051908152f35b50919060e06003193601126104b65767ffffffffffffffff90833582811161073b57610afe903690860161125e565b91909460243584811161073757610b18903690830161125e565b92909660443563ffffffff90818116809103610e735760643590828216809203610e6f57608435928316809303610e6f5760a435988915158a03610e6b5760c435908111610e6b57610b70610baf913690890161125e565b9c9098610b7d8b88611bab565b610ba03373ffffffffffffffffffffffffffffffffffffffff6106b18e8b611e63565b610ba8611ebd565b36916118f5565b95610bda7f000000000000000000000000000000000000000000000000000000000000000034611b36565b99610be58b34611b6f565b91610bf4600154841015611f17565b610c018d54851015611aab565b848411610de8576046895111610d6557508b80838015610d5b575b82809291818093f115610d515715610d4757610c466001955b87519a610120808d528c0191611788565b6020978a8203898c01528051908183528d5b828110610d345750509360ff938d9e9793837f65bfc2fa1cd4c6f50f60983ad1cf1cb4bff5ee6570428254dfce41b085ef6d149e9f601f8f9e9c997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092610cf49f82819e9a010152011601968c015260608b015260808a015260a08901521660c08701523360e087015281868203016101008701520191611788565b0390a180610d25575b5060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005580f35b610d2e906126bf565b38610cfd565b8181018b01518482018c01528a01610c58565b610c468b95610c35565b86513d8d823e3d90fd5b6108fc9150610c1c565b60849060208951917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602760248201527f4950546f6b656e5374616b696e673a204d6f6e696b6572206c656e677468206f60448201527f766572206d6178000000000000000000000000000000000000000000000000006064820152fd5b60849060208951917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602860248201527f4950546f6b656e5374616b696e673a20436f6d6d697373696f6e20726174652060448201527f6f766572206d61780000000000000000000000000000000000000000000000006064820152fd5b8a80fd5b8980fd5b8880fd5b83610e9a610e84366113be565b92610e90929192611ebd565b610a768282611bab565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005580f35b5090346103e457826003193601126103e4573373ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00541603610f1b578261054e336123b5565b6024925051907f118cdaa70000000000000000000000000000000000000000000000000000000082523390820152fd5b5090610f563661136e565b90929193610f648486611bab565b610f8c73ffffffffffffffffffffffffffffffffffffffff916106b833846106b1898b611e63565b85803415610fd7575b81808092813491f115610931576109247f9f7f04f688298f474ed4c786abb29e0ca0173d70516d55d9eac515609b45fbca958451958587968752860191611788565b506108fc610f95565b833461063d578060031936011261063d57610ff96121a7565b8073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffff00000000000000000000000000000000000000007f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008181541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549182169055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b8382346104b65760206003193601126104b65761054e906110c66121a7565b356122cd565b8382346104b65760206003193601126104b65761054e906110eb6121a7565b35612217565b5050346104b657816003193601126104b6576020905160078152f35b50906111183661136e565b909291936111268486611bab565b61114e73ffffffffffffffffffffffffffffffffffffffff916106b833846106b1898b611e63565b85803415611199575b81808092813491f115610931576109247f658c1d4ffa3caca5fbfd38bb564825b972c239a7d090eb333a42e2ba7a0a4ed2958451958587968752860191611788565b506108fc611157565b6020836108296111b1366112ff565b956111c28682979397969496611bab565b6108123373ffffffffffffffffffffffffffffffffffffffff6106b18585611e63565b5050346104b657816003193601126104b6576020906002549051908152f35b5050346104b657816003193601126104b6576020905160468152f35b5050346104b657816003193601126104b657602091549051908152f35b8361054e61124a36611291565b966107be8782989398979497969596611bab565b9181601f8401121561128c5782359167ffffffffffffffff831161128c576020838186019501011161128c57565b600080fd5b60a060031982011261128c5767ffffffffffffffff9060043582811161128c57816112be9160040161125e565b9390939260243581811161128c57836112d99160040161125e565b93909392604435926064359260843591821161128c576112fb9160040161125e565b9091565b608060031982011261128c5767ffffffffffffffff9160043583811161128c578261132c9160040161125e565b9390939260243582811161128c57816113479160040161125e565b93909392604435600481101561128c579260643591821161128c576112fb9160040161125e565b604060031982011261128c576004359067ffffffffffffffff821161128c576113999160040161125e565b909160243573ffffffffffffffffffffffffffffffffffffffff8116810361128c5790565b604060031982011261128c5767ffffffffffffffff9160043583811161128c57826113eb9160040161125e565b9390939260243591821161128c576112fb9160040161125e565b9060a060031983011261128c5767ffffffffffffffff60043581811161128c57836114329160040161125e565b9390939260243583811161128c578261144d9160040161125e565b9390939260443591821161128c576114679160040161125e565b90916064359060843590565b1561147a57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4950546f6b656e5374616b696e673a20496e76616c69642066656520616d6f7560448201527f6e740000000000000000000000000000000000000000000000000000000000006064820152fd5b959094929691936115126004543414611473565b600034156116f4575b600080808093813491f1156116e857611538600354821115611dd8565b60025484106116645761156b7f000000000000000000000000000000000000000000000000000000000000000085611b36565b6115e0576115bd6115db957fac41e6ee15d2d0047feb1ea8aba74b92c0334cd3e78024a5ad679d7d08b8fbc5996115af6040519a8b9a60c08c5260c08c0191611788565b9189830360208b0152611788565b936040870152606086015233608086015284830360a0860152611788565b0390a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4950546f6b656e5374616b696e673a20416d6f756e74206d757374206265207260448201527f6f756e64656420746f205354414b455f524f554e44494e4700000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4950546f6b656e5374616b696e673a20556e7374616b6520616d6f756e74207560448201527f6e646572206d696e0000000000000000000000000000000000000000000000006064820152fd5b6040513d6000823e3d90fd5b506108fc61151b565b1561170457565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579206460448201527f65726976656420616464726573730000000000000000000000000000000000006064820152fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b91926117d66004543414611473565b6000341561183f575b600080808093813491f1156116e8577f026c2e156478ec2a25ccebac97a338d301f69b6d5aeec39c578b28a95e118201936115db91611831604051958695338752606060208801526060870191611788565b918483036040860152611788565b506108fc6117df565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761188c57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff811161188c57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192611909611904836118bb565b611848565b938285528282011161128c57816000926020928387013784010152565b959390946119376004543414611473565b60003415611aa2575b600080808093813491f1156116e85761195a3685856118f5565b6020815191012061196c3683856118f5565b6020815191012014611a1e576119fa611a08936119d47f210091050fbe3add6ade45436b6c7aed210ef28fc37e1a1775970fc391272fe89a6119ce7f000000000000000000000000000000000000000000000000000000000000000082611b36565b90611b6f565b956119e3600354891115611dd8565b6115af6040519a8b9a60c08c5260c08c0191611788565b918683036040880152611788565b91606084015233608084015260a08301520390a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4950546f6b656e5374616b696e673a20526564656c65676174696e6720746f2060448201527f73616d652076616c696461746f720000000000000000000000000000000000006064820152fd5b506108fc611940565b15611ab257565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4950546f6b656e5374616b696e673a20436f6d6d697373696f6e20726174652060448201527f756e646572206d696e00000000000000000000000000000000000000000000006064820152fd5b8115611b40570690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b91908203918211611b7c57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9060418103611d545715611d25577f04000000000000000000000000000000000000000000000000000000000000007fff0000000000000000000000000000000000000000000000000000000000000082351603611ca1578060016021611c1693013591013561260c565b15611c1d57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579206f60448201527f6e206375727665000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579207060448201527f72656669780000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579206c60448201527f656e6774680000000000000000000000000000000000000000000000000000006064820152fd5b15611ddf57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4950546f6b656e5374616b696e673a20496e76616c69642064656c656761746960448201527f6f6e2069640000000000000000000000000000000000000000000000000000006064820152fd5b8160011161128c5773ffffffffffffffffffffffffffffffffffffffff91611eb29160017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff36930191016118f5565b602081519101201690565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f006002815414611eed5760029055565b60046040517f3ee5aeb5000000000000000000000000000000000000000000000000000000008152fd5b15611f1e57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4950546f6b656e5374616b696e673a205374616b6520616d6f756e7420756e6460448201527f6572206d696e00000000000000000000000000000000000000000000000000006064820152fd5b929593909193600482101561217857600382116120f457611fe37f000000000000000000000000000000000000000000000000000000000000000034611b36565b95611fee8734611b6f565b95611ffd600154881015611f17565b600098846120ad575b9461207c6000989495899893967f269a32ff589c9b701f49ab6aa532ee8f55901df71a7fca2d70dc9f45314f1be39560ff6120568c9b9a8c9b6115af6040519a8b9a60e08c5260e08c0191611788565b938960408801521660608601528d60808601523360a086015284830360c0860152611788565b0390a18181156120a4575b8290f1156116e85780612098575090565b6120a1906126bf565b90565b506108fc612087565b91949850929591946003547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611b7c5760010180600355989491969390959296612006565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4950546f6b656e5374616b696e673a20496e76616c6964207374616b696e672060448201527f706572696f6400000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300541633036121e757565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b7f0000000000000000000000000000000000000000000000000000000000000000811061226f576020817f20461e09b8e557b77e107939f9ce6544698123aad0fc964ac5cc59b7df2e608f92600455604051908152a1565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4950546f6b656e5374616b696e673a20496e76616c6964206d696e20666565006044820152fd5b80156123315760206123247ff93d77980ae5a1ddd008d6a7f02cbee5af2a4fcea850c4b55828de4f644e589f926119ce7f000000000000000000000000000000000000000000000000000000000000000082611b36565b80600255604051908152a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4950546f6b656e5374616b696e673a205a65726f206d696e20756e7374616b6560448201527f20616d6f756e74000000000000000000000000000000000000000000000000006064820152fd5b7fffffffffffffffffffffffff0000000000000000000000000000000000000000907f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008281541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549073ffffffffffffffffffffffffffffffffffffffff80931680948316179055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b80156124a0576020817f4167b1de65292a9ff628c9136823791a1de701e1fbdda4863ce22a1cfaf4d0f792600055604051908152a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4950546f6b656e5374616b696e673a205a65726f206d696e20636f6d6d69737360448201527f696f6e20726174650000000000000000000000000000000000000000000000006064820152fd5b801561258857602061257b7fea095c2fea861b87f0fd54d0d4453358692a527e120df22b62c71696247dfb9f926119ce7f000000000000000000000000000000000000000000000000000000000000000082611b36565b80600155604051908152a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4950546f6b656e5374616b696e673a205a65726f206d696e207374616b65206160448201527f6d6f756e740000000000000000000000000000000000000000000000000000006064820152fd5b80158015612695575b801561268d575b8015612663575b61265c576007907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f918282818181950909089180091490565b5050600090565b507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f821015612623565b50811561261c565b507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f811015612615565b600080808093335af13d15612772573d6126db611904826118bb565b908152600060203d92013e5b156126ee57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4950546f6b656e5374616b696e673a204661696c656420746f20726566756e6460448201527f2072656d61696e646572000000000000000000000000000000000000000000006064820152fd5b6126e7565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c16156127a657565b60046040517fd7e6bcf8000000000000000000000000000000000000000000000000000000008152fdfea26469706673582212206417eb98b58174a6b87797a3f1abd14ba230902582dde4ea1f82a1aebc305da964736f6c63430008170033", +} + +// IPTokenStakingABI is the input ABI used to generate the binding from. +// Deprecated: Use IPTokenStakingMetaData.ABI instead. +var IPTokenStakingABI = IPTokenStakingMetaData.ABI + +// IPTokenStakingBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use IPTokenStakingMetaData.Bin instead. +var IPTokenStakingBin = IPTokenStakingMetaData.Bin + +// DeployIPTokenStaking deploys a new Ethereum contract, binding an instance of IPTokenStaking to it. +func DeployIPTokenStaking(auth *bind.TransactOpts, backend bind.ContractBackend, stakingRounding *big.Int, defaultMinFee *big.Int) (common.Address, *types.Transaction, *IPTokenStaking, error) { + parsed, err := IPTokenStakingMetaData.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(IPTokenStakingBin), backend, stakingRounding, defaultMinFee) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &IPTokenStaking{IPTokenStakingCaller: IPTokenStakingCaller{contract: contract}, IPTokenStakingTransactor: IPTokenStakingTransactor{contract: contract}, IPTokenStakingFilterer: IPTokenStakingFilterer{contract: contract}}, nil +} + +// IPTokenStaking is an auto generated Go binding around an Ethereum contract. +type IPTokenStaking struct { + IPTokenStakingCaller // Read-only binding to the contract + IPTokenStakingTransactor // Write-only binding to the contract + IPTokenStakingFilterer // Log filterer for contract events +} + +// IPTokenStakingCaller is an auto generated read-only Go binding around an Ethereum contract. +type IPTokenStakingCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPTokenStakingTransactor is an auto generated write-only Go binding around an Ethereum contract. +type IPTokenStakingTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPTokenStakingFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IPTokenStakingFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IPTokenStakingSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IPTokenStakingSession struct { + Contract *IPTokenStaking // 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 +} + +// IPTokenStakingCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IPTokenStakingCallerSession struct { + Contract *IPTokenStakingCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IPTokenStakingTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IPTokenStakingTransactorSession struct { + Contract *IPTokenStakingTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IPTokenStakingRaw is an auto generated low-level Go binding around an Ethereum contract. +type IPTokenStakingRaw struct { + Contract *IPTokenStaking // Generic contract binding to access the raw methods on +} + +// IPTokenStakingCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IPTokenStakingCallerRaw struct { + Contract *IPTokenStakingCaller // Generic read-only contract binding to access the raw methods on +} + +// IPTokenStakingTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IPTokenStakingTransactorRaw struct { + Contract *IPTokenStakingTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewIPTokenStaking creates a new instance of IPTokenStaking, bound to a specific deployed contract. +func NewIPTokenStaking(address common.Address, backend bind.ContractBackend) (*IPTokenStaking, error) { + contract, err := bindIPTokenStaking(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IPTokenStaking{IPTokenStakingCaller: IPTokenStakingCaller{contract: contract}, IPTokenStakingTransactor: IPTokenStakingTransactor{contract: contract}, IPTokenStakingFilterer: IPTokenStakingFilterer{contract: contract}}, nil +} + +// NewIPTokenStakingCaller creates a new read-only instance of IPTokenStaking, bound to a specific deployed contract. +func NewIPTokenStakingCaller(address common.Address, caller bind.ContractCaller) (*IPTokenStakingCaller, error) { + contract, err := bindIPTokenStaking(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IPTokenStakingCaller{contract: contract}, nil +} + +// NewIPTokenStakingTransactor creates a new write-only instance of IPTokenStaking, bound to a specific deployed contract. +func NewIPTokenStakingTransactor(address common.Address, transactor bind.ContractTransactor) (*IPTokenStakingTransactor, error) { + contract, err := bindIPTokenStaking(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IPTokenStakingTransactor{contract: contract}, nil +} + +// NewIPTokenStakingFilterer creates a new log filterer instance of IPTokenStaking, bound to a specific deployed contract. +func NewIPTokenStakingFilterer(address common.Address, filterer bind.ContractFilterer) (*IPTokenStakingFilterer, error) { + contract, err := bindIPTokenStaking(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IPTokenStakingFilterer{contract: contract}, nil +} + +// bindIPTokenStaking binds a generic wrapper to an already deployed contract. +func bindIPTokenStaking(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IPTokenStakingMetaData.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 (_IPTokenStaking *IPTokenStakingRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPTokenStaking.Contract.IPTokenStakingCaller.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 (_IPTokenStaking *IPTokenStakingRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPTokenStaking.Contract.IPTokenStakingTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IPTokenStaking *IPTokenStakingRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPTokenStaking.Contract.IPTokenStakingTransactor.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 (_IPTokenStaking *IPTokenStakingCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IPTokenStaking.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 (_IPTokenStaking *IPTokenStakingTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPTokenStaking.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IPTokenStaking *IPTokenStakingTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IPTokenStaking.Contract.contract.Transact(opts, method, params...) +} + +// AA is a free data retrieval call binding the contract method 0x997da8d4. +// +// Solidity: function AA() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCaller) AA(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IPTokenStaking.contract.Call(opts, &out, "AA") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// AA is a free data retrieval call binding the contract method 0x997da8d4. +// +// Solidity: function AA() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingSession) AA() (*big.Int, error) { + return _IPTokenStaking.Contract.AA(&_IPTokenStaking.CallOpts) +} + +// AA is a free data retrieval call binding the contract method 0x997da8d4. +// +// Solidity: function AA() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCallerSession) AA() (*big.Int, error) { + return _IPTokenStaking.Contract.AA(&_IPTokenStaking.CallOpts) +} + +// BB is a free data retrieval call binding the contract method 0x5727dc5c. +// +// Solidity: function BB() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCaller) BB(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IPTokenStaking.contract.Call(opts, &out, "BB") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BB is a free data retrieval call binding the contract method 0x5727dc5c. +// +// Solidity: function BB() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingSession) BB() (*big.Int, error) { + return _IPTokenStaking.Contract.BB(&_IPTokenStaking.CallOpts) +} + +// BB is a free data retrieval call binding the contract method 0x5727dc5c. +// +// Solidity: function BB() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCallerSession) BB() (*big.Int, error) { + return _IPTokenStaking.Contract.BB(&_IPTokenStaking.CallOpts) +} + +// DEFAULTMINFEE is a free data retrieval call binding the contract method 0x94fd0fe0. +// +// Solidity: function DEFAULT_MIN_FEE() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCaller) DEFAULTMINFEE(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IPTokenStaking.contract.Call(opts, &out, "DEFAULT_MIN_FEE") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// DEFAULTMINFEE is a free data retrieval call binding the contract method 0x94fd0fe0. +// +// Solidity: function DEFAULT_MIN_FEE() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingSession) DEFAULTMINFEE() (*big.Int, error) { + return _IPTokenStaking.Contract.DEFAULTMINFEE(&_IPTokenStaking.CallOpts) +} + +// DEFAULTMINFEE is a free data retrieval call binding the contract method 0x94fd0fe0. +// +// Solidity: function DEFAULT_MIN_FEE() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCallerSession) DEFAULTMINFEE() (*big.Int, error) { + return _IPTokenStaking.Contract.DEFAULTMINFEE(&_IPTokenStaking.CallOpts) +} + +// MAXMONIKERLENGTH is a free data retrieval call binding the contract method 0x396e1e47. +// +// Solidity: function MAX_MONIKER_LENGTH() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCaller) MAXMONIKERLENGTH(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IPTokenStaking.contract.Call(opts, &out, "MAX_MONIKER_LENGTH") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MAXMONIKERLENGTH is a free data retrieval call binding the contract method 0x396e1e47. +// +// Solidity: function MAX_MONIKER_LENGTH() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingSession) MAXMONIKERLENGTH() (*big.Int, error) { + return _IPTokenStaking.Contract.MAXMONIKERLENGTH(&_IPTokenStaking.CallOpts) +} + +// MAXMONIKERLENGTH is a free data retrieval call binding the contract method 0x396e1e47. +// +// Solidity: function MAX_MONIKER_LENGTH() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCallerSession) MAXMONIKERLENGTH() (*big.Int, error) { + return _IPTokenStaking.Contract.MAXMONIKERLENGTH(&_IPTokenStaking.CallOpts) +} + +// PP is a free data retrieval call binding the contract method 0xeeeac01e. +// +// Solidity: function PP() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCaller) PP(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IPTokenStaking.contract.Call(opts, &out, "PP") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// PP is a free data retrieval call binding the contract method 0xeeeac01e. +// +// Solidity: function PP() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingSession) PP() (*big.Int, error) { + return _IPTokenStaking.Contract.PP(&_IPTokenStaking.CallOpts) +} + +// PP is a free data retrieval call binding the contract method 0xeeeac01e. +// +// Solidity: function PP() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCallerSession) PP() (*big.Int, error) { + return _IPTokenStaking.Contract.PP(&_IPTokenStaking.CallOpts) +} + +// STAKEROUNDING is a free data retrieval call binding the contract method 0xbda16b15. +// +// Solidity: function STAKE_ROUNDING() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCaller) STAKEROUNDING(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IPTokenStaking.contract.Call(opts, &out, "STAKE_ROUNDING") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// STAKEROUNDING is a free data retrieval call binding the contract method 0xbda16b15. +// +// Solidity: function STAKE_ROUNDING() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingSession) STAKEROUNDING() (*big.Int, error) { + return _IPTokenStaking.Contract.STAKEROUNDING(&_IPTokenStaking.CallOpts) +} + +// STAKEROUNDING is a free data retrieval call binding the contract method 0xbda16b15. +// +// Solidity: function STAKE_ROUNDING() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCallerSession) STAKEROUNDING() (*big.Int, error) { + return _IPTokenStaking.Contract.STAKEROUNDING(&_IPTokenStaking.CallOpts) +} + +// Fee is a free data retrieval call binding the contract method 0xddca3f43. +// +// Solidity: function fee() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCaller) Fee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IPTokenStaking.contract.Call(opts, &out, "fee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Fee is a free data retrieval call binding the contract method 0xddca3f43. +// +// Solidity: function fee() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingSession) Fee() (*big.Int, error) { + return _IPTokenStaking.Contract.Fee(&_IPTokenStaking.CallOpts) +} + +// Fee is a free data retrieval call binding the contract method 0xddca3f43. +// +// Solidity: function fee() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCallerSession) Fee() (*big.Int, error) { + return _IPTokenStaking.Contract.Fee(&_IPTokenStaking.CallOpts) +} + +// MinCommissionRate is a free data retrieval call binding the contract method 0x1487153e. +// +// Solidity: function minCommissionRate() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCaller) MinCommissionRate(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IPTokenStaking.contract.Call(opts, &out, "minCommissionRate") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MinCommissionRate is a free data retrieval call binding the contract method 0x1487153e. +// +// Solidity: function minCommissionRate() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingSession) MinCommissionRate() (*big.Int, error) { + return _IPTokenStaking.Contract.MinCommissionRate(&_IPTokenStaking.CallOpts) +} + +// MinCommissionRate is a free data retrieval call binding the contract method 0x1487153e. +// +// Solidity: function minCommissionRate() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCallerSession) MinCommissionRate() (*big.Int, error) { + return _IPTokenStaking.Contract.MinCommissionRate(&_IPTokenStaking.CallOpts) +} + +// MinStakeAmount is a free data retrieval call binding the contract method 0xf1887684. +// +// Solidity: function minStakeAmount() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCaller) MinStakeAmount(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IPTokenStaking.contract.Call(opts, &out, "minStakeAmount") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MinStakeAmount is a free data retrieval call binding the contract method 0xf1887684. +// +// Solidity: function minStakeAmount() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingSession) MinStakeAmount() (*big.Int, error) { + return _IPTokenStaking.Contract.MinStakeAmount(&_IPTokenStaking.CallOpts) +} + +// MinStakeAmount is a free data retrieval call binding the contract method 0xf1887684. +// +// Solidity: function minStakeAmount() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCallerSession) MinStakeAmount() (*big.Int, error) { + return _IPTokenStaking.Contract.MinStakeAmount(&_IPTokenStaking.CallOpts) +} + +// MinUnstakeAmount is a free data retrieval call binding the contract method 0x39ec4df9. +// +// Solidity: function minUnstakeAmount() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCaller) MinUnstakeAmount(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IPTokenStaking.contract.Call(opts, &out, "minUnstakeAmount") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MinUnstakeAmount is a free data retrieval call binding the contract method 0x39ec4df9. +// +// Solidity: function minUnstakeAmount() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingSession) MinUnstakeAmount() (*big.Int, error) { + return _IPTokenStaking.Contract.MinUnstakeAmount(&_IPTokenStaking.CallOpts) +} + +// MinUnstakeAmount is a free data retrieval call binding the contract method 0x39ec4df9. +// +// Solidity: function minUnstakeAmount() view returns(uint256) +func (_IPTokenStaking *IPTokenStakingCallerSession) MinUnstakeAmount() (*big.Int, error) { + return _IPTokenStaking.Contract.MinUnstakeAmount(&_IPTokenStaking.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_IPTokenStaking *IPTokenStakingCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IPTokenStaking.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 (_IPTokenStaking *IPTokenStakingSession) Owner() (common.Address, error) { + return _IPTokenStaking.Contract.Owner(&_IPTokenStaking.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_IPTokenStaking *IPTokenStakingCallerSession) Owner() (common.Address, error) { + return _IPTokenStaking.Contract.Owner(&_IPTokenStaking.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_IPTokenStaking *IPTokenStakingCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _IPTokenStaking.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 (_IPTokenStaking *IPTokenStakingSession) PendingOwner() (common.Address, error) { + return _IPTokenStaking.Contract.PendingOwner(&_IPTokenStaking.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_IPTokenStaking *IPTokenStakingCallerSession) PendingOwner() (common.Address, error) { + return _IPTokenStaking.Contract.PendingOwner(&_IPTokenStaking.CallOpts) +} + +// RoundedStakeAmount is a free data retrieval call binding the contract method 0xd2e1f5b8. +// +// Solidity: function roundedStakeAmount(uint256 rawAmount) view returns(uint256 amount, uint256 remainder) +func (_IPTokenStaking *IPTokenStakingCaller) RoundedStakeAmount(opts *bind.CallOpts, rawAmount *big.Int) (struct { + Amount *big.Int + Remainder *big.Int +}, error) { + var out []interface{} + err := _IPTokenStaking.contract.Call(opts, &out, "roundedStakeAmount", rawAmount) + + outstruct := new(struct { + Amount *big.Int + Remainder *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Amount = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.Remainder = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return *outstruct, err + +} + +// RoundedStakeAmount is a free data retrieval call binding the contract method 0xd2e1f5b8. +// +// Solidity: function roundedStakeAmount(uint256 rawAmount) view returns(uint256 amount, uint256 remainder) +func (_IPTokenStaking *IPTokenStakingSession) RoundedStakeAmount(rawAmount *big.Int) (struct { + Amount *big.Int + Remainder *big.Int +}, error) { + return _IPTokenStaking.Contract.RoundedStakeAmount(&_IPTokenStaking.CallOpts, rawAmount) +} + +// RoundedStakeAmount is a free data retrieval call binding the contract method 0xd2e1f5b8. +// +// Solidity: function roundedStakeAmount(uint256 rawAmount) view returns(uint256 amount, uint256 remainder) +func (_IPTokenStaking *IPTokenStakingCallerSession) RoundedStakeAmount(rawAmount *big.Int) (struct { + Amount *big.Int + Remainder *big.Int +}, error) { + return _IPTokenStaking.Contract.RoundedStakeAmount(&_IPTokenStaking.CallOpts, rawAmount) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_IPTokenStaking *IPTokenStakingTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_IPTokenStaking *IPTokenStakingSession) AcceptOwnership() (*types.Transaction, error) { + return _IPTokenStaking.Contract.AcceptOwnership(&_IPTokenStaking.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _IPTokenStaking.Contract.AcceptOwnership(&_IPTokenStaking.TransactOpts) +} + +// CreateValidator is a paid mutator transaction binding the contract method 0x8740597a. +// +// Solidity: function createValidator(bytes validatorUncmpPubkey, string moniker, uint32 commissionRate, uint32 maxCommissionRate, uint32 maxCommissionChangeRate, bool supportsUnlocked, bytes data) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactor) CreateValidator(opts *bind.TransactOpts, validatorUncmpPubkey []byte, moniker string, commissionRate uint32, maxCommissionRate uint32, maxCommissionChangeRate uint32, supportsUnlocked bool, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "createValidator", validatorUncmpPubkey, moniker, commissionRate, maxCommissionRate, maxCommissionChangeRate, supportsUnlocked, data) +} + +// CreateValidator is a paid mutator transaction binding the contract method 0x8740597a. +// +// Solidity: function createValidator(bytes validatorUncmpPubkey, string moniker, uint32 commissionRate, uint32 maxCommissionRate, uint32 maxCommissionChangeRate, bool supportsUnlocked, bytes data) payable returns() +func (_IPTokenStaking *IPTokenStakingSession) CreateValidator(validatorUncmpPubkey []byte, moniker string, commissionRate uint32, maxCommissionRate uint32, maxCommissionChangeRate uint32, supportsUnlocked bool, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.Contract.CreateValidator(&_IPTokenStaking.TransactOpts, validatorUncmpPubkey, moniker, commissionRate, maxCommissionRate, maxCommissionChangeRate, supportsUnlocked, data) +} + +// CreateValidator is a paid mutator transaction binding the contract method 0x8740597a. +// +// Solidity: function createValidator(bytes validatorUncmpPubkey, string moniker, uint32 commissionRate, uint32 maxCommissionRate, uint32 maxCommissionChangeRate, bool supportsUnlocked, bytes data) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) CreateValidator(validatorUncmpPubkey []byte, moniker string, commissionRate uint32, maxCommissionRate uint32, maxCommissionChangeRate uint32, supportsUnlocked bool, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.Contract.CreateValidator(&_IPTokenStaking.TransactOpts, validatorUncmpPubkey, moniker, commissionRate, maxCommissionRate, maxCommissionChangeRate, supportsUnlocked, data) +} + +// Initialize is a paid mutator transaction binding the contract method 0xfce5dc8c. +// +// Solidity: function initialize((address,uint256,uint256,uint256,uint256) args) returns() +func (_IPTokenStaking *IPTokenStakingTransactor) Initialize(opts *bind.TransactOpts, args IIPTokenStakingInitializerArgs) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "initialize", args) +} + +// Initialize is a paid mutator transaction binding the contract method 0xfce5dc8c. +// +// Solidity: function initialize((address,uint256,uint256,uint256,uint256) args) returns() +func (_IPTokenStaking *IPTokenStakingSession) Initialize(args IIPTokenStakingInitializerArgs) (*types.Transaction, error) { + return _IPTokenStaking.Contract.Initialize(&_IPTokenStaking.TransactOpts, args) +} + +// Initialize is a paid mutator transaction binding the contract method 0xfce5dc8c. +// +// Solidity: function initialize((address,uint256,uint256,uint256,uint256) args) returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) Initialize(args IIPTokenStakingInitializerArgs) (*types.Transaction, error) { + return _IPTokenStaking.Contract.Initialize(&_IPTokenStaking.TransactOpts, args) +} + +// Redelegate is a paid mutator transaction binding the contract method 0x9d9d293f. +// +// Solidity: function redelegate(bytes delegatorUncmpPubkey, bytes validatorUncmpSrcPubkey, bytes validatorUncmpDstPubkey, uint256 delegationId, uint256 amount) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactor) Redelegate(opts *bind.TransactOpts, delegatorUncmpPubkey []byte, validatorUncmpSrcPubkey []byte, validatorUncmpDstPubkey []byte, delegationId *big.Int, amount *big.Int) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "redelegate", delegatorUncmpPubkey, validatorUncmpSrcPubkey, validatorUncmpDstPubkey, delegationId, amount) +} + +// Redelegate is a paid mutator transaction binding the contract method 0x9d9d293f. +// +// Solidity: function redelegate(bytes delegatorUncmpPubkey, bytes validatorUncmpSrcPubkey, bytes validatorUncmpDstPubkey, uint256 delegationId, uint256 amount) payable returns() +func (_IPTokenStaking *IPTokenStakingSession) Redelegate(delegatorUncmpPubkey []byte, validatorUncmpSrcPubkey []byte, validatorUncmpDstPubkey []byte, delegationId *big.Int, amount *big.Int) (*types.Transaction, error) { + return _IPTokenStaking.Contract.Redelegate(&_IPTokenStaking.TransactOpts, delegatorUncmpPubkey, validatorUncmpSrcPubkey, validatorUncmpDstPubkey, delegationId, amount) +} + +// Redelegate is a paid mutator transaction binding the contract method 0x9d9d293f. +// +// Solidity: function redelegate(bytes delegatorUncmpPubkey, bytes validatorUncmpSrcPubkey, bytes validatorUncmpDstPubkey, uint256 delegationId, uint256 amount) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) Redelegate(delegatorUncmpPubkey []byte, validatorUncmpSrcPubkey []byte, validatorUncmpDstPubkey []byte, delegationId *big.Int, amount *big.Int) (*types.Transaction, error) { + return _IPTokenStaking.Contract.Redelegate(&_IPTokenStaking.TransactOpts, delegatorUncmpPubkey, validatorUncmpSrcPubkey, validatorUncmpDstPubkey, delegationId, amount) +} + +// RedelegateOnBehalf is a paid mutator transaction binding the contract method 0xec21dac2. +// +// Solidity: function redelegateOnBehalf(bytes delegatorUncmpPubkey, bytes validatorUncmpSrcPubkey, bytes validatorUncmpDstPubkey, uint256 delegationId, uint256 amount) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactor) RedelegateOnBehalf(opts *bind.TransactOpts, delegatorUncmpPubkey []byte, validatorUncmpSrcPubkey []byte, validatorUncmpDstPubkey []byte, delegationId *big.Int, amount *big.Int) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "redelegateOnBehalf", delegatorUncmpPubkey, validatorUncmpSrcPubkey, validatorUncmpDstPubkey, delegationId, amount) +} + +// RedelegateOnBehalf is a paid mutator transaction binding the contract method 0xec21dac2. +// +// Solidity: function redelegateOnBehalf(bytes delegatorUncmpPubkey, bytes validatorUncmpSrcPubkey, bytes validatorUncmpDstPubkey, uint256 delegationId, uint256 amount) payable returns() +func (_IPTokenStaking *IPTokenStakingSession) RedelegateOnBehalf(delegatorUncmpPubkey []byte, validatorUncmpSrcPubkey []byte, validatorUncmpDstPubkey []byte, delegationId *big.Int, amount *big.Int) (*types.Transaction, error) { + return _IPTokenStaking.Contract.RedelegateOnBehalf(&_IPTokenStaking.TransactOpts, delegatorUncmpPubkey, validatorUncmpSrcPubkey, validatorUncmpDstPubkey, delegationId, amount) +} + +// RedelegateOnBehalf is a paid mutator transaction binding the contract method 0xec21dac2. +// +// Solidity: function redelegateOnBehalf(bytes delegatorUncmpPubkey, bytes validatorUncmpSrcPubkey, bytes validatorUncmpDstPubkey, uint256 delegationId, uint256 amount) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) RedelegateOnBehalf(delegatorUncmpPubkey []byte, validatorUncmpSrcPubkey []byte, validatorUncmpDstPubkey []byte, delegationId *big.Int, amount *big.Int) (*types.Transaction, error) { + return _IPTokenStaking.Contract.RedelegateOnBehalf(&_IPTokenStaking.TransactOpts, delegatorUncmpPubkey, validatorUncmpSrcPubkey, validatorUncmpDstPubkey, delegationId, amount) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_IPTokenStaking *IPTokenStakingTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_IPTokenStaking *IPTokenStakingSession) RenounceOwnership() (*types.Transaction, error) { + return _IPTokenStaking.Contract.RenounceOwnership(&_IPTokenStaking.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _IPTokenStaking.Contract.RenounceOwnership(&_IPTokenStaking.TransactOpts) +} + +// SetFee is a paid mutator transaction binding the contract method 0x69fe0e2d. +// +// Solidity: function setFee(uint256 newFee) returns() +func (_IPTokenStaking *IPTokenStakingTransactor) SetFee(opts *bind.TransactOpts, newFee *big.Int) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "setFee", newFee) +} + +// SetFee is a paid mutator transaction binding the contract method 0x69fe0e2d. +// +// Solidity: function setFee(uint256 newFee) returns() +func (_IPTokenStaking *IPTokenStakingSession) SetFee(newFee *big.Int) (*types.Transaction, error) { + return _IPTokenStaking.Contract.SetFee(&_IPTokenStaking.TransactOpts, newFee) +} + +// SetFee is a paid mutator transaction binding the contract method 0x69fe0e2d. +// +// Solidity: function setFee(uint256 newFee) returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) SetFee(newFee *big.Int) (*types.Transaction, error) { + return _IPTokenStaking.Contract.SetFee(&_IPTokenStaking.TransactOpts, newFee) +} + +// SetMinCommissionRate is a paid mutator transaction binding the contract method 0xab8870f6. +// +// Solidity: function setMinCommissionRate(uint256 newValue) returns() +func (_IPTokenStaking *IPTokenStakingTransactor) SetMinCommissionRate(opts *bind.TransactOpts, newValue *big.Int) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "setMinCommissionRate", newValue) +} + +// SetMinCommissionRate is a paid mutator transaction binding the contract method 0xab8870f6. +// +// Solidity: function setMinCommissionRate(uint256 newValue) returns() +func (_IPTokenStaking *IPTokenStakingSession) SetMinCommissionRate(newValue *big.Int) (*types.Transaction, error) { + return _IPTokenStaking.Contract.SetMinCommissionRate(&_IPTokenStaking.TransactOpts, newValue) +} + +// SetMinCommissionRate is a paid mutator transaction binding the contract method 0xab8870f6. +// +// Solidity: function setMinCommissionRate(uint256 newValue) returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) SetMinCommissionRate(newValue *big.Int) (*types.Transaction, error) { + return _IPTokenStaking.Contract.SetMinCommissionRate(&_IPTokenStaking.TransactOpts, newValue) +} + +// SetMinStakeAmount is a paid mutator transaction binding the contract method 0xeb4af045. +// +// Solidity: function setMinStakeAmount(uint256 newMinStakeAmount) returns() +func (_IPTokenStaking *IPTokenStakingTransactor) SetMinStakeAmount(opts *bind.TransactOpts, newMinStakeAmount *big.Int) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "setMinStakeAmount", newMinStakeAmount) +} + +// SetMinStakeAmount is a paid mutator transaction binding the contract method 0xeb4af045. +// +// Solidity: function setMinStakeAmount(uint256 newMinStakeAmount) returns() +func (_IPTokenStaking *IPTokenStakingSession) SetMinStakeAmount(newMinStakeAmount *big.Int) (*types.Transaction, error) { + return _IPTokenStaking.Contract.SetMinStakeAmount(&_IPTokenStaking.TransactOpts, newMinStakeAmount) +} + +// SetMinStakeAmount is a paid mutator transaction binding the contract method 0xeb4af045. +// +// Solidity: function setMinStakeAmount(uint256 newMinStakeAmount) returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) SetMinStakeAmount(newMinStakeAmount *big.Int) (*types.Transaction, error) { + return _IPTokenStaking.Contract.SetMinStakeAmount(&_IPTokenStaking.TransactOpts, newMinStakeAmount) +} + +// SetMinUnstakeAmount is a paid mutator transaction binding the contract method 0x6ea3a228. +// +// Solidity: function setMinUnstakeAmount(uint256 newMinUnstakeAmount) returns() +func (_IPTokenStaking *IPTokenStakingTransactor) SetMinUnstakeAmount(opts *bind.TransactOpts, newMinUnstakeAmount *big.Int) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "setMinUnstakeAmount", newMinUnstakeAmount) +} + +// SetMinUnstakeAmount is a paid mutator transaction binding the contract method 0x6ea3a228. +// +// Solidity: function setMinUnstakeAmount(uint256 newMinUnstakeAmount) returns() +func (_IPTokenStaking *IPTokenStakingSession) SetMinUnstakeAmount(newMinUnstakeAmount *big.Int) (*types.Transaction, error) { + return _IPTokenStaking.Contract.SetMinUnstakeAmount(&_IPTokenStaking.TransactOpts, newMinUnstakeAmount) +} + +// SetMinUnstakeAmount is a paid mutator transaction binding the contract method 0x6ea3a228. +// +// Solidity: function setMinUnstakeAmount(uint256 newMinUnstakeAmount) returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) SetMinUnstakeAmount(newMinUnstakeAmount *big.Int) (*types.Transaction, error) { + return _IPTokenStaking.Contract.SetMinUnstakeAmount(&_IPTokenStaking.TransactOpts, newMinUnstakeAmount) +} + +// SetOperator is a paid mutator transaction binding the contract method 0x561edf7e. +// +// Solidity: function setOperator(bytes uncmpPubkey, address operator) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactor) SetOperator(opts *bind.TransactOpts, uncmpPubkey []byte, operator common.Address) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "setOperator", uncmpPubkey, operator) +} + +// SetOperator is a paid mutator transaction binding the contract method 0x561edf7e. +// +// Solidity: function setOperator(bytes uncmpPubkey, address operator) payable returns() +func (_IPTokenStaking *IPTokenStakingSession) SetOperator(uncmpPubkey []byte, operator common.Address) (*types.Transaction, error) { + return _IPTokenStaking.Contract.SetOperator(&_IPTokenStaking.TransactOpts, uncmpPubkey, operator) +} + +// SetOperator is a paid mutator transaction binding the contract method 0x561edf7e. +// +// Solidity: function setOperator(bytes uncmpPubkey, address operator) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) SetOperator(uncmpPubkey []byte, operator common.Address) (*types.Transaction, error) { + return _IPTokenStaking.Contract.SetOperator(&_IPTokenStaking.TransactOpts, uncmpPubkey, operator) +} + +// SetRewardsAddress is a paid mutator transaction binding the contract method 0x9d04b121. +// +// Solidity: function setRewardsAddress(bytes delegatorUncmpPubkey, address newRewardsAddress) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactor) SetRewardsAddress(opts *bind.TransactOpts, delegatorUncmpPubkey []byte, newRewardsAddress common.Address) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "setRewardsAddress", delegatorUncmpPubkey, newRewardsAddress) +} + +// SetRewardsAddress is a paid mutator transaction binding the contract method 0x9d04b121. +// +// Solidity: function setRewardsAddress(bytes delegatorUncmpPubkey, address newRewardsAddress) payable returns() +func (_IPTokenStaking *IPTokenStakingSession) SetRewardsAddress(delegatorUncmpPubkey []byte, newRewardsAddress common.Address) (*types.Transaction, error) { + return _IPTokenStaking.Contract.SetRewardsAddress(&_IPTokenStaking.TransactOpts, delegatorUncmpPubkey, newRewardsAddress) +} + +// SetRewardsAddress is a paid mutator transaction binding the contract method 0x9d04b121. +// +// Solidity: function setRewardsAddress(bytes delegatorUncmpPubkey, address newRewardsAddress) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) SetRewardsAddress(delegatorUncmpPubkey []byte, newRewardsAddress common.Address) (*types.Transaction, error) { + return _IPTokenStaking.Contract.SetRewardsAddress(&_IPTokenStaking.TransactOpts, delegatorUncmpPubkey, newRewardsAddress) +} + +// SetWithdrawalAddress is a paid mutator transaction binding the contract method 0x787f82c8. +// +// Solidity: function setWithdrawalAddress(bytes delegatorUncmpPubkey, address newWithdrawalAddress) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactor) SetWithdrawalAddress(opts *bind.TransactOpts, delegatorUncmpPubkey []byte, newWithdrawalAddress common.Address) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "setWithdrawalAddress", delegatorUncmpPubkey, newWithdrawalAddress) +} + +// SetWithdrawalAddress is a paid mutator transaction binding the contract method 0x787f82c8. +// +// Solidity: function setWithdrawalAddress(bytes delegatorUncmpPubkey, address newWithdrawalAddress) payable returns() +func (_IPTokenStaking *IPTokenStakingSession) SetWithdrawalAddress(delegatorUncmpPubkey []byte, newWithdrawalAddress common.Address) (*types.Transaction, error) { + return _IPTokenStaking.Contract.SetWithdrawalAddress(&_IPTokenStaking.TransactOpts, delegatorUncmpPubkey, newWithdrawalAddress) +} + +// SetWithdrawalAddress is a paid mutator transaction binding the contract method 0x787f82c8. +// +// Solidity: function setWithdrawalAddress(bytes delegatorUncmpPubkey, address newWithdrawalAddress) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) SetWithdrawalAddress(delegatorUncmpPubkey []byte, newWithdrawalAddress common.Address) (*types.Transaction, error) { + return _IPTokenStaking.Contract.SetWithdrawalAddress(&_IPTokenStaking.TransactOpts, delegatorUncmpPubkey, newWithdrawalAddress) +} + +// Stake is a paid mutator transaction binding the contract method 0x3dd9fb9a. +// +// Solidity: function stake(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint8 stakingPeriod, bytes data) payable returns(uint256 delegationId) +func (_IPTokenStaking *IPTokenStakingTransactor) Stake(opts *bind.TransactOpts, delegatorUncmpPubkey []byte, validatorUncmpPubkey []byte, stakingPeriod uint8, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "stake", delegatorUncmpPubkey, validatorUncmpPubkey, stakingPeriod, data) +} + +// Stake is a paid mutator transaction binding the contract method 0x3dd9fb9a. +// +// Solidity: function stake(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint8 stakingPeriod, bytes data) payable returns(uint256 delegationId) +func (_IPTokenStaking *IPTokenStakingSession) Stake(delegatorUncmpPubkey []byte, validatorUncmpPubkey []byte, stakingPeriod uint8, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.Contract.Stake(&_IPTokenStaking.TransactOpts, delegatorUncmpPubkey, validatorUncmpPubkey, stakingPeriod, data) +} + +// Stake is a paid mutator transaction binding the contract method 0x3dd9fb9a. +// +// Solidity: function stake(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint8 stakingPeriod, bytes data) payable returns(uint256 delegationId) +func (_IPTokenStaking *IPTokenStakingTransactorSession) Stake(delegatorUncmpPubkey []byte, validatorUncmpPubkey []byte, stakingPeriod uint8, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.Contract.Stake(&_IPTokenStaking.TransactOpts, delegatorUncmpPubkey, validatorUncmpPubkey, stakingPeriod, data) +} + +// StakeOnBehalf is a paid mutator transaction binding the contract method 0xa0284f16. +// +// Solidity: function stakeOnBehalf(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint8 stakingPeriod, bytes data) payable returns(uint256 delegationId) +func (_IPTokenStaking *IPTokenStakingTransactor) StakeOnBehalf(opts *bind.TransactOpts, delegatorUncmpPubkey []byte, validatorUncmpPubkey []byte, stakingPeriod uint8, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "stakeOnBehalf", delegatorUncmpPubkey, validatorUncmpPubkey, stakingPeriod, data) +} + +// StakeOnBehalf is a paid mutator transaction binding the contract method 0xa0284f16. +// +// Solidity: function stakeOnBehalf(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint8 stakingPeriod, bytes data) payable returns(uint256 delegationId) +func (_IPTokenStaking *IPTokenStakingSession) StakeOnBehalf(delegatorUncmpPubkey []byte, validatorUncmpPubkey []byte, stakingPeriod uint8, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.Contract.StakeOnBehalf(&_IPTokenStaking.TransactOpts, delegatorUncmpPubkey, validatorUncmpPubkey, stakingPeriod, data) +} + +// StakeOnBehalf is a paid mutator transaction binding the contract method 0xa0284f16. +// +// Solidity: function stakeOnBehalf(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint8 stakingPeriod, bytes data) payable returns(uint256 delegationId) +func (_IPTokenStaking *IPTokenStakingTransactorSession) StakeOnBehalf(delegatorUncmpPubkey []byte, validatorUncmpPubkey []byte, stakingPeriod uint8, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.Contract.StakeOnBehalf(&_IPTokenStaking.TransactOpts, delegatorUncmpPubkey, validatorUncmpPubkey, stakingPeriod, data) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_IPTokenStaking *IPTokenStakingTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_IPTokenStaking *IPTokenStakingSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _IPTokenStaking.Contract.TransferOwnership(&_IPTokenStaking.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _IPTokenStaking.Contract.TransferOwnership(&_IPTokenStaking.TransactOpts, newOwner) +} + +// Unjail is a paid mutator transaction binding the contract method 0x8ed65fbc. +// +// Solidity: function unjail(bytes validatorUncmpPubkey, bytes data) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactor) Unjail(opts *bind.TransactOpts, validatorUncmpPubkey []byte, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "unjail", validatorUncmpPubkey, data) +} + +// Unjail is a paid mutator transaction binding the contract method 0x8ed65fbc. +// +// Solidity: function unjail(bytes validatorUncmpPubkey, bytes data) payable returns() +func (_IPTokenStaking *IPTokenStakingSession) Unjail(validatorUncmpPubkey []byte, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.Contract.Unjail(&_IPTokenStaking.TransactOpts, validatorUncmpPubkey, data) +} + +// Unjail is a paid mutator transaction binding the contract method 0x8ed65fbc. +// +// Solidity: function unjail(bytes validatorUncmpPubkey, bytes data) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) Unjail(validatorUncmpPubkey []byte, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.Contract.Unjail(&_IPTokenStaking.TransactOpts, validatorUncmpPubkey, data) +} + +// UnjailOnBehalf is a paid mutator transaction binding the contract method 0x86eb5e48. +// +// Solidity: function unjailOnBehalf(bytes validatorUncmpPubkey, bytes data) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactor) UnjailOnBehalf(opts *bind.TransactOpts, validatorUncmpPubkey []byte, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "unjailOnBehalf", validatorUncmpPubkey, data) +} + +// UnjailOnBehalf is a paid mutator transaction binding the contract method 0x86eb5e48. +// +// Solidity: function unjailOnBehalf(bytes validatorUncmpPubkey, bytes data) payable returns() +func (_IPTokenStaking *IPTokenStakingSession) UnjailOnBehalf(validatorUncmpPubkey []byte, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.Contract.UnjailOnBehalf(&_IPTokenStaking.TransactOpts, validatorUncmpPubkey, data) +} + +// UnjailOnBehalf is a paid mutator transaction binding the contract method 0x86eb5e48. +// +// Solidity: function unjailOnBehalf(bytes validatorUncmpPubkey, bytes data) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) UnjailOnBehalf(validatorUncmpPubkey []byte, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.Contract.UnjailOnBehalf(&_IPTokenStaking.TransactOpts, validatorUncmpPubkey, data) +} + +// UnsetOperator is a paid mutator transaction binding the contract method 0x98d730a2. +// +// Solidity: function unsetOperator(bytes uncmpPubkey) returns() +func (_IPTokenStaking *IPTokenStakingTransactor) UnsetOperator(opts *bind.TransactOpts, uncmpPubkey []byte) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "unsetOperator", uncmpPubkey) +} + +// UnsetOperator is a paid mutator transaction binding the contract method 0x98d730a2. +// +// Solidity: function unsetOperator(bytes uncmpPubkey) returns() +func (_IPTokenStaking *IPTokenStakingSession) UnsetOperator(uncmpPubkey []byte) (*types.Transaction, error) { + return _IPTokenStaking.Contract.UnsetOperator(&_IPTokenStaking.TransactOpts, uncmpPubkey) +} + +// UnsetOperator is a paid mutator transaction binding the contract method 0x98d730a2. +// +// Solidity: function unsetOperator(bytes uncmpPubkey) returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) UnsetOperator(uncmpPubkey []byte) (*types.Transaction, error) { + return _IPTokenStaking.Contract.UnsetOperator(&_IPTokenStaking.TransactOpts, uncmpPubkey) +} + +// Unstake is a paid mutator transaction binding the contract method 0xb2bc29ef. +// +// Solidity: function unstake(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint256 delegationId, uint256 amount, bytes data) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactor) Unstake(opts *bind.TransactOpts, delegatorUncmpPubkey []byte, validatorUncmpPubkey []byte, delegationId *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "unstake", delegatorUncmpPubkey, validatorUncmpPubkey, delegationId, amount, data) +} + +// Unstake is a paid mutator transaction binding the contract method 0xb2bc29ef. +// +// Solidity: function unstake(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint256 delegationId, uint256 amount, bytes data) payable returns() +func (_IPTokenStaking *IPTokenStakingSession) Unstake(delegatorUncmpPubkey []byte, validatorUncmpPubkey []byte, delegationId *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.Contract.Unstake(&_IPTokenStaking.TransactOpts, delegatorUncmpPubkey, validatorUncmpPubkey, delegationId, amount, data) +} + +// Unstake is a paid mutator transaction binding the contract method 0xb2bc29ef. +// +// Solidity: function unstake(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint256 delegationId, uint256 amount, bytes data) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) Unstake(delegatorUncmpPubkey []byte, validatorUncmpPubkey []byte, delegationId *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.Contract.Unstake(&_IPTokenStaking.TransactOpts, delegatorUncmpPubkey, validatorUncmpPubkey, delegationId, amount, data) +} + +// UnstakeOnBehalf is a paid mutator transaction binding the contract method 0x014e8178. +// +// Solidity: function unstakeOnBehalf(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint256 delegationId, uint256 amount, bytes data) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactor) UnstakeOnBehalf(opts *bind.TransactOpts, delegatorUncmpPubkey []byte, validatorUncmpPubkey []byte, delegationId *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "unstakeOnBehalf", delegatorUncmpPubkey, validatorUncmpPubkey, delegationId, amount, data) +} + +// UnstakeOnBehalf is a paid mutator transaction binding the contract method 0x014e8178. +// +// Solidity: function unstakeOnBehalf(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint256 delegationId, uint256 amount, bytes data) payable returns() +func (_IPTokenStaking *IPTokenStakingSession) UnstakeOnBehalf(delegatorUncmpPubkey []byte, validatorUncmpPubkey []byte, delegationId *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.Contract.UnstakeOnBehalf(&_IPTokenStaking.TransactOpts, delegatorUncmpPubkey, validatorUncmpPubkey, delegationId, amount, data) +} + +// UnstakeOnBehalf is a paid mutator transaction binding the contract method 0x014e8178. +// +// Solidity: function unstakeOnBehalf(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint256 delegationId, uint256 amount, bytes data) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) UnstakeOnBehalf(delegatorUncmpPubkey []byte, validatorUncmpPubkey []byte, delegationId *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _IPTokenStaking.Contract.UnstakeOnBehalf(&_IPTokenStaking.TransactOpts, delegatorUncmpPubkey, validatorUncmpPubkey, delegationId, amount, data) +} + +// UpdateValidatorCommission is a paid mutator transaction binding the contract method 0xc582db44. +// +// Solidity: function updateValidatorCommission(bytes validatorUncmpPubkey, uint32 commissionRate) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactor) UpdateValidatorCommission(opts *bind.TransactOpts, validatorUncmpPubkey []byte, commissionRate uint32) (*types.Transaction, error) { + return _IPTokenStaking.contract.Transact(opts, "updateValidatorCommission", validatorUncmpPubkey, commissionRate) +} + +// UpdateValidatorCommission is a paid mutator transaction binding the contract method 0xc582db44. +// +// Solidity: function updateValidatorCommission(bytes validatorUncmpPubkey, uint32 commissionRate) payable returns() +func (_IPTokenStaking *IPTokenStakingSession) UpdateValidatorCommission(validatorUncmpPubkey []byte, commissionRate uint32) (*types.Transaction, error) { + return _IPTokenStaking.Contract.UpdateValidatorCommission(&_IPTokenStaking.TransactOpts, validatorUncmpPubkey, commissionRate) +} + +// UpdateValidatorCommission is a paid mutator transaction binding the contract method 0xc582db44. +// +// Solidity: function updateValidatorCommission(bytes validatorUncmpPubkey, uint32 commissionRate) payable returns() +func (_IPTokenStaking *IPTokenStakingTransactorSession) UpdateValidatorCommission(validatorUncmpPubkey []byte, commissionRate uint32) (*types.Transaction, error) { + return _IPTokenStaking.Contract.UpdateValidatorCommission(&_IPTokenStaking.TransactOpts, validatorUncmpPubkey, commissionRate) +} + +// IPTokenStakingCreateValidatorIterator is returned from FilterCreateValidator and is used to iterate over the raw logs and unpacked data for CreateValidator events raised by the IPTokenStaking contract. +type IPTokenStakingCreateValidatorIterator struct { + Event *IPTokenStakingCreateValidator // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPTokenStakingCreateValidatorIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingCreateValidator) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingCreateValidator) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPTokenStakingCreateValidatorIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPTokenStakingCreateValidatorIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPTokenStakingCreateValidator represents a CreateValidator event raised by the IPTokenStaking contract. +type IPTokenStakingCreateValidator struct { + ValidatorUncmpPubkey []byte + Moniker string + StakeAmount *big.Int + CommissionRate uint32 + MaxCommissionRate uint32 + MaxCommissionChangeRate uint32 + SupportsUnlocked uint8 + OperatorAddress common.Address + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCreateValidator is a free log retrieval operation binding the contract event 0x65bfc2fa1cd4c6f50f60983ad1cf1cb4bff5ee6570428254dfce41b085ef6d14. +// +// Solidity: event CreateValidator(bytes validatorUncmpPubkey, string moniker, uint256 stakeAmount, uint32 commissionRate, uint32 maxCommissionRate, uint32 maxCommissionChangeRate, uint8 supportsUnlocked, address operatorAddress, bytes data) +func (_IPTokenStaking *IPTokenStakingFilterer) FilterCreateValidator(opts *bind.FilterOpts) (*IPTokenStakingCreateValidatorIterator, error) { + + logs, sub, err := _IPTokenStaking.contract.FilterLogs(opts, "CreateValidator") + if err != nil { + return nil, err + } + return &IPTokenStakingCreateValidatorIterator{contract: _IPTokenStaking.contract, event: "CreateValidator", logs: logs, sub: sub}, nil +} + +// WatchCreateValidator is a free log subscription operation binding the contract event 0x65bfc2fa1cd4c6f50f60983ad1cf1cb4bff5ee6570428254dfce41b085ef6d14. +// +// Solidity: event CreateValidator(bytes validatorUncmpPubkey, string moniker, uint256 stakeAmount, uint32 commissionRate, uint32 maxCommissionRate, uint32 maxCommissionChangeRate, uint8 supportsUnlocked, address operatorAddress, bytes data) +func (_IPTokenStaking *IPTokenStakingFilterer) WatchCreateValidator(opts *bind.WatchOpts, sink chan<- *IPTokenStakingCreateValidator) (event.Subscription, error) { + + logs, sub, err := _IPTokenStaking.contract.WatchLogs(opts, "CreateValidator") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPTokenStakingCreateValidator) + if err := _IPTokenStaking.contract.UnpackLog(event, "CreateValidator", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCreateValidator is a log parse operation binding the contract event 0x65bfc2fa1cd4c6f50f60983ad1cf1cb4bff5ee6570428254dfce41b085ef6d14. +// +// Solidity: event CreateValidator(bytes validatorUncmpPubkey, string moniker, uint256 stakeAmount, uint32 commissionRate, uint32 maxCommissionRate, uint32 maxCommissionChangeRate, uint8 supportsUnlocked, address operatorAddress, bytes data) +func (_IPTokenStaking *IPTokenStakingFilterer) ParseCreateValidator(log types.Log) (*IPTokenStakingCreateValidator, error) { + event := new(IPTokenStakingCreateValidator) + if err := _IPTokenStaking.contract.UnpackLog(event, "CreateValidator", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPTokenStakingDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the IPTokenStaking contract. +type IPTokenStakingDepositIterator struct { + Event *IPTokenStakingDeposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPTokenStakingDepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingDeposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPTokenStakingDepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPTokenStakingDepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPTokenStakingDeposit represents a Deposit event raised by the IPTokenStaking contract. +type IPTokenStakingDeposit struct { + DelegatorUncmpPubkey []byte + ValidatorUncmpPubkey []byte + StakeAmount *big.Int + StakingPeriod *big.Int + DelegationId *big.Int + OperatorAddress common.Address + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0x269a32ff589c9b701f49ab6aa532ee8f55901df71a7fca2d70dc9f45314f1be3. +// +// Solidity: event Deposit(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint256 stakeAmount, uint256 stakingPeriod, uint256 delegationId, address operatorAddress, bytes data) +func (_IPTokenStaking *IPTokenStakingFilterer) FilterDeposit(opts *bind.FilterOpts) (*IPTokenStakingDepositIterator, error) { + + logs, sub, err := _IPTokenStaking.contract.FilterLogs(opts, "Deposit") + if err != nil { + return nil, err + } + return &IPTokenStakingDepositIterator{contract: _IPTokenStaking.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x269a32ff589c9b701f49ab6aa532ee8f55901df71a7fca2d70dc9f45314f1be3. +// +// Solidity: event Deposit(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint256 stakeAmount, uint256 stakingPeriod, uint256 delegationId, address operatorAddress, bytes data) +func (_IPTokenStaking *IPTokenStakingFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *IPTokenStakingDeposit) (event.Subscription, error) { + + logs, sub, err := _IPTokenStaking.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(IPTokenStakingDeposit) + if err := _IPTokenStaking.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 0x269a32ff589c9b701f49ab6aa532ee8f55901df71a7fca2d70dc9f45314f1be3. +// +// Solidity: event Deposit(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint256 stakeAmount, uint256 stakingPeriod, uint256 delegationId, address operatorAddress, bytes data) +func (_IPTokenStaking *IPTokenStakingFilterer) ParseDeposit(log types.Log) (*IPTokenStakingDeposit, error) { + event := new(IPTokenStakingDeposit) + if err := _IPTokenStaking.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPTokenStakingFeeSetIterator is returned from FilterFeeSet and is used to iterate over the raw logs and unpacked data for FeeSet events raised by the IPTokenStaking contract. +type IPTokenStakingFeeSetIterator struct { + Event *IPTokenStakingFeeSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPTokenStakingFeeSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingFeeSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingFeeSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPTokenStakingFeeSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPTokenStakingFeeSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPTokenStakingFeeSet represents a FeeSet event raised by the IPTokenStaking contract. +type IPTokenStakingFeeSet struct { + NewFee *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterFeeSet is a free log retrieval operation binding the contract event 0x20461e09b8e557b77e107939f9ce6544698123aad0fc964ac5cc59b7df2e608f. +// +// Solidity: event FeeSet(uint256 newFee) +func (_IPTokenStaking *IPTokenStakingFilterer) FilterFeeSet(opts *bind.FilterOpts) (*IPTokenStakingFeeSetIterator, error) { + + logs, sub, err := _IPTokenStaking.contract.FilterLogs(opts, "FeeSet") + if err != nil { + return nil, err + } + return &IPTokenStakingFeeSetIterator{contract: _IPTokenStaking.contract, event: "FeeSet", logs: logs, sub: sub}, nil +} + +// WatchFeeSet is a free log subscription operation binding the contract event 0x20461e09b8e557b77e107939f9ce6544698123aad0fc964ac5cc59b7df2e608f. +// +// Solidity: event FeeSet(uint256 newFee) +func (_IPTokenStaking *IPTokenStakingFilterer) WatchFeeSet(opts *bind.WatchOpts, sink chan<- *IPTokenStakingFeeSet) (event.Subscription, error) { + + logs, sub, err := _IPTokenStaking.contract.WatchLogs(opts, "FeeSet") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPTokenStakingFeeSet) + if err := _IPTokenStaking.contract.UnpackLog(event, "FeeSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseFeeSet is a log parse operation binding the contract event 0x20461e09b8e557b77e107939f9ce6544698123aad0fc964ac5cc59b7df2e608f. +// +// Solidity: event FeeSet(uint256 newFee) +func (_IPTokenStaking *IPTokenStakingFilterer) ParseFeeSet(log types.Log) (*IPTokenStakingFeeSet, error) { + event := new(IPTokenStakingFeeSet) + if err := _IPTokenStaking.contract.UnpackLog(event, "FeeSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPTokenStakingInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the IPTokenStaking contract. +type IPTokenStakingInitializedIterator struct { + Event *IPTokenStakingInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPTokenStakingInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPTokenStakingInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPTokenStakingInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPTokenStakingInitialized represents a Initialized event raised by the IPTokenStaking contract. +type IPTokenStakingInitialized 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 (_IPTokenStaking *IPTokenStakingFilterer) FilterInitialized(opts *bind.FilterOpts) (*IPTokenStakingInitializedIterator, error) { + + logs, sub, err := _IPTokenStaking.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &IPTokenStakingInitializedIterator{contract: _IPTokenStaking.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 (_IPTokenStaking *IPTokenStakingFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *IPTokenStakingInitialized) (event.Subscription, error) { + + logs, sub, err := _IPTokenStaking.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(IPTokenStakingInitialized) + if err := _IPTokenStaking.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 (_IPTokenStaking *IPTokenStakingFilterer) ParseInitialized(log types.Log) (*IPTokenStakingInitialized, error) { + event := new(IPTokenStakingInitialized) + if err := _IPTokenStaking.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPTokenStakingMinCommissionRateChangedIterator is returned from FilterMinCommissionRateChanged and is used to iterate over the raw logs and unpacked data for MinCommissionRateChanged events raised by the IPTokenStaking contract. +type IPTokenStakingMinCommissionRateChangedIterator struct { + Event *IPTokenStakingMinCommissionRateChanged // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPTokenStakingMinCommissionRateChangedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingMinCommissionRateChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingMinCommissionRateChanged) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPTokenStakingMinCommissionRateChangedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPTokenStakingMinCommissionRateChangedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPTokenStakingMinCommissionRateChanged represents a MinCommissionRateChanged event raised by the IPTokenStaking contract. +type IPTokenStakingMinCommissionRateChanged struct { + MinCommissionRate *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMinCommissionRateChanged is a free log retrieval operation binding the contract event 0x4167b1de65292a9ff628c9136823791a1de701e1fbdda4863ce22a1cfaf4d0f7. +// +// Solidity: event MinCommissionRateChanged(uint256 minCommissionRate) +func (_IPTokenStaking *IPTokenStakingFilterer) FilterMinCommissionRateChanged(opts *bind.FilterOpts) (*IPTokenStakingMinCommissionRateChangedIterator, error) { + + logs, sub, err := _IPTokenStaking.contract.FilterLogs(opts, "MinCommissionRateChanged") + if err != nil { + return nil, err + } + return &IPTokenStakingMinCommissionRateChangedIterator{contract: _IPTokenStaking.contract, event: "MinCommissionRateChanged", logs: logs, sub: sub}, nil +} + +// WatchMinCommissionRateChanged is a free log subscription operation binding the contract event 0x4167b1de65292a9ff628c9136823791a1de701e1fbdda4863ce22a1cfaf4d0f7. +// +// Solidity: event MinCommissionRateChanged(uint256 minCommissionRate) +func (_IPTokenStaking *IPTokenStakingFilterer) WatchMinCommissionRateChanged(opts *bind.WatchOpts, sink chan<- *IPTokenStakingMinCommissionRateChanged) (event.Subscription, error) { + + logs, sub, err := _IPTokenStaking.contract.WatchLogs(opts, "MinCommissionRateChanged") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPTokenStakingMinCommissionRateChanged) + if err := _IPTokenStaking.contract.UnpackLog(event, "MinCommissionRateChanged", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMinCommissionRateChanged is a log parse operation binding the contract event 0x4167b1de65292a9ff628c9136823791a1de701e1fbdda4863ce22a1cfaf4d0f7. +// +// Solidity: event MinCommissionRateChanged(uint256 minCommissionRate) +func (_IPTokenStaking *IPTokenStakingFilterer) ParseMinCommissionRateChanged(log types.Log) (*IPTokenStakingMinCommissionRateChanged, error) { + event := new(IPTokenStakingMinCommissionRateChanged) + if err := _IPTokenStaking.contract.UnpackLog(event, "MinCommissionRateChanged", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPTokenStakingMinStakeAmountSetIterator is returned from FilterMinStakeAmountSet and is used to iterate over the raw logs and unpacked data for MinStakeAmountSet events raised by the IPTokenStaking contract. +type IPTokenStakingMinStakeAmountSetIterator struct { + Event *IPTokenStakingMinStakeAmountSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPTokenStakingMinStakeAmountSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingMinStakeAmountSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingMinStakeAmountSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPTokenStakingMinStakeAmountSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPTokenStakingMinStakeAmountSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPTokenStakingMinStakeAmountSet represents a MinStakeAmountSet event raised by the IPTokenStaking contract. +type IPTokenStakingMinStakeAmountSet struct { + MinStakeAmount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMinStakeAmountSet is a free log retrieval operation binding the contract event 0xea095c2fea861b87f0fd54d0d4453358692a527e120df22b62c71696247dfb9f. +// +// Solidity: event MinStakeAmountSet(uint256 minStakeAmount) +func (_IPTokenStaking *IPTokenStakingFilterer) FilterMinStakeAmountSet(opts *bind.FilterOpts) (*IPTokenStakingMinStakeAmountSetIterator, error) { + + logs, sub, err := _IPTokenStaking.contract.FilterLogs(opts, "MinStakeAmountSet") + if err != nil { + return nil, err + } + return &IPTokenStakingMinStakeAmountSetIterator{contract: _IPTokenStaking.contract, event: "MinStakeAmountSet", logs: logs, sub: sub}, nil +} + +// WatchMinStakeAmountSet is a free log subscription operation binding the contract event 0xea095c2fea861b87f0fd54d0d4453358692a527e120df22b62c71696247dfb9f. +// +// Solidity: event MinStakeAmountSet(uint256 minStakeAmount) +func (_IPTokenStaking *IPTokenStakingFilterer) WatchMinStakeAmountSet(opts *bind.WatchOpts, sink chan<- *IPTokenStakingMinStakeAmountSet) (event.Subscription, error) { + + logs, sub, err := _IPTokenStaking.contract.WatchLogs(opts, "MinStakeAmountSet") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPTokenStakingMinStakeAmountSet) + if err := _IPTokenStaking.contract.UnpackLog(event, "MinStakeAmountSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMinStakeAmountSet is a log parse operation binding the contract event 0xea095c2fea861b87f0fd54d0d4453358692a527e120df22b62c71696247dfb9f. +// +// Solidity: event MinStakeAmountSet(uint256 minStakeAmount) +func (_IPTokenStaking *IPTokenStakingFilterer) ParseMinStakeAmountSet(log types.Log) (*IPTokenStakingMinStakeAmountSet, error) { + event := new(IPTokenStakingMinStakeAmountSet) + if err := _IPTokenStaking.contract.UnpackLog(event, "MinStakeAmountSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPTokenStakingMinUnstakeAmountSetIterator is returned from FilterMinUnstakeAmountSet and is used to iterate over the raw logs and unpacked data for MinUnstakeAmountSet events raised by the IPTokenStaking contract. +type IPTokenStakingMinUnstakeAmountSetIterator struct { + Event *IPTokenStakingMinUnstakeAmountSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPTokenStakingMinUnstakeAmountSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingMinUnstakeAmountSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingMinUnstakeAmountSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPTokenStakingMinUnstakeAmountSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPTokenStakingMinUnstakeAmountSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPTokenStakingMinUnstakeAmountSet represents a MinUnstakeAmountSet event raised by the IPTokenStaking contract. +type IPTokenStakingMinUnstakeAmountSet struct { + MinUnstakeAmount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMinUnstakeAmountSet is a free log retrieval operation binding the contract event 0xf93d77980ae5a1ddd008d6a7f02cbee5af2a4fcea850c4b55828de4f644e589f. +// +// Solidity: event MinUnstakeAmountSet(uint256 minUnstakeAmount) +func (_IPTokenStaking *IPTokenStakingFilterer) FilterMinUnstakeAmountSet(opts *bind.FilterOpts) (*IPTokenStakingMinUnstakeAmountSetIterator, error) { + + logs, sub, err := _IPTokenStaking.contract.FilterLogs(opts, "MinUnstakeAmountSet") + if err != nil { + return nil, err + } + return &IPTokenStakingMinUnstakeAmountSetIterator{contract: _IPTokenStaking.contract, event: "MinUnstakeAmountSet", logs: logs, sub: sub}, nil +} + +// WatchMinUnstakeAmountSet is a free log subscription operation binding the contract event 0xf93d77980ae5a1ddd008d6a7f02cbee5af2a4fcea850c4b55828de4f644e589f. +// +// Solidity: event MinUnstakeAmountSet(uint256 minUnstakeAmount) +func (_IPTokenStaking *IPTokenStakingFilterer) WatchMinUnstakeAmountSet(opts *bind.WatchOpts, sink chan<- *IPTokenStakingMinUnstakeAmountSet) (event.Subscription, error) { + + logs, sub, err := _IPTokenStaking.contract.WatchLogs(opts, "MinUnstakeAmountSet") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPTokenStakingMinUnstakeAmountSet) + if err := _IPTokenStaking.contract.UnpackLog(event, "MinUnstakeAmountSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMinUnstakeAmountSet is a log parse operation binding the contract event 0xf93d77980ae5a1ddd008d6a7f02cbee5af2a4fcea850c4b55828de4f644e589f. +// +// Solidity: event MinUnstakeAmountSet(uint256 minUnstakeAmount) +func (_IPTokenStaking *IPTokenStakingFilterer) ParseMinUnstakeAmountSet(log types.Log) (*IPTokenStakingMinUnstakeAmountSet, error) { + event := new(IPTokenStakingMinUnstakeAmountSet) + if err := _IPTokenStaking.contract.UnpackLog(event, "MinUnstakeAmountSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPTokenStakingOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the IPTokenStaking contract. +type IPTokenStakingOwnershipTransferStartedIterator struct { + Event *IPTokenStakingOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPTokenStakingOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPTokenStakingOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPTokenStakingOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPTokenStakingOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the IPTokenStaking contract. +type IPTokenStakingOwnershipTransferStarted 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 (_IPTokenStaking *IPTokenStakingFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*IPTokenStakingOwnershipTransferStartedIterator, 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 := _IPTokenStaking.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &IPTokenStakingOwnershipTransferStartedIterator{contract: _IPTokenStaking.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 (_IPTokenStaking *IPTokenStakingFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *IPTokenStakingOwnershipTransferStarted, 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 := _IPTokenStaking.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(IPTokenStakingOwnershipTransferStarted) + if err := _IPTokenStaking.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 (_IPTokenStaking *IPTokenStakingFilterer) ParseOwnershipTransferStarted(log types.Log) (*IPTokenStakingOwnershipTransferStarted, error) { + event := new(IPTokenStakingOwnershipTransferStarted) + if err := _IPTokenStaking.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPTokenStakingOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the IPTokenStaking contract. +type IPTokenStakingOwnershipTransferredIterator struct { + Event *IPTokenStakingOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPTokenStakingOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPTokenStakingOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPTokenStakingOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPTokenStakingOwnershipTransferred represents a OwnershipTransferred event raised by the IPTokenStaking contract. +type IPTokenStakingOwnershipTransferred 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 (_IPTokenStaking *IPTokenStakingFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*IPTokenStakingOwnershipTransferredIterator, 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 := _IPTokenStaking.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &IPTokenStakingOwnershipTransferredIterator{contract: _IPTokenStaking.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 (_IPTokenStaking *IPTokenStakingFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *IPTokenStakingOwnershipTransferred, 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 := _IPTokenStaking.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(IPTokenStakingOwnershipTransferred) + if err := _IPTokenStaking.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 (_IPTokenStaking *IPTokenStakingFilterer) ParseOwnershipTransferred(log types.Log) (*IPTokenStakingOwnershipTransferred, error) { + event := new(IPTokenStakingOwnershipTransferred) + if err := _IPTokenStaking.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPTokenStakingRedelegateIterator is returned from FilterRedelegate and is used to iterate over the raw logs and unpacked data for Redelegate events raised by the IPTokenStaking contract. +type IPTokenStakingRedelegateIterator struct { + Event *IPTokenStakingRedelegate // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPTokenStakingRedelegateIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingRedelegate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingRedelegate) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPTokenStakingRedelegateIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPTokenStakingRedelegateIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPTokenStakingRedelegate represents a Redelegate event raised by the IPTokenStaking contract. +type IPTokenStakingRedelegate struct { + DelegatorUncmpPubkey []byte + ValidatorUncmpSrcPubkey []byte + ValidatorUncmpDstPubkey []byte + DelegationId *big.Int + OperatorAddress common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRedelegate is a free log retrieval operation binding the contract event 0x210091050fbe3add6ade45436b6c7aed210ef28fc37e1a1775970fc391272fe8. +// +// Solidity: event Redelegate(bytes delegatorUncmpPubkey, bytes validatorUncmpSrcPubkey, bytes validatorUncmpDstPubkey, uint256 delegationId, address operatorAddress, uint256 amount) +func (_IPTokenStaking *IPTokenStakingFilterer) FilterRedelegate(opts *bind.FilterOpts) (*IPTokenStakingRedelegateIterator, error) { + + logs, sub, err := _IPTokenStaking.contract.FilterLogs(opts, "Redelegate") + if err != nil { + return nil, err + } + return &IPTokenStakingRedelegateIterator{contract: _IPTokenStaking.contract, event: "Redelegate", logs: logs, sub: sub}, nil +} + +// WatchRedelegate is a free log subscription operation binding the contract event 0x210091050fbe3add6ade45436b6c7aed210ef28fc37e1a1775970fc391272fe8. +// +// Solidity: event Redelegate(bytes delegatorUncmpPubkey, bytes validatorUncmpSrcPubkey, bytes validatorUncmpDstPubkey, uint256 delegationId, address operatorAddress, uint256 amount) +func (_IPTokenStaking *IPTokenStakingFilterer) WatchRedelegate(opts *bind.WatchOpts, sink chan<- *IPTokenStakingRedelegate) (event.Subscription, error) { + + logs, sub, err := _IPTokenStaking.contract.WatchLogs(opts, "Redelegate") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPTokenStakingRedelegate) + if err := _IPTokenStaking.contract.UnpackLog(event, "Redelegate", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRedelegate is a log parse operation binding the contract event 0x210091050fbe3add6ade45436b6c7aed210ef28fc37e1a1775970fc391272fe8. +// +// Solidity: event Redelegate(bytes delegatorUncmpPubkey, bytes validatorUncmpSrcPubkey, bytes validatorUncmpDstPubkey, uint256 delegationId, address operatorAddress, uint256 amount) +func (_IPTokenStaking *IPTokenStakingFilterer) ParseRedelegate(log types.Log) (*IPTokenStakingRedelegate, error) { + event := new(IPTokenStakingRedelegate) + if err := _IPTokenStaking.contract.UnpackLog(event, "Redelegate", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPTokenStakingSetOperatorIterator is returned from FilterSetOperator and is used to iterate over the raw logs and unpacked data for SetOperator events raised by the IPTokenStaking contract. +type IPTokenStakingSetOperatorIterator struct { + Event *IPTokenStakingSetOperator // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPTokenStakingSetOperatorIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingSetOperator) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingSetOperator) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPTokenStakingSetOperatorIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPTokenStakingSetOperatorIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPTokenStakingSetOperator represents a SetOperator event raised by the IPTokenStaking contract. +type IPTokenStakingSetOperator struct { + UncmpPubkey []byte + Operator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetOperator is a free log retrieval operation binding the contract event 0x658c1d4ffa3caca5fbfd38bb564825b972c239a7d090eb333a42e2ba7a0a4ed2. +// +// Solidity: event SetOperator(bytes uncmpPubkey, address operator) +func (_IPTokenStaking *IPTokenStakingFilterer) FilterSetOperator(opts *bind.FilterOpts) (*IPTokenStakingSetOperatorIterator, error) { + + logs, sub, err := _IPTokenStaking.contract.FilterLogs(opts, "SetOperator") + if err != nil { + return nil, err + } + return &IPTokenStakingSetOperatorIterator{contract: _IPTokenStaking.contract, event: "SetOperator", logs: logs, sub: sub}, nil +} + +// WatchSetOperator is a free log subscription operation binding the contract event 0x658c1d4ffa3caca5fbfd38bb564825b972c239a7d090eb333a42e2ba7a0a4ed2. +// +// Solidity: event SetOperator(bytes uncmpPubkey, address operator) +func (_IPTokenStaking *IPTokenStakingFilterer) WatchSetOperator(opts *bind.WatchOpts, sink chan<- *IPTokenStakingSetOperator) (event.Subscription, error) { + + logs, sub, err := _IPTokenStaking.contract.WatchLogs(opts, "SetOperator") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPTokenStakingSetOperator) + if err := _IPTokenStaking.contract.UnpackLog(event, "SetOperator", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetOperator is a log parse operation binding the contract event 0x658c1d4ffa3caca5fbfd38bb564825b972c239a7d090eb333a42e2ba7a0a4ed2. +// +// Solidity: event SetOperator(bytes uncmpPubkey, address operator) +func (_IPTokenStaking *IPTokenStakingFilterer) ParseSetOperator(log types.Log) (*IPTokenStakingSetOperator, error) { + event := new(IPTokenStakingSetOperator) + if err := _IPTokenStaking.contract.UnpackLog(event, "SetOperator", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPTokenStakingSetRewardAddressIterator is returned from FilterSetRewardAddress and is used to iterate over the raw logs and unpacked data for SetRewardAddress events raised by the IPTokenStaking contract. +type IPTokenStakingSetRewardAddressIterator struct { + Event *IPTokenStakingSetRewardAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPTokenStakingSetRewardAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingSetRewardAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingSetRewardAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPTokenStakingSetRewardAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPTokenStakingSetRewardAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPTokenStakingSetRewardAddress represents a SetRewardAddress event raised by the IPTokenStaking contract. +type IPTokenStakingSetRewardAddress struct { + DelegatorUncmpPubkey []byte + ExecutionAddress [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetRewardAddress is a free log retrieval operation binding the contract event 0x28c0529db8cf660d5b4c1e4b9313683fa7241c3fc49452e7d0ebae215a5f84b2. +// +// Solidity: event SetRewardAddress(bytes delegatorUncmpPubkey, bytes32 executionAddress) +func (_IPTokenStaking *IPTokenStakingFilterer) FilterSetRewardAddress(opts *bind.FilterOpts) (*IPTokenStakingSetRewardAddressIterator, error) { + + logs, sub, err := _IPTokenStaking.contract.FilterLogs(opts, "SetRewardAddress") + if err != nil { + return nil, err + } + return &IPTokenStakingSetRewardAddressIterator{contract: _IPTokenStaking.contract, event: "SetRewardAddress", logs: logs, sub: sub}, nil +} + +// WatchSetRewardAddress is a free log subscription operation binding the contract event 0x28c0529db8cf660d5b4c1e4b9313683fa7241c3fc49452e7d0ebae215a5f84b2. +// +// Solidity: event SetRewardAddress(bytes delegatorUncmpPubkey, bytes32 executionAddress) +func (_IPTokenStaking *IPTokenStakingFilterer) WatchSetRewardAddress(opts *bind.WatchOpts, sink chan<- *IPTokenStakingSetRewardAddress) (event.Subscription, error) { + + logs, sub, err := _IPTokenStaking.contract.WatchLogs(opts, "SetRewardAddress") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPTokenStakingSetRewardAddress) + if err := _IPTokenStaking.contract.UnpackLog(event, "SetRewardAddress", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetRewardAddress is a log parse operation binding the contract event 0x28c0529db8cf660d5b4c1e4b9313683fa7241c3fc49452e7d0ebae215a5f84b2. +// +// Solidity: event SetRewardAddress(bytes delegatorUncmpPubkey, bytes32 executionAddress) +func (_IPTokenStaking *IPTokenStakingFilterer) ParseSetRewardAddress(log types.Log) (*IPTokenStakingSetRewardAddress, error) { + event := new(IPTokenStakingSetRewardAddress) + if err := _IPTokenStaking.contract.UnpackLog(event, "SetRewardAddress", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPTokenStakingSetWithdrawalAddressIterator is returned from FilterSetWithdrawalAddress and is used to iterate over the raw logs and unpacked data for SetWithdrawalAddress events raised by the IPTokenStaking contract. +type IPTokenStakingSetWithdrawalAddressIterator struct { + Event *IPTokenStakingSetWithdrawalAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPTokenStakingSetWithdrawalAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingSetWithdrawalAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingSetWithdrawalAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPTokenStakingSetWithdrawalAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPTokenStakingSetWithdrawalAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPTokenStakingSetWithdrawalAddress represents a SetWithdrawalAddress event raised by the IPTokenStaking contract. +type IPTokenStakingSetWithdrawalAddress struct { + DelegatorUncmpPubkey []byte + ExecutionAddress [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetWithdrawalAddress is a free log retrieval operation binding the contract event 0x9f7f04f688298f474ed4c786abb29e0ca0173d70516d55d9eac515609b45fbca. +// +// Solidity: event SetWithdrawalAddress(bytes delegatorUncmpPubkey, bytes32 executionAddress) +func (_IPTokenStaking *IPTokenStakingFilterer) FilterSetWithdrawalAddress(opts *bind.FilterOpts) (*IPTokenStakingSetWithdrawalAddressIterator, error) { + + logs, sub, err := _IPTokenStaking.contract.FilterLogs(opts, "SetWithdrawalAddress") + if err != nil { + return nil, err + } + return &IPTokenStakingSetWithdrawalAddressIterator{contract: _IPTokenStaking.contract, event: "SetWithdrawalAddress", logs: logs, sub: sub}, nil +} + +// WatchSetWithdrawalAddress is a free log subscription operation binding the contract event 0x9f7f04f688298f474ed4c786abb29e0ca0173d70516d55d9eac515609b45fbca. +// +// Solidity: event SetWithdrawalAddress(bytes delegatorUncmpPubkey, bytes32 executionAddress) +func (_IPTokenStaking *IPTokenStakingFilterer) WatchSetWithdrawalAddress(opts *bind.WatchOpts, sink chan<- *IPTokenStakingSetWithdrawalAddress) (event.Subscription, error) { + + logs, sub, err := _IPTokenStaking.contract.WatchLogs(opts, "SetWithdrawalAddress") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPTokenStakingSetWithdrawalAddress) + if err := _IPTokenStaking.contract.UnpackLog(event, "SetWithdrawalAddress", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetWithdrawalAddress is a log parse operation binding the contract event 0x9f7f04f688298f474ed4c786abb29e0ca0173d70516d55d9eac515609b45fbca. +// +// Solidity: event SetWithdrawalAddress(bytes delegatorUncmpPubkey, bytes32 executionAddress) +func (_IPTokenStaking *IPTokenStakingFilterer) ParseSetWithdrawalAddress(log types.Log) (*IPTokenStakingSetWithdrawalAddress, error) { + event := new(IPTokenStakingSetWithdrawalAddress) + if err := _IPTokenStaking.contract.UnpackLog(event, "SetWithdrawalAddress", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPTokenStakingUnjailIterator is returned from FilterUnjail and is used to iterate over the raw logs and unpacked data for Unjail events raised by the IPTokenStaking contract. +type IPTokenStakingUnjailIterator struct { + Event *IPTokenStakingUnjail // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPTokenStakingUnjailIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingUnjail) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingUnjail) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPTokenStakingUnjailIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPTokenStakingUnjailIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPTokenStakingUnjail represents a Unjail event raised by the IPTokenStaking contract. +type IPTokenStakingUnjail struct { + Unjailer common.Address + ValidatorUncmpPubkey []byte + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnjail is a free log retrieval operation binding the contract event 0x026c2e156478ec2a25ccebac97a338d301f69b6d5aeec39c578b28a95e118201. +// +// Solidity: event Unjail(address unjailer, bytes validatorUncmpPubkey, bytes data) +func (_IPTokenStaking *IPTokenStakingFilterer) FilterUnjail(opts *bind.FilterOpts) (*IPTokenStakingUnjailIterator, error) { + + logs, sub, err := _IPTokenStaking.contract.FilterLogs(opts, "Unjail") + if err != nil { + return nil, err + } + return &IPTokenStakingUnjailIterator{contract: _IPTokenStaking.contract, event: "Unjail", logs: logs, sub: sub}, nil +} + +// WatchUnjail is a free log subscription operation binding the contract event 0x026c2e156478ec2a25ccebac97a338d301f69b6d5aeec39c578b28a95e118201. +// +// Solidity: event Unjail(address unjailer, bytes validatorUncmpPubkey, bytes data) +func (_IPTokenStaking *IPTokenStakingFilterer) WatchUnjail(opts *bind.WatchOpts, sink chan<- *IPTokenStakingUnjail) (event.Subscription, error) { + + logs, sub, err := _IPTokenStaking.contract.WatchLogs(opts, "Unjail") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPTokenStakingUnjail) + if err := _IPTokenStaking.contract.UnpackLog(event, "Unjail", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnjail is a log parse operation binding the contract event 0x026c2e156478ec2a25ccebac97a338d301f69b6d5aeec39c578b28a95e118201. +// +// Solidity: event Unjail(address unjailer, bytes validatorUncmpPubkey, bytes data) +func (_IPTokenStaking *IPTokenStakingFilterer) ParseUnjail(log types.Log) (*IPTokenStakingUnjail, error) { + event := new(IPTokenStakingUnjail) + if err := _IPTokenStaking.contract.UnpackLog(event, "Unjail", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPTokenStakingUnsetOperatorIterator is returned from FilterUnsetOperator and is used to iterate over the raw logs and unpacked data for UnsetOperator events raised by the IPTokenStaking contract. +type IPTokenStakingUnsetOperatorIterator struct { + Event *IPTokenStakingUnsetOperator // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPTokenStakingUnsetOperatorIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingUnsetOperator) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingUnsetOperator) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPTokenStakingUnsetOperatorIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPTokenStakingUnsetOperatorIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPTokenStakingUnsetOperator represents a UnsetOperator event raised by the IPTokenStaking contract. +type IPTokenStakingUnsetOperator struct { + UncmpPubkey []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnsetOperator is a free log retrieval operation binding the contract event 0xe3a30390f081e6e95d8bcc1b0459ae73d4ca4fc9bf6351e006d072c02f5209ff. +// +// Solidity: event UnsetOperator(bytes uncmpPubkey) +func (_IPTokenStaking *IPTokenStakingFilterer) FilterUnsetOperator(opts *bind.FilterOpts) (*IPTokenStakingUnsetOperatorIterator, error) { + + logs, sub, err := _IPTokenStaking.contract.FilterLogs(opts, "UnsetOperator") + if err != nil { + return nil, err + } + return &IPTokenStakingUnsetOperatorIterator{contract: _IPTokenStaking.contract, event: "UnsetOperator", logs: logs, sub: sub}, nil +} + +// WatchUnsetOperator is a free log subscription operation binding the contract event 0xe3a30390f081e6e95d8bcc1b0459ae73d4ca4fc9bf6351e006d072c02f5209ff. +// +// Solidity: event UnsetOperator(bytes uncmpPubkey) +func (_IPTokenStaking *IPTokenStakingFilterer) WatchUnsetOperator(opts *bind.WatchOpts, sink chan<- *IPTokenStakingUnsetOperator) (event.Subscription, error) { + + logs, sub, err := _IPTokenStaking.contract.WatchLogs(opts, "UnsetOperator") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPTokenStakingUnsetOperator) + if err := _IPTokenStaking.contract.UnpackLog(event, "UnsetOperator", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnsetOperator is a log parse operation binding the contract event 0xe3a30390f081e6e95d8bcc1b0459ae73d4ca4fc9bf6351e006d072c02f5209ff. +// +// Solidity: event UnsetOperator(bytes uncmpPubkey) +func (_IPTokenStaking *IPTokenStakingFilterer) ParseUnsetOperator(log types.Log) (*IPTokenStakingUnsetOperator, error) { + event := new(IPTokenStakingUnsetOperator) + if err := _IPTokenStaking.contract.UnpackLog(event, "UnsetOperator", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPTokenStakingUpdateValidatorCommssionIterator is returned from FilterUpdateValidatorCommssion and is used to iterate over the raw logs and unpacked data for UpdateValidatorCommssion events raised by the IPTokenStaking contract. +type IPTokenStakingUpdateValidatorCommssionIterator struct { + Event *IPTokenStakingUpdateValidatorCommssion // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPTokenStakingUpdateValidatorCommssionIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingUpdateValidatorCommssion) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingUpdateValidatorCommssion) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPTokenStakingUpdateValidatorCommssionIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPTokenStakingUpdateValidatorCommssionIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPTokenStakingUpdateValidatorCommssion represents a UpdateValidatorCommssion event raised by the IPTokenStaking contract. +type IPTokenStakingUpdateValidatorCommssion struct { + ValidatorUncmpPubkey []byte + CommissionRate uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdateValidatorCommssion is a free log retrieval operation binding the contract event 0x202c9aad6965f28c0ce1cd00460c1adfa2c90277f4f0a7abb813e2f04cecd70b. +// +// Solidity: event UpdateValidatorCommssion(bytes validatorUncmpPubkey, uint32 commissionRate) +func (_IPTokenStaking *IPTokenStakingFilterer) FilterUpdateValidatorCommssion(opts *bind.FilterOpts) (*IPTokenStakingUpdateValidatorCommssionIterator, error) { + + logs, sub, err := _IPTokenStaking.contract.FilterLogs(opts, "UpdateValidatorCommssion") + if err != nil { + return nil, err + } + return &IPTokenStakingUpdateValidatorCommssionIterator{contract: _IPTokenStaking.contract, event: "UpdateValidatorCommssion", logs: logs, sub: sub}, nil +} + +// WatchUpdateValidatorCommssion is a free log subscription operation binding the contract event 0x202c9aad6965f28c0ce1cd00460c1adfa2c90277f4f0a7abb813e2f04cecd70b. +// +// Solidity: event UpdateValidatorCommssion(bytes validatorUncmpPubkey, uint32 commissionRate) +func (_IPTokenStaking *IPTokenStakingFilterer) WatchUpdateValidatorCommssion(opts *bind.WatchOpts, sink chan<- *IPTokenStakingUpdateValidatorCommssion) (event.Subscription, error) { + + logs, sub, err := _IPTokenStaking.contract.WatchLogs(opts, "UpdateValidatorCommssion") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPTokenStakingUpdateValidatorCommssion) + if err := _IPTokenStaking.contract.UnpackLog(event, "UpdateValidatorCommssion", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdateValidatorCommssion is a log parse operation binding the contract event 0x202c9aad6965f28c0ce1cd00460c1adfa2c90277f4f0a7abb813e2f04cecd70b. +// +// Solidity: event UpdateValidatorCommssion(bytes validatorUncmpPubkey, uint32 commissionRate) +func (_IPTokenStaking *IPTokenStakingFilterer) ParseUpdateValidatorCommssion(log types.Log) (*IPTokenStakingUpdateValidatorCommssion, error) { + event := new(IPTokenStakingUpdateValidatorCommssion) + if err := _IPTokenStaking.contract.UnpackLog(event, "UpdateValidatorCommssion", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IPTokenStakingWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the IPTokenStaking contract. +type IPTokenStakingWithdrawIterator struct { + Event *IPTokenStakingWithdraw // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IPTokenStakingWithdrawIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IPTokenStakingWithdraw) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IPTokenStakingWithdrawIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IPTokenStakingWithdrawIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IPTokenStakingWithdraw represents a Withdraw event raised by the IPTokenStaking contract. +type IPTokenStakingWithdraw struct { + DelegatorUncmpPubkey []byte + ValidatorUncmpPubkey []byte + StakeAmount *big.Int + DelegationId *big.Int + OperatorAddress common.Address + Data []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdraw is a free log retrieval operation binding the contract event 0xac41e6ee15d2d0047feb1ea8aba74b92c0334cd3e78024a5ad679d7d08b8fbc5. +// +// Solidity: event Withdraw(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint256 stakeAmount, uint256 delegationId, address operatorAddress, bytes data) +func (_IPTokenStaking *IPTokenStakingFilterer) FilterWithdraw(opts *bind.FilterOpts) (*IPTokenStakingWithdrawIterator, error) { + + logs, sub, err := _IPTokenStaking.contract.FilterLogs(opts, "Withdraw") + if err != nil { + return nil, err + } + return &IPTokenStakingWithdrawIterator{contract: _IPTokenStaking.contract, event: "Withdraw", logs: logs, sub: sub}, nil +} + +// WatchWithdraw is a free log subscription operation binding the contract event 0xac41e6ee15d2d0047feb1ea8aba74b92c0334cd3e78024a5ad679d7d08b8fbc5. +// +// Solidity: event Withdraw(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint256 stakeAmount, uint256 delegationId, address operatorAddress, bytes data) +func (_IPTokenStaking *IPTokenStakingFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *IPTokenStakingWithdraw) (event.Subscription, error) { + + logs, sub, err := _IPTokenStaking.contract.WatchLogs(opts, "Withdraw") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IPTokenStakingWithdraw) + if err := _IPTokenStaking.contract.UnpackLog(event, "Withdraw", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdraw is a log parse operation binding the contract event 0xac41e6ee15d2d0047feb1ea8aba74b92c0334cd3e78024a5ad679d7d08b8fbc5. +// +// Solidity: event Withdraw(bytes delegatorUncmpPubkey, bytes validatorUncmpPubkey, uint256 stakeAmount, uint256 delegationId, address operatorAddress, bytes data) +func (_IPTokenStaking *IPTokenStakingFilterer) ParseWithdraw(log types.Log) (*IPTokenStakingWithdraw, error) { + event := new(IPTokenStakingWithdraw) + if err := _IPTokenStaking.contract.UnpackLog(event, "Withdraw", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contracts/bindings/iptokenstaking_more.go b/contracts/bindings/iptokenstaking_more.go new file mode 100644 index 00000000..5cc58bf2 --- /dev/null +++ b/contracts/bindings/iptokenstaking_more.go @@ -0,0 +1,14 @@ +package bindings + +import ( + _ "embed" +) + +const ( + IPTokenStakingDeployedBytecode = "0x6040608081526004908136101561001557600080fd5b600091823560e01c8063014e81781461123d5780631487153e14611220578063396e1e471461120457806339ec4df9146111e55780633dd9fb9a146111a2578063561edf7e1461110d5780635727dc5c146110f157806369fe0e2d146110cc5780636ea3a228146110a7578063715018a614610fe0578063787f82c814610f4b57806379ba509714610ec157806386eb5e4814610e775780638740597a14610acf5780638da5cb5b14610a7b5780638ed65fbc14610a3857806394fd0fe0146109fd57806398d730a21461095f578063997da8d4146109445780639d04b121146108985780639d9d293f14610854578063a0284f16146107f2578063ab8870f6146107cd578063b2bc29ef1461077a578063bda16b151461073f578063c582db4414610640578063d2e1f5b8146105e7578063ddca3f43146105ca578063e30c397814610576578063eb4af04514610551578063ec21dac214610514578063eeeac01e146104d9578063f1887684146104ba578063f2fde38b146103e85763fce5dc8c146101a257600080fd5b346103e45760a06003193601126103e4577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff82851c16159167ffffffffffffffff8116801590816103dc575b60011490816103d2575b1590816103c9575b506103a1578260017fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000831617855561036c575b50610242612777565b61024a612777565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005580359073ffffffffffffffffffffffffffffffffffffffff821680830361036857610297612777565b61029f612777565b1561033957506102ae906123b5565b6102b9602435612524565b6102c46044356122cd565b6102cf606435612469565b6102da608435612217565b6102e2578280f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291817fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff602093541690555160018152a138808280f35b602490868651917f1e4fbdf7000000000000000000000000000000000000000000000000000000008352820152fd5b8680fd5b7fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000166801000000000000000117835538610239565b5083517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b90501538610206565b303b1591506101fe565b8491506101f4565b8280fd5b8382346104b65760206003193601126104b6573573ffffffffffffffffffffffffffffffffffffffff8082168092036103e4576104236121a7565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b5080fd5b5050346104b657816003193601126104b6576020906001549051908152f35b5050346104b657816003193601126104b657602090517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f8152f35b8361054e61052136611405565b966105358782989398979497969596611bab565b61053f8484611bab565b6105498686611bab565b611926565b80f35b8382346104b65760206003193601126104b65761054e906105706121a7565b35612524565b5050346104b657816003193601126104b65760209073ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0054169051908152f35b50346103e457826003193601126103e45760209250549051908152f35b50823461063d57602060031936011261063d5750356106306106297f000000000000000000000000000000000000000000000000000000000000000083611b36565b8092611b6f565b9082519182526020820152f35b80fd5b5090806003193601126103e457813567ffffffffffffffff811161073b5761066b903690840161125e565b9190926024359063ffffffff8216809203610737576106c09061068e8587611bab565b6106b83373ffffffffffffffffffffffffffffffffffffffff6106b1888a611e63565b16146116fd565b543414611473565b8480341561072e575b81808092813491f115610724576107187f202c9aad6965f28c0ce1cd00460c1adfa2c90277f4f0a7abb813e2f04cecd70b946107088754841015611aab565b8351948486958652850191611788565b9060208301520390a180f35b81513d86823e3d90fd5b506108fc6106c9565b8580fd5b8380fd5b5050346104b657816003193601126104b657602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b8361054e61078736611291565b9661079b8782989398979497969596611bab565b6107be3373ffffffffffffffffffffffffffffffffffffffff6106b18585611e63565b6107c88484611bab565b6114fe565b8382346104b65760206003193601126104b65761054e906107ec6121a7565b35612469565b602083610829610801366112ff565b956108128682979397969496611bab565b61081c8484611bab565b610824611ebd565b611fa2565b9060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005551908152f35b8361054e61086136611405565b966108758782989398979497969596611bab565b6105353373ffffffffffffffffffffffffffffffffffffffff6106b18585611e63565b50906108a33661136e565b909291936108b18486611bab565b6108d973ffffffffffffffffffffffffffffffffffffffff916106b833846106b1898b611e63565b8580341561093b575b81808092813491f115610931576109247f28c0529db8cf660d5b4c1e4b9313683fa7241c3fc49452e7d0ebae215a5f84b2958451958587968752860191611788565b911660208301520390a180f35b82513d87823e3d90fd5b506108fc6108e2565b5050346104b657816003193601126104b65751908152602090f35b5090346103e45760206003193601126103e45781359167ffffffffffffffff831161073b576109b56109f7917fe3a30390f081e6e95d8bcc1b0459ae73d4ca4fc9bf6351e006d072c02f5209ff9436910161125e565b9190926109c28385611bab565b6109e53373ffffffffffffffffffffffffffffffffffffffff6106b18688611e63565b51928392602084526020840191611788565b0390a180f35b5050346104b657816003193601126104b657602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b8361054e610a45366113be565b92610a538382949394611bab565b610a763373ffffffffffffffffffffffffffffffffffffffff6106b18585611e63565b6117c7565b5050346104b657816003193601126104b65760209073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054169051908152f35b50919060e06003193601126104b65767ffffffffffffffff90833582811161073b57610afe903690860161125e565b91909460243584811161073757610b18903690830161125e565b92909660443563ffffffff90818116809103610e735760643590828216809203610e6f57608435928316809303610e6f5760a435988915158a03610e6b5760c435908111610e6b57610b70610baf913690890161125e565b9c9098610b7d8b88611bab565b610ba03373ffffffffffffffffffffffffffffffffffffffff6106b18e8b611e63565b610ba8611ebd565b36916118f5565b95610bda7f000000000000000000000000000000000000000000000000000000000000000034611b36565b99610be58b34611b6f565b91610bf4600154841015611f17565b610c018d54851015611aab565b848411610de8576046895111610d6557508b80838015610d5b575b82809291818093f115610d515715610d4757610c466001955b87519a610120808d528c0191611788565b6020978a8203898c01528051908183528d5b828110610d345750509360ff938d9e9793837f65bfc2fa1cd4c6f50f60983ad1cf1cb4bff5ee6570428254dfce41b085ef6d149e9f601f8f9e9c997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092610cf49f82819e9a010152011601968c015260608b015260808a015260a08901521660c08701523360e087015281868203016101008701520191611788565b0390a180610d25575b5060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005580f35b610d2e906126bf565b38610cfd565b8181018b01518482018c01528a01610c58565b610c468b95610c35565b86513d8d823e3d90fd5b6108fc9150610c1c565b60849060208951917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602760248201527f4950546f6b656e5374616b696e673a204d6f6e696b6572206c656e677468206f60448201527f766572206d6178000000000000000000000000000000000000000000000000006064820152fd5b60849060208951917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602860248201527f4950546f6b656e5374616b696e673a20436f6d6d697373696f6e20726174652060448201527f6f766572206d61780000000000000000000000000000000000000000000000006064820152fd5b8a80fd5b8980fd5b8880fd5b83610e9a610e84366113be565b92610e90929192611ebd565b610a768282611bab565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005580f35b5090346103e457826003193601126103e4573373ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00541603610f1b578261054e336123b5565b6024925051907f118cdaa70000000000000000000000000000000000000000000000000000000082523390820152fd5b5090610f563661136e565b90929193610f648486611bab565b610f8c73ffffffffffffffffffffffffffffffffffffffff916106b833846106b1898b611e63565b85803415610fd7575b81808092813491f115610931576109247f9f7f04f688298f474ed4c786abb29e0ca0173d70516d55d9eac515609b45fbca958451958587968752860191611788565b506108fc610f95565b833461063d578060031936011261063d57610ff96121a7565b8073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffff00000000000000000000000000000000000000007f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008181541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549182169055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b8382346104b65760206003193601126104b65761054e906110c66121a7565b356122cd565b8382346104b65760206003193601126104b65761054e906110eb6121a7565b35612217565b5050346104b657816003193601126104b6576020905160078152f35b50906111183661136e565b909291936111268486611bab565b61114e73ffffffffffffffffffffffffffffffffffffffff916106b833846106b1898b611e63565b85803415611199575b81808092813491f115610931576109247f658c1d4ffa3caca5fbfd38bb564825b972c239a7d090eb333a42e2ba7a0a4ed2958451958587968752860191611788565b506108fc611157565b6020836108296111b1366112ff565b956111c28682979397969496611bab565b6108123373ffffffffffffffffffffffffffffffffffffffff6106b18585611e63565b5050346104b657816003193601126104b6576020906002549051908152f35b5050346104b657816003193601126104b6576020905160468152f35b5050346104b657816003193601126104b657602091549051908152f35b8361054e61124a36611291565b966107be8782989398979497969596611bab565b9181601f8401121561128c5782359167ffffffffffffffff831161128c576020838186019501011161128c57565b600080fd5b60a060031982011261128c5767ffffffffffffffff9060043582811161128c57816112be9160040161125e565b9390939260243581811161128c57836112d99160040161125e565b93909392604435926064359260843591821161128c576112fb9160040161125e565b9091565b608060031982011261128c5767ffffffffffffffff9160043583811161128c578261132c9160040161125e565b9390939260243582811161128c57816113479160040161125e565b93909392604435600481101561128c579260643591821161128c576112fb9160040161125e565b604060031982011261128c576004359067ffffffffffffffff821161128c576113999160040161125e565b909160243573ffffffffffffffffffffffffffffffffffffffff8116810361128c5790565b604060031982011261128c5767ffffffffffffffff9160043583811161128c57826113eb9160040161125e565b9390939260243591821161128c576112fb9160040161125e565b9060a060031983011261128c5767ffffffffffffffff60043581811161128c57836114329160040161125e565b9390939260243583811161128c578261144d9160040161125e565b9390939260443591821161128c576114679160040161125e565b90916064359060843590565b1561147a57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4950546f6b656e5374616b696e673a20496e76616c69642066656520616d6f7560448201527f6e740000000000000000000000000000000000000000000000000000000000006064820152fd5b959094929691936115126004543414611473565b600034156116f4575b600080808093813491f1156116e857611538600354821115611dd8565b60025484106116645761156b7f000000000000000000000000000000000000000000000000000000000000000085611b36565b6115e0576115bd6115db957fac41e6ee15d2d0047feb1ea8aba74b92c0334cd3e78024a5ad679d7d08b8fbc5996115af6040519a8b9a60c08c5260c08c0191611788565b9189830360208b0152611788565b936040870152606086015233608086015284830360a0860152611788565b0390a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4950546f6b656e5374616b696e673a20416d6f756e74206d757374206265207260448201527f6f756e64656420746f205354414b455f524f554e44494e4700000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4950546f6b656e5374616b696e673a20556e7374616b6520616d6f756e74207560448201527f6e646572206d696e0000000000000000000000000000000000000000000000006064820152fd5b6040513d6000823e3d90fd5b506108fc61151b565b1561170457565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579206460448201527f65726976656420616464726573730000000000000000000000000000000000006064820152fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b91926117d66004543414611473565b6000341561183f575b600080808093813491f1156116e8577f026c2e156478ec2a25ccebac97a338d301f69b6d5aeec39c578b28a95e118201936115db91611831604051958695338752606060208801526060870191611788565b918483036040860152611788565b506108fc6117df565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761188c57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff811161188c57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192611909611904836118bb565b611848565b938285528282011161128c57816000926020928387013784010152565b959390946119376004543414611473565b60003415611aa2575b600080808093813491f1156116e85761195a3685856118f5565b6020815191012061196c3683856118f5565b6020815191012014611a1e576119fa611a08936119d47f210091050fbe3add6ade45436b6c7aed210ef28fc37e1a1775970fc391272fe89a6119ce7f000000000000000000000000000000000000000000000000000000000000000082611b36565b90611b6f565b956119e3600354891115611dd8565b6115af6040519a8b9a60c08c5260c08c0191611788565b918683036040880152611788565b91606084015233608084015260a08301520390a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4950546f6b656e5374616b696e673a20526564656c65676174696e6720746f2060448201527f73616d652076616c696461746f720000000000000000000000000000000000006064820152fd5b506108fc611940565b15611ab257565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4950546f6b656e5374616b696e673a20436f6d6d697373696f6e20726174652060448201527f756e646572206d696e00000000000000000000000000000000000000000000006064820152fd5b8115611b40570690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b91908203918211611b7c57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9060418103611d545715611d25577f04000000000000000000000000000000000000000000000000000000000000007fff0000000000000000000000000000000000000000000000000000000000000082351603611ca1578060016021611c1693013591013561260c565b15611c1d57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579206f60448201527f6e206375727665000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579207060448201527f72656669780000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579206c60448201527f656e6774680000000000000000000000000000000000000000000000000000006064820152fd5b15611ddf57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4950546f6b656e5374616b696e673a20496e76616c69642064656c656761746960448201527f6f6e2069640000000000000000000000000000000000000000000000000000006064820152fd5b8160011161128c5773ffffffffffffffffffffffffffffffffffffffff91611eb29160017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff36930191016118f5565b602081519101201690565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f006002815414611eed5760029055565b60046040517f3ee5aeb5000000000000000000000000000000000000000000000000000000008152fd5b15611f1e57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4950546f6b656e5374616b696e673a205374616b6520616d6f756e7420756e6460448201527f6572206d696e00000000000000000000000000000000000000000000000000006064820152fd5b929593909193600482101561217857600382116120f457611fe37f000000000000000000000000000000000000000000000000000000000000000034611b36565b95611fee8734611b6f565b95611ffd600154881015611f17565b600098846120ad575b9461207c6000989495899893967f269a32ff589c9b701f49ab6aa532ee8f55901df71a7fca2d70dc9f45314f1be39560ff6120568c9b9a8c9b6115af6040519a8b9a60e08c5260e08c0191611788565b938960408801521660608601528d60808601523360a086015284830360c0860152611788565b0390a18181156120a4575b8290f1156116e85780612098575090565b6120a1906126bf565b90565b506108fc612087565b91949850929591946003547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611b7c5760010180600355989491969390959296612006565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4950546f6b656e5374616b696e673a20496e76616c6964207374616b696e672060448201527f706572696f6400000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300541633036121e757565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b7f0000000000000000000000000000000000000000000000000000000000000000811061226f576020817f20461e09b8e557b77e107939f9ce6544698123aad0fc964ac5cc59b7df2e608f92600455604051908152a1565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4950546f6b656e5374616b696e673a20496e76616c6964206d696e20666565006044820152fd5b80156123315760206123247ff93d77980ae5a1ddd008d6a7f02cbee5af2a4fcea850c4b55828de4f644e589f926119ce7f000000000000000000000000000000000000000000000000000000000000000082611b36565b80600255604051908152a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4950546f6b656e5374616b696e673a205a65726f206d696e20756e7374616b6560448201527f20616d6f756e74000000000000000000000000000000000000000000000000006064820152fd5b7fffffffffffffffffffffffff0000000000000000000000000000000000000000907f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008281541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549073ffffffffffffffffffffffffffffffffffffffff80931680948316179055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b80156124a0576020817f4167b1de65292a9ff628c9136823791a1de701e1fbdda4863ce22a1cfaf4d0f792600055604051908152a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4950546f6b656e5374616b696e673a205a65726f206d696e20636f6d6d69737360448201527f696f6e20726174650000000000000000000000000000000000000000000000006064820152fd5b801561258857602061257b7fea095c2fea861b87f0fd54d0d4453358692a527e120df22b62c71696247dfb9f926119ce7f000000000000000000000000000000000000000000000000000000000000000082611b36565b80600155604051908152a1565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4950546f6b656e5374616b696e673a205a65726f206d696e207374616b65206160448201527f6d6f756e740000000000000000000000000000000000000000000000000000006064820152fd5b80158015612695575b801561268d575b8015612663575b61265c576007907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f918282818181950909089180091490565b5050600090565b507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f821015612623565b50811561261c565b507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f811015612615565b600080808093335af13d15612772573d6126db611904826118bb565b908152600060203d92013e5b156126ee57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4950546f6b656e5374616b696e673a204661696c656420746f20726566756e6460448201527f2072656d61696e646572000000000000000000000000000000000000000000006064820152fd5b6126e7565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c16156127a657565b60046040517fd7e6bcf8000000000000000000000000000000000000000000000000000000008152fdfea2646970667358221220ecb38ab59ac79828317e74c457bccfa013985c9104abf77289c1fd9a2fe777a364736f6c63430008170033" +) + +//go:embed iptokenstaking_storage_layout.json +var iptokenstakingStorageLayoutJSON []byte + +var IPTokenStakingStorageLayout = mustGetStorageLayout(iptokenstakingStorageLayoutJSON) diff --git a/contracts/bindings/iptokenstaking_storage_layout.json b/contracts/bindings/iptokenstaking_storage_layout.json new file mode 100644 index 00000000..57903052 --- /dev/null +++ b/contracts/bindings/iptokenstaking_storage_layout.json @@ -0,0 +1,51 @@ +{ + "storage": [ + { + "astId": 48695, + "contract": "src/protocol/IPTokenStaking.sol:IPTokenStaking", + "label": "minCommissionRate", + "offset": 0, + "slot": "0", + "type": "t_uint256" + }, + { + "astId": 48698, + "contract": "src/protocol/IPTokenStaking.sol:IPTokenStaking", + "label": "minStakeAmount", + "offset": 0, + "slot": "1", + "type": "t_uint256" + }, + { + "astId": 48701, + "contract": "src/protocol/IPTokenStaking.sol:IPTokenStaking", + "label": "minUnstakeAmount", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 48704, + "contract": "src/protocol/IPTokenStaking.sol:IPTokenStaking", + "label": "_delegationIdCounter", + "offset": 0, + "slot": "3", + "type": "t_uint256" + }, + { + "astId": 48707, + "contract": "src/protocol/IPTokenStaking.sol:IPTokenStaking", + "label": "fee", + "offset": 0, + "slot": "4", + "type": "t_uint256" + } + ], + "types": { + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } +} diff --git a/contracts/bindings/ubipool.go b/contracts/bindings/ubipool.go new file mode 100644 index 00000000..db7c38c2 --- /dev/null +++ b/contracts/bindings/ubipool.go @@ -0,0 +1,1330 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +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 +) + +// UBIPoolMetaData contains all meta data concerning the UBIPool contract. +var UBIPoolMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"maxUBIPercentage\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"AA\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BB\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_UBI_PERCENTAGE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PP\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"claimUBI\",\"inputs\":[{\"name\":\"distributionId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"currentDistributionId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"multicall\",\"inputs\":[{\"name\":\"data\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[{\"name\":\"results\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\"},{\"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\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setUBIDistribution\",\"inputs\":[{\"name\":\"totalUBI\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"validatorUncmpPubKeys\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setUBIPercentage\",\"inputs\":[{\"name\":\"percentage\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"validatorUBIAmounts\",\"inputs\":[{\"name\":\"distributionId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"validatorUncmpPubkey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"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\":\"UBIDistributionSet\",\"inputs\":[{\"name\":\"month\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"totalUBI\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"validatorUncmpPubKeys\",\"type\":\"bytes[]\",\"indexed\":false,\"internalType\":\"bytes[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UBIPercentageSet\",\"inputs\":[{\"name\":\"percentage\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"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\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]}]", + Bin: "0x60a034610101576001600160401b0390601f6119d038819003918201601f19168301918483118484101761010657808492602094604052833981010312610101575163ffffffff81168103610101576080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c166100ef5780808316036100aa575b6040516118b3908161011d82396080518181816102520152610bfc0152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a138808061008b565b60405163f92ee8a960e01b8152600490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe60406080815260048036101561001457600080fd5b600091823560e01c9081631971f77314610cac57816347564aa014610bcd5781635727dc5c14610bb1578163715018a614610ae7578163747c4ef714610844578163780069e01461082757816379ba50971461079a5781638da5cb5b14610746578163997da8d41461072b578163ac9650d81461052b578163c20c1472146104af578163c4d66de814610276578163d5077f4014610235578163e30c3978146101e1578163eeeac01e146101a6575063f2fde38b146100d257600080fd5b346101a25760206003193601126101a2573573ffffffffffffffffffffffffffffffffffffffff80821680920361019e5761010b6113af565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b8280fd5b5080fd5b8390346101a257816003193601126101a257602090517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f8152f35b8390346101a257816003193601126101a25760209073ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0054169051908152f35b8390346101a257816003193601126101a2576020905163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9190503461019e57602060031936011261019e57803573ffffffffffffffffffffffffffffffffffffffff8116908181036104ab577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009283549260ff84871c16159367ffffffffffffffff8116801590816104a3575b6001149081610499575b159081610490575b50610468578460017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008316178755610433575b50156103b0575061035190610344611824565b61034c611824565b61161d565b610359578280f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291817fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff602093541690555160018152a138808280f35b60849060208651917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602560248201527f554249506f6f6c3a206f776e65722063616e6e6f74206265207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000166801000000000000000117855538610331565b8287517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b905015386102fe565b303b1591506102f6565b8691506102ec565b8480fd5b9190503461019e578160031936011261019e5760243567ffffffffffffffff811161052757366023820112156105275761051691836020956104fb879436906024818701359101611264565b92358152600184522082855194838680955193849201611197565b820190815203019020549051908152f35b8380fd5b8383346101a25760208060031936011261019e5767ffffffffffffffff9082358281116104ab5761055f9036908501611161565b9286519483860191868310908311176106ff57508087939694975283855261058687611383565b94610593845196876111ba565b87865261059f88611383565b977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0809901865b8181106106f0575050855b81811061066b57505050505080519380850191818652845180935281818701918460051b880101950193965b83881061060a5786860387f35b9091929394838080837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08b6001960301875285601f8b5161065681518092818752878088019101611197565b011601019701930197019690939291936105fd565b806106cf8880896106af8e9b9f9c9e6106bb908b8b61068e8f9b8d60019d6112da565b9290965195838794868601998a37840191858301938a855251938491611197565b010380845201826111ba565b5190305af46106c8611353565b9030611784565b6106d9828b61139b565b526106e4818a61139b565b500198949795986105d1565b60608982018b015289016105c6565b8660416024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8390346101a257816003193601126101a25751908152602090f35b8390346101a257816003193601126101a25760209073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054169051908152f35b90503461019e578260031936011261019e573373ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c005416036107f757826107f43361161d565b80f35b6024925051907f118cdaa70000000000000000000000000000000000000000000000000000000082523390820152fd5b8390346101a257816003193601126101a257602091549051908152f35b9190503461019e578160031936011261019e57602480359267ffffffffffffffff908335828611610ae35736602387011215610ae35785850135928311610ae35783860136858589010111610adf577f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00966002885414610ab757600288556108cc858361141f565b84600111610ab35761090690369060257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88019101611264565b9384519473ffffffffffffffffffffffffffffffffffffffff60209687339301201603610a325782895260018552610941848a20828461133a565b549283156109d757899384610964819582958395845260018b528984209161133a565b55335af1610970611353565b501561097e57856001865580f35b517f08c379a000000000000000000000000000000000000000000000000000000000815292830152601b908201527f554249506f6f6c3a206661696c656420746f2073656e642055424900000000006044820152606490fd5b606488601889898951937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f554249506f6f6c3a206e6f2055424920746f20636c61696d00000000000000006044820152fd5b608487602e88888851937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f5075624b657956657269666965723a20496e76616c6964207075626b6579206460448201527f65726976656420616464726573730000000000000000000000000000000000006064820152fd5b8880fd5b8684517f3ee5aeb5000000000000000000000000000000000000000000000000000000008152fd5b8780fd5b8680fd5b8334610bae5780600319360112610bae57610b006113af565b8073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffff00000000000000000000000000000000000000007f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008181541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549182169055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b8390346101a257816003193601126101a2576020905160078152f35b90503461019e57602060031936011261019e5781359163ffffffff8084168094036104ab57610bfa6113af565b7f0000000000000000000000000000000000000000000000000000000000000000168311610c5057507f6c6483041303ba314f169eb2d2af177b4f497324ccf0f3c1e68c2100f76c49299160209151908152a180f35b602060649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601c60248201527f554249506f6f6c3a2070657263656e7461676520746f6f2068696768000000006044820152fd5b90503461019e57606060031936011261019e57813592602467ffffffffffffffff813581811161052757610ce39036908701611161565b959093604491823584811161019e57610cff9036908301611161565b939095610d0a6113af565b89156110e057848a0361108557478b1161102a578384547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610fa45760010185558b90855b878110610f2c575003610ed1575050508096949296549686519580608088018a895260209b8c8a015260808a8a01525260a087019460a08260051b89010195819385925b848410610e105750505050505084830360608601528183527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211610bae575092809287927f1cc6f356308c8399caa490706b01fb9d52cdc87cdf639e66c3da7d4ce2db161c9560051b80928583013701030190a151908152f35b9091929394977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608b820301845288357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe183360301811215610adf5782018035908f01848211610ab3578136038113610ab3578f837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8580859796869760019a52868601378d858286010152011601019a01940194019294939190610d95565b60649291601e7f554249506f6f6c3a20746f74616c20616d6f756e74206d69736d6174636800009260208c51957f08c379a0000000000000000000000000000000000000000000000000000000008752860152840152820152fd5b9150610f3982888b61129b565b3515610fcf578a610f848b610f7e8f80610f6b8f8e8a9491610f66610f608780958b6112da565b9061141f565b61129b565b35958c548d5260016020528c20936112da565b9061133a565b55610f9082888b61129b565b358101809111610fa4578c91600101610d51565b82866011877f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8a517f08c379a0000000000000000000000000000000000000000000000000000000008152602081870152601f818501527f554249506f6f6c3a20616d6f756e74732063616e6e6f74206265207a65726f0081860152606490fd5b60649291601b7f554249506f6f6c3a206e6f7420656e6f7567682062616c616e636500000000009260208c51957f08c379a0000000000000000000000000000000000000000000000000000000008752860152840152820152fd5b6064929160187f554249506f6f6c3a206c656e677468206d69736d6174636800000000000000009260208c51957f08c379a0000000000000000000000000000000000000000000000000000000008752860152840152820152fd5b60849291602e7f554249506f6f6c3a2076616c696461746f72556e636d705075624b65797320639260208c51957f08c379a00000000000000000000000000000000000000000000000000000000087528601528401528201527f616e6e6f7420626520656d7074790000000000000000000000000000000000006064820152fd5b9181601f840112156111925782359167ffffffffffffffff8311611192576020808501948460051b01011161119257565b600080fd5b60005b8381106111aa5750506000910152565b818101518382015260200161119a565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176111fb57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff81116111fb57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926112708261122a565b9161127e60405193846111ba565b829481845281830111611192578281602093846000960137010152565b91908110156112ab5760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b91908110156112ab5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561119257019081359167ffffffffffffffff8311611192576020018236038113611192579190565b6020919283604051948593843782019081520301902090565b3d1561137e573d906113648261122a565b9161137260405193846111ba565b82523d6000602084013e565b606090565b67ffffffffffffffff81116111fb5760051b60200190565b80518210156112ab5760209160051b010190565b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300541633036113ef57565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b906041810361159957156112ab577f04000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008235160361151557806001602161148a9301359101356116d1565b1561149157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579206f60448201527f6e206375727665000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579207060448201527f72656669780000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579206c60448201527f656e6774680000000000000000000000000000000000000000000000000000006064820152fd5b7fffffffffffffffffffffffff0000000000000000000000000000000000000000907f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008281541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549073ffffffffffffffffffffffffffffffffffffffff80931680948316179055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b8015801561175a575b8015611752575b8015611728575b611721576007907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f918282818181950909089180091490565b5050600090565b507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f8210156116e8565b5081156116e1565b507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f8110156116da565b906117c3575080511561179957805190602001fd5b60046040517f1425ea42000000000000000000000000000000000000000000000000000000008152fd5b8151158061181b575b6117d4575090565b60249073ffffffffffffffffffffffffffffffffffffffff604051917f9996b315000000000000000000000000000000000000000000000000000000008352166004820152fd5b50803b156117cc565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561185357565b60046040517fd7e6bcf8000000000000000000000000000000000000000000000000000000008152fdfea26469706673582212204f7dbc62bc26273f5f8489acbec326275e0314d69c75a43ce086bd74a012317064736f6c63430008170033", +} + +// UBIPoolABI is the input ABI used to generate the binding from. +// Deprecated: Use UBIPoolMetaData.ABI instead. +var UBIPoolABI = UBIPoolMetaData.ABI + +// UBIPoolBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use UBIPoolMetaData.Bin instead. +var UBIPoolBin = UBIPoolMetaData.Bin + +// DeployUBIPool deploys a new Ethereum contract, binding an instance of UBIPool to it. +func DeployUBIPool(auth *bind.TransactOpts, backend bind.ContractBackend, maxUBIPercentage uint32) (common.Address, *types.Transaction, *UBIPool, error) { + parsed, err := UBIPoolMetaData.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(UBIPoolBin), backend, maxUBIPercentage) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &UBIPool{UBIPoolCaller: UBIPoolCaller{contract: contract}, UBIPoolTransactor: UBIPoolTransactor{contract: contract}, UBIPoolFilterer: UBIPoolFilterer{contract: contract}}, nil +} + +// UBIPool is an auto generated Go binding around an Ethereum contract. +type UBIPool struct { + UBIPoolCaller // Read-only binding to the contract + UBIPoolTransactor // Write-only binding to the contract + UBIPoolFilterer // Log filterer for contract events +} + +// UBIPoolCaller is an auto generated read-only Go binding around an Ethereum contract. +type UBIPoolCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UBIPoolTransactor is an auto generated write-only Go binding around an Ethereum contract. +type UBIPoolTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UBIPoolFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type UBIPoolFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UBIPoolSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type UBIPoolSession struct { + Contract *UBIPool // 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 +} + +// UBIPoolCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type UBIPoolCallerSession struct { + Contract *UBIPoolCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// UBIPoolTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type UBIPoolTransactorSession struct { + Contract *UBIPoolTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UBIPoolRaw is an auto generated low-level Go binding around an Ethereum contract. +type UBIPoolRaw struct { + Contract *UBIPool // Generic contract binding to access the raw methods on +} + +// UBIPoolCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type UBIPoolCallerRaw struct { + Contract *UBIPoolCaller // Generic read-only contract binding to access the raw methods on +} + +// UBIPoolTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type UBIPoolTransactorRaw struct { + Contract *UBIPoolTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewUBIPool creates a new instance of UBIPool, bound to a specific deployed contract. +func NewUBIPool(address common.Address, backend bind.ContractBackend) (*UBIPool, error) { + contract, err := bindUBIPool(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &UBIPool{UBIPoolCaller: UBIPoolCaller{contract: contract}, UBIPoolTransactor: UBIPoolTransactor{contract: contract}, UBIPoolFilterer: UBIPoolFilterer{contract: contract}}, nil +} + +// NewUBIPoolCaller creates a new read-only instance of UBIPool, bound to a specific deployed contract. +func NewUBIPoolCaller(address common.Address, caller bind.ContractCaller) (*UBIPoolCaller, error) { + contract, err := bindUBIPool(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &UBIPoolCaller{contract: contract}, nil +} + +// NewUBIPoolTransactor creates a new write-only instance of UBIPool, bound to a specific deployed contract. +func NewUBIPoolTransactor(address common.Address, transactor bind.ContractTransactor) (*UBIPoolTransactor, error) { + contract, err := bindUBIPool(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &UBIPoolTransactor{contract: contract}, nil +} + +// NewUBIPoolFilterer creates a new log filterer instance of UBIPool, bound to a specific deployed contract. +func NewUBIPoolFilterer(address common.Address, filterer bind.ContractFilterer) (*UBIPoolFilterer, error) { + contract, err := bindUBIPool(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &UBIPoolFilterer{contract: contract}, nil +} + +// bindUBIPool binds a generic wrapper to an already deployed contract. +func bindUBIPool(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := UBIPoolMetaData.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 (_UBIPool *UBIPoolRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UBIPool.Contract.UBIPoolCaller.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 (_UBIPool *UBIPoolRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UBIPool.Contract.UBIPoolTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UBIPool *UBIPoolRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UBIPool.Contract.UBIPoolTransactor.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 (_UBIPool *UBIPoolCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UBIPool.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 (_UBIPool *UBIPoolTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UBIPool.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UBIPool *UBIPoolTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UBIPool.Contract.contract.Transact(opts, method, params...) +} + +// AA is a free data retrieval call binding the contract method 0x997da8d4. +// +// Solidity: function AA() view returns(uint256) +func (_UBIPool *UBIPoolCaller) AA(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _UBIPool.contract.Call(opts, &out, "AA") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// AA is a free data retrieval call binding the contract method 0x997da8d4. +// +// Solidity: function AA() view returns(uint256) +func (_UBIPool *UBIPoolSession) AA() (*big.Int, error) { + return _UBIPool.Contract.AA(&_UBIPool.CallOpts) +} + +// AA is a free data retrieval call binding the contract method 0x997da8d4. +// +// Solidity: function AA() view returns(uint256) +func (_UBIPool *UBIPoolCallerSession) AA() (*big.Int, error) { + return _UBIPool.Contract.AA(&_UBIPool.CallOpts) +} + +// BB is a free data retrieval call binding the contract method 0x5727dc5c. +// +// Solidity: function BB() view returns(uint256) +func (_UBIPool *UBIPoolCaller) BB(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _UBIPool.contract.Call(opts, &out, "BB") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BB is a free data retrieval call binding the contract method 0x5727dc5c. +// +// Solidity: function BB() view returns(uint256) +func (_UBIPool *UBIPoolSession) BB() (*big.Int, error) { + return _UBIPool.Contract.BB(&_UBIPool.CallOpts) +} + +// BB is a free data retrieval call binding the contract method 0x5727dc5c. +// +// Solidity: function BB() view returns(uint256) +func (_UBIPool *UBIPoolCallerSession) BB() (*big.Int, error) { + return _UBIPool.Contract.BB(&_UBIPool.CallOpts) +} + +// MAXUBIPERCENTAGE is a free data retrieval call binding the contract method 0xd5077f40. +// +// Solidity: function MAX_UBI_PERCENTAGE() view returns(uint32) +func (_UBIPool *UBIPoolCaller) MAXUBIPERCENTAGE(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _UBIPool.contract.Call(opts, &out, "MAX_UBI_PERCENTAGE") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// MAXUBIPERCENTAGE is a free data retrieval call binding the contract method 0xd5077f40. +// +// Solidity: function MAX_UBI_PERCENTAGE() view returns(uint32) +func (_UBIPool *UBIPoolSession) MAXUBIPERCENTAGE() (uint32, error) { + return _UBIPool.Contract.MAXUBIPERCENTAGE(&_UBIPool.CallOpts) +} + +// MAXUBIPERCENTAGE is a free data retrieval call binding the contract method 0xd5077f40. +// +// Solidity: function MAX_UBI_PERCENTAGE() view returns(uint32) +func (_UBIPool *UBIPoolCallerSession) MAXUBIPERCENTAGE() (uint32, error) { + return _UBIPool.Contract.MAXUBIPERCENTAGE(&_UBIPool.CallOpts) +} + +// PP is a free data retrieval call binding the contract method 0xeeeac01e. +// +// Solidity: function PP() view returns(uint256) +func (_UBIPool *UBIPoolCaller) PP(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _UBIPool.contract.Call(opts, &out, "PP") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// PP is a free data retrieval call binding the contract method 0xeeeac01e. +// +// Solidity: function PP() view returns(uint256) +func (_UBIPool *UBIPoolSession) PP() (*big.Int, error) { + return _UBIPool.Contract.PP(&_UBIPool.CallOpts) +} + +// PP is a free data retrieval call binding the contract method 0xeeeac01e. +// +// Solidity: function PP() view returns(uint256) +func (_UBIPool *UBIPoolCallerSession) PP() (*big.Int, error) { + return _UBIPool.Contract.PP(&_UBIPool.CallOpts) +} + +// CurrentDistributionId is a free data retrieval call binding the contract method 0x780069e0. +// +// Solidity: function currentDistributionId() view returns(uint256) +func (_UBIPool *UBIPoolCaller) CurrentDistributionId(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _UBIPool.contract.Call(opts, &out, "currentDistributionId") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CurrentDistributionId is a free data retrieval call binding the contract method 0x780069e0. +// +// Solidity: function currentDistributionId() view returns(uint256) +func (_UBIPool *UBIPoolSession) CurrentDistributionId() (*big.Int, error) { + return _UBIPool.Contract.CurrentDistributionId(&_UBIPool.CallOpts) +} + +// CurrentDistributionId is a free data retrieval call binding the contract method 0x780069e0. +// +// Solidity: function currentDistributionId() view returns(uint256) +func (_UBIPool *UBIPoolCallerSession) CurrentDistributionId() (*big.Int, error) { + return _UBIPool.Contract.CurrentDistributionId(&_UBIPool.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_UBIPool *UBIPoolCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _UBIPool.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 (_UBIPool *UBIPoolSession) Owner() (common.Address, error) { + return _UBIPool.Contract.Owner(&_UBIPool.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_UBIPool *UBIPoolCallerSession) Owner() (common.Address, error) { + return _UBIPool.Contract.Owner(&_UBIPool.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_UBIPool *UBIPoolCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _UBIPool.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 (_UBIPool *UBIPoolSession) PendingOwner() (common.Address, error) { + return _UBIPool.Contract.PendingOwner(&_UBIPool.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_UBIPool *UBIPoolCallerSession) PendingOwner() (common.Address, error) { + return _UBIPool.Contract.PendingOwner(&_UBIPool.CallOpts) +} + +// ValidatorUBIAmounts is a free data retrieval call binding the contract method 0xc20c1472. +// +// Solidity: function validatorUBIAmounts(uint256 distributionId, bytes validatorUncmpPubkey) view returns(uint256 amount) +func (_UBIPool *UBIPoolCaller) ValidatorUBIAmounts(opts *bind.CallOpts, distributionId *big.Int, validatorUncmpPubkey []byte) (*big.Int, error) { + var out []interface{} + err := _UBIPool.contract.Call(opts, &out, "validatorUBIAmounts", distributionId, validatorUncmpPubkey) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ValidatorUBIAmounts is a free data retrieval call binding the contract method 0xc20c1472. +// +// Solidity: function validatorUBIAmounts(uint256 distributionId, bytes validatorUncmpPubkey) view returns(uint256 amount) +func (_UBIPool *UBIPoolSession) ValidatorUBIAmounts(distributionId *big.Int, validatorUncmpPubkey []byte) (*big.Int, error) { + return _UBIPool.Contract.ValidatorUBIAmounts(&_UBIPool.CallOpts, distributionId, validatorUncmpPubkey) +} + +// ValidatorUBIAmounts is a free data retrieval call binding the contract method 0xc20c1472. +// +// Solidity: function validatorUBIAmounts(uint256 distributionId, bytes validatorUncmpPubkey) view returns(uint256 amount) +func (_UBIPool *UBIPoolCallerSession) ValidatorUBIAmounts(distributionId *big.Int, validatorUncmpPubkey []byte) (*big.Int, error) { + return _UBIPool.Contract.ValidatorUBIAmounts(&_UBIPool.CallOpts, distributionId, validatorUncmpPubkey) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_UBIPool *UBIPoolTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UBIPool.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_UBIPool *UBIPoolSession) AcceptOwnership() (*types.Transaction, error) { + return _UBIPool.Contract.AcceptOwnership(&_UBIPool.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_UBIPool *UBIPoolTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _UBIPool.Contract.AcceptOwnership(&_UBIPool.TransactOpts) +} + +// ClaimUBI is a paid mutator transaction binding the contract method 0x747c4ef7. +// +// Solidity: function claimUBI(uint256 distributionId, bytes validatorUncmpPubkey) returns() +func (_UBIPool *UBIPoolTransactor) ClaimUBI(opts *bind.TransactOpts, distributionId *big.Int, validatorUncmpPubkey []byte) (*types.Transaction, error) { + return _UBIPool.contract.Transact(opts, "claimUBI", distributionId, validatorUncmpPubkey) +} + +// ClaimUBI is a paid mutator transaction binding the contract method 0x747c4ef7. +// +// Solidity: function claimUBI(uint256 distributionId, bytes validatorUncmpPubkey) returns() +func (_UBIPool *UBIPoolSession) ClaimUBI(distributionId *big.Int, validatorUncmpPubkey []byte) (*types.Transaction, error) { + return _UBIPool.Contract.ClaimUBI(&_UBIPool.TransactOpts, distributionId, validatorUncmpPubkey) +} + +// ClaimUBI is a paid mutator transaction binding the contract method 0x747c4ef7. +// +// Solidity: function claimUBI(uint256 distributionId, bytes validatorUncmpPubkey) returns() +func (_UBIPool *UBIPoolTransactorSession) ClaimUBI(distributionId *big.Int, validatorUncmpPubkey []byte) (*types.Transaction, error) { + return _UBIPool.Contract.ClaimUBI(&_UBIPool.TransactOpts, distributionId, validatorUncmpPubkey) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address owner) returns() +func (_UBIPool *UBIPoolTransactor) Initialize(opts *bind.TransactOpts, owner common.Address) (*types.Transaction, error) { + return _UBIPool.contract.Transact(opts, "initialize", owner) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address owner) returns() +func (_UBIPool *UBIPoolSession) Initialize(owner common.Address) (*types.Transaction, error) { + return _UBIPool.Contract.Initialize(&_UBIPool.TransactOpts, owner) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address owner) returns() +func (_UBIPool *UBIPoolTransactorSession) Initialize(owner common.Address) (*types.Transaction, error) { + return _UBIPool.Contract.Initialize(&_UBIPool.TransactOpts, owner) +} + +// Multicall is a paid mutator transaction binding the contract method 0xac9650d8. +// +// Solidity: function multicall(bytes[] data) returns(bytes[] results) +func (_UBIPool *UBIPoolTransactor) Multicall(opts *bind.TransactOpts, data [][]byte) (*types.Transaction, error) { + return _UBIPool.contract.Transact(opts, "multicall", data) +} + +// Multicall is a paid mutator transaction binding the contract method 0xac9650d8. +// +// Solidity: function multicall(bytes[] data) returns(bytes[] results) +func (_UBIPool *UBIPoolSession) Multicall(data [][]byte) (*types.Transaction, error) { + return _UBIPool.Contract.Multicall(&_UBIPool.TransactOpts, data) +} + +// Multicall is a paid mutator transaction binding the contract method 0xac9650d8. +// +// Solidity: function multicall(bytes[] data) returns(bytes[] results) +func (_UBIPool *UBIPoolTransactorSession) Multicall(data [][]byte) (*types.Transaction, error) { + return _UBIPool.Contract.Multicall(&_UBIPool.TransactOpts, data) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_UBIPool *UBIPoolTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UBIPool.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_UBIPool *UBIPoolSession) RenounceOwnership() (*types.Transaction, error) { + return _UBIPool.Contract.RenounceOwnership(&_UBIPool.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_UBIPool *UBIPoolTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _UBIPool.Contract.RenounceOwnership(&_UBIPool.TransactOpts) +} + +// SetUBIDistribution is a paid mutator transaction binding the contract method 0x1971f773. +// +// Solidity: function setUBIDistribution(uint256 totalUBI, bytes[] validatorUncmpPubKeys, uint256[] amounts) returns(uint256) +func (_UBIPool *UBIPoolTransactor) SetUBIDistribution(opts *bind.TransactOpts, totalUBI *big.Int, validatorUncmpPubKeys [][]byte, amounts []*big.Int) (*types.Transaction, error) { + return _UBIPool.contract.Transact(opts, "setUBIDistribution", totalUBI, validatorUncmpPubKeys, amounts) +} + +// SetUBIDistribution is a paid mutator transaction binding the contract method 0x1971f773. +// +// Solidity: function setUBIDistribution(uint256 totalUBI, bytes[] validatorUncmpPubKeys, uint256[] amounts) returns(uint256) +func (_UBIPool *UBIPoolSession) SetUBIDistribution(totalUBI *big.Int, validatorUncmpPubKeys [][]byte, amounts []*big.Int) (*types.Transaction, error) { + return _UBIPool.Contract.SetUBIDistribution(&_UBIPool.TransactOpts, totalUBI, validatorUncmpPubKeys, amounts) +} + +// SetUBIDistribution is a paid mutator transaction binding the contract method 0x1971f773. +// +// Solidity: function setUBIDistribution(uint256 totalUBI, bytes[] validatorUncmpPubKeys, uint256[] amounts) returns(uint256) +func (_UBIPool *UBIPoolTransactorSession) SetUBIDistribution(totalUBI *big.Int, validatorUncmpPubKeys [][]byte, amounts []*big.Int) (*types.Transaction, error) { + return _UBIPool.Contract.SetUBIDistribution(&_UBIPool.TransactOpts, totalUBI, validatorUncmpPubKeys, amounts) +} + +// SetUBIPercentage is a paid mutator transaction binding the contract method 0x47564aa0. +// +// Solidity: function setUBIPercentage(uint32 percentage) returns() +func (_UBIPool *UBIPoolTransactor) SetUBIPercentage(opts *bind.TransactOpts, percentage uint32) (*types.Transaction, error) { + return _UBIPool.contract.Transact(opts, "setUBIPercentage", percentage) +} + +// SetUBIPercentage is a paid mutator transaction binding the contract method 0x47564aa0. +// +// Solidity: function setUBIPercentage(uint32 percentage) returns() +func (_UBIPool *UBIPoolSession) SetUBIPercentage(percentage uint32) (*types.Transaction, error) { + return _UBIPool.Contract.SetUBIPercentage(&_UBIPool.TransactOpts, percentage) +} + +// SetUBIPercentage is a paid mutator transaction binding the contract method 0x47564aa0. +// +// Solidity: function setUBIPercentage(uint32 percentage) returns() +func (_UBIPool *UBIPoolTransactorSession) SetUBIPercentage(percentage uint32) (*types.Transaction, error) { + return _UBIPool.Contract.SetUBIPercentage(&_UBIPool.TransactOpts, percentage) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_UBIPool *UBIPoolTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _UBIPool.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_UBIPool *UBIPoolSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _UBIPool.Contract.TransferOwnership(&_UBIPool.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_UBIPool *UBIPoolTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _UBIPool.Contract.TransferOwnership(&_UBIPool.TransactOpts, newOwner) +} + +// UBIPoolInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the UBIPool contract. +type UBIPoolInitializedIterator struct { + Event *UBIPoolInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UBIPoolInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UBIPoolInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UBIPoolInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UBIPoolInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UBIPoolInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UBIPoolInitialized represents a Initialized event raised by the UBIPool contract. +type UBIPoolInitialized 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 (_UBIPool *UBIPoolFilterer) FilterInitialized(opts *bind.FilterOpts) (*UBIPoolInitializedIterator, error) { + + logs, sub, err := _UBIPool.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &UBIPoolInitializedIterator{contract: _UBIPool.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 (_UBIPool *UBIPoolFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *UBIPoolInitialized) (event.Subscription, error) { + + logs, sub, err := _UBIPool.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(UBIPoolInitialized) + if err := _UBIPool.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 (_UBIPool *UBIPoolFilterer) ParseInitialized(log types.Log) (*UBIPoolInitialized, error) { + event := new(UBIPoolInitialized) + if err := _UBIPool.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// UBIPoolOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the UBIPool contract. +type UBIPoolOwnershipTransferStartedIterator struct { + Event *UBIPoolOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UBIPoolOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UBIPoolOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UBIPoolOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UBIPoolOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UBIPoolOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UBIPoolOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the UBIPool contract. +type UBIPoolOwnershipTransferStarted 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 (_UBIPool *UBIPoolFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*UBIPoolOwnershipTransferStartedIterator, 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 := _UBIPool.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &UBIPoolOwnershipTransferStartedIterator{contract: _UBIPool.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 (_UBIPool *UBIPoolFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *UBIPoolOwnershipTransferStarted, 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 := _UBIPool.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(UBIPoolOwnershipTransferStarted) + if err := _UBIPool.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 (_UBIPool *UBIPoolFilterer) ParseOwnershipTransferStarted(log types.Log) (*UBIPoolOwnershipTransferStarted, error) { + event := new(UBIPoolOwnershipTransferStarted) + if err := _UBIPool.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// UBIPoolOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the UBIPool contract. +type UBIPoolOwnershipTransferredIterator struct { + Event *UBIPoolOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UBIPoolOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UBIPoolOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UBIPoolOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UBIPoolOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UBIPoolOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UBIPoolOwnershipTransferred represents a OwnershipTransferred event raised by the UBIPool contract. +type UBIPoolOwnershipTransferred 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 (_UBIPool *UBIPoolFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*UBIPoolOwnershipTransferredIterator, 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 := _UBIPool.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &UBIPoolOwnershipTransferredIterator{contract: _UBIPool.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 (_UBIPool *UBIPoolFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *UBIPoolOwnershipTransferred, 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 := _UBIPool.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(UBIPoolOwnershipTransferred) + if err := _UBIPool.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 (_UBIPool *UBIPoolFilterer) ParseOwnershipTransferred(log types.Log) (*UBIPoolOwnershipTransferred, error) { + event := new(UBIPoolOwnershipTransferred) + if err := _UBIPool.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// UBIPoolUBIDistributionSetIterator is returned from FilterUBIDistributionSet and is used to iterate over the raw logs and unpacked data for UBIDistributionSet events raised by the UBIPool contract. +type UBIPoolUBIDistributionSetIterator struct { + Event *UBIPoolUBIDistributionSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UBIPoolUBIDistributionSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UBIPoolUBIDistributionSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UBIPoolUBIDistributionSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UBIPoolUBIDistributionSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UBIPoolUBIDistributionSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UBIPoolUBIDistributionSet represents a UBIDistributionSet event raised by the UBIPool contract. +type UBIPoolUBIDistributionSet struct { + Month *big.Int + TotalUBI *big.Int + ValidatorUncmpPubKeys [][]byte + Amounts []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUBIDistributionSet is a free log retrieval operation binding the contract event 0x1cc6f356308c8399caa490706b01fb9d52cdc87cdf639e66c3da7d4ce2db161c. +// +// Solidity: event UBIDistributionSet(uint256 month, uint256 totalUBI, bytes[] validatorUncmpPubKeys, uint256[] amounts) +func (_UBIPool *UBIPoolFilterer) FilterUBIDistributionSet(opts *bind.FilterOpts) (*UBIPoolUBIDistributionSetIterator, error) { + + logs, sub, err := _UBIPool.contract.FilterLogs(opts, "UBIDistributionSet") + if err != nil { + return nil, err + } + return &UBIPoolUBIDistributionSetIterator{contract: _UBIPool.contract, event: "UBIDistributionSet", logs: logs, sub: sub}, nil +} + +// WatchUBIDistributionSet is a free log subscription operation binding the contract event 0x1cc6f356308c8399caa490706b01fb9d52cdc87cdf639e66c3da7d4ce2db161c. +// +// Solidity: event UBIDistributionSet(uint256 month, uint256 totalUBI, bytes[] validatorUncmpPubKeys, uint256[] amounts) +func (_UBIPool *UBIPoolFilterer) WatchUBIDistributionSet(opts *bind.WatchOpts, sink chan<- *UBIPoolUBIDistributionSet) (event.Subscription, error) { + + logs, sub, err := _UBIPool.contract.WatchLogs(opts, "UBIDistributionSet") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(UBIPoolUBIDistributionSet) + if err := _UBIPool.contract.UnpackLog(event, "UBIDistributionSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUBIDistributionSet is a log parse operation binding the contract event 0x1cc6f356308c8399caa490706b01fb9d52cdc87cdf639e66c3da7d4ce2db161c. +// +// Solidity: event UBIDistributionSet(uint256 month, uint256 totalUBI, bytes[] validatorUncmpPubKeys, uint256[] amounts) +func (_UBIPool *UBIPoolFilterer) ParseUBIDistributionSet(log types.Log) (*UBIPoolUBIDistributionSet, error) { + event := new(UBIPoolUBIDistributionSet) + if err := _UBIPool.contract.UnpackLog(event, "UBIDistributionSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// UBIPoolUBIPercentageSetIterator is returned from FilterUBIPercentageSet and is used to iterate over the raw logs and unpacked data for UBIPercentageSet events raised by the UBIPool contract. +type UBIPoolUBIPercentageSetIterator struct { + Event *UBIPoolUBIPercentageSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UBIPoolUBIPercentageSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UBIPoolUBIPercentageSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UBIPoolUBIPercentageSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UBIPoolUBIPercentageSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UBIPoolUBIPercentageSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UBIPoolUBIPercentageSet represents a UBIPercentageSet event raised by the UBIPool contract. +type UBIPoolUBIPercentageSet struct { + Percentage uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUBIPercentageSet is a free log retrieval operation binding the contract event 0x6c6483041303ba314f169eb2d2af177b4f497324ccf0f3c1e68c2100f76c4929. +// +// Solidity: event UBIPercentageSet(uint32 percentage) +func (_UBIPool *UBIPoolFilterer) FilterUBIPercentageSet(opts *bind.FilterOpts) (*UBIPoolUBIPercentageSetIterator, error) { + + logs, sub, err := _UBIPool.contract.FilterLogs(opts, "UBIPercentageSet") + if err != nil { + return nil, err + } + return &UBIPoolUBIPercentageSetIterator{contract: _UBIPool.contract, event: "UBIPercentageSet", logs: logs, sub: sub}, nil +} + +// WatchUBIPercentageSet is a free log subscription operation binding the contract event 0x6c6483041303ba314f169eb2d2af177b4f497324ccf0f3c1e68c2100f76c4929. +// +// Solidity: event UBIPercentageSet(uint32 percentage) +func (_UBIPool *UBIPoolFilterer) WatchUBIPercentageSet(opts *bind.WatchOpts, sink chan<- *UBIPoolUBIPercentageSet) (event.Subscription, error) { + + logs, sub, err := _UBIPool.contract.WatchLogs(opts, "UBIPercentageSet") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(UBIPoolUBIPercentageSet) + if err := _UBIPool.contract.UnpackLog(event, "UBIPercentageSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUBIPercentageSet is a log parse operation binding the contract event 0x6c6483041303ba314f169eb2d2af177b4f497324ccf0f3c1e68c2100f76c4929. +// +// Solidity: event UBIPercentageSet(uint32 percentage) +func (_UBIPool *UBIPoolFilterer) ParseUBIPercentageSet(log types.Log) (*UBIPoolUBIPercentageSet, error) { + event := new(UBIPoolUBIPercentageSet) + if err := _UBIPool.contract.UnpackLog(event, "UBIPercentageSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contracts/bindings/ubipool_more.go b/contracts/bindings/ubipool_more.go new file mode 100644 index 00000000..2cc62f94 --- /dev/null +++ b/contracts/bindings/ubipool_more.go @@ -0,0 +1,14 @@ +package bindings + +import ( + _ "embed" +) + +const ( + UBIPoolDeployedBytecode = "0x60406080815260048036101561001457600080fd5b600091823560e01c9081631971f77314610cac57816347564aa014610bcd5781635727dc5c14610bb1578163715018a614610ae7578163747c4ef714610844578163780069e01461082757816379ba50971461079a5781638da5cb5b14610746578163997da8d41461072b578163ac9650d81461052b578163c20c1472146104af578163c4d66de814610276578163d5077f4014610235578163e30c3978146101e1578163eeeac01e146101a6575063f2fde38b146100d257600080fd5b346101a25760206003193601126101a2573573ffffffffffffffffffffffffffffffffffffffff80821680920361019e5761010b6113af565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b8280fd5b5080fd5b8390346101a257816003193601126101a257602090517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f8152f35b8390346101a257816003193601126101a25760209073ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0054169051908152f35b8390346101a257816003193601126101a2576020905163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9190503461019e57602060031936011261019e57803573ffffffffffffffffffffffffffffffffffffffff8116908181036104ab577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009283549260ff84871c16159367ffffffffffffffff8116801590816104a3575b6001149081610499575b159081610490575b50610468578460017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008316178755610433575b50156103b0575061035190610344611824565b61034c611824565b61161d565b610359578280f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291817fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff602093541690555160018152a138808280f35b60849060208651917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602560248201527f554249506f6f6c3a206f776e65722063616e6e6f74206265207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000166801000000000000000117855538610331565b8287517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b905015386102fe565b303b1591506102f6565b8691506102ec565b8480fd5b9190503461019e578160031936011261019e5760243567ffffffffffffffff811161052757366023820112156105275761051691836020956104fb879436906024818701359101611264565b92358152600184522082855194838680955193849201611197565b820190815203019020549051908152f35b8380fd5b8383346101a25760208060031936011261019e5767ffffffffffffffff9082358281116104ab5761055f9036908501611161565b9286519483860191868310908311176106ff57508087939694975283855261058687611383565b94610593845196876111ba565b87865261059f88611383565b977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0809901865b8181106106f0575050855b81811061066b57505050505080519380850191818652845180935281818701918460051b880101950193965b83881061060a5786860387f35b9091929394838080837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08b6001960301875285601f8b5161065681518092818752878088019101611197565b011601019701930197019690939291936105fd565b806106cf8880896106af8e9b9f9c9e6106bb908b8b61068e8f9b8d60019d6112da565b9290965195838794868601998a37840191858301938a855251938491611197565b010380845201826111ba565b5190305af46106c8611353565b9030611784565b6106d9828b61139b565b526106e4818a61139b565b500198949795986105d1565b60608982018b015289016105c6565b8660416024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8390346101a257816003193601126101a25751908152602090f35b8390346101a257816003193601126101a25760209073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054169051908152f35b90503461019e578260031936011261019e573373ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c005416036107f757826107f43361161d565b80f35b6024925051907f118cdaa70000000000000000000000000000000000000000000000000000000082523390820152fd5b8390346101a257816003193601126101a257602091549051908152f35b9190503461019e578160031936011261019e57602480359267ffffffffffffffff908335828611610ae35736602387011215610ae35785850135928311610ae35783860136858589010111610adf577f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00966002885414610ab757600288556108cc858361141f565b84600111610ab35761090690369060257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88019101611264565b9384519473ffffffffffffffffffffffffffffffffffffffff60209687339301201603610a325782895260018552610941848a20828461133a565b549283156109d757899384610964819582958395845260018b528984209161133a565b55335af1610970611353565b501561097e57856001865580f35b517f08c379a000000000000000000000000000000000000000000000000000000000815292830152601b908201527f554249506f6f6c3a206661696c656420746f2073656e642055424900000000006044820152606490fd5b606488601889898951937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f554249506f6f6c3a206e6f2055424920746f20636c61696d00000000000000006044820152fd5b608487602e88888851937f08c379a00000000000000000000000000000000000000000000000000000000085528401528201527f5075624b657956657269666965723a20496e76616c6964207075626b6579206460448201527f65726976656420616464726573730000000000000000000000000000000000006064820152fd5b8880fd5b8684517f3ee5aeb5000000000000000000000000000000000000000000000000000000008152fd5b8780fd5b8680fd5b8334610bae5780600319360112610bae57610b006113af565b8073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffff00000000000000000000000000000000000000007f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008181541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549182169055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b8390346101a257816003193601126101a2576020905160078152f35b90503461019e57602060031936011261019e5781359163ffffffff8084168094036104ab57610bfa6113af565b7f0000000000000000000000000000000000000000000000000000000000000000168311610c5057507f6c6483041303ba314f169eb2d2af177b4f497324ccf0f3c1e68c2100f76c49299160209151908152a180f35b602060649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601c60248201527f554249506f6f6c3a2070657263656e7461676520746f6f2068696768000000006044820152fd5b90503461019e57606060031936011261019e57813592602467ffffffffffffffff813581811161052757610ce39036908701611161565b959093604491823584811161019e57610cff9036908301611161565b939095610d0a6113af565b89156110e057848a0361108557478b1161102a578384547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610fa45760010185558b90855b878110610f2c575003610ed1575050508096949296549686519580608088018a895260209b8c8a015260808a8a01525260a087019460a08260051b89010195819385925b848410610e105750505050505084830360608601528183527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211610bae575092809287927f1cc6f356308c8399caa490706b01fb9d52cdc87cdf639e66c3da7d4ce2db161c9560051b80928583013701030190a151908152f35b9091929394977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608b820301845288357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe183360301811215610adf5782018035908f01848211610ab3578136038113610ab3578f837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8580859796869760019a52868601378d858286010152011601019a01940194019294939190610d95565b60649291601e7f554249506f6f6c3a20746f74616c20616d6f756e74206d69736d6174636800009260208c51957f08c379a0000000000000000000000000000000000000000000000000000000008752860152840152820152fd5b9150610f3982888b61129b565b3515610fcf578a610f848b610f7e8f80610f6b8f8e8a9491610f66610f608780958b6112da565b9061141f565b61129b565b35958c548d5260016020528c20936112da565b9061133a565b55610f9082888b61129b565b358101809111610fa4578c91600101610d51565b82866011877f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8a517f08c379a0000000000000000000000000000000000000000000000000000000008152602081870152601f818501527f554249506f6f6c3a20616d6f756e74732063616e6e6f74206265207a65726f0081860152606490fd5b60649291601b7f554249506f6f6c3a206e6f7420656e6f7567682062616c616e636500000000009260208c51957f08c379a0000000000000000000000000000000000000000000000000000000008752860152840152820152fd5b6064929160187f554249506f6f6c3a206c656e677468206d69736d6174636800000000000000009260208c51957f08c379a0000000000000000000000000000000000000000000000000000000008752860152840152820152fd5b60849291602e7f554249506f6f6c3a2076616c696461746f72556e636d705075624b65797320639260208c51957f08c379a00000000000000000000000000000000000000000000000000000000087528601528401528201527f616e6e6f7420626520656d7074790000000000000000000000000000000000006064820152fd5b9181601f840112156111925782359167ffffffffffffffff8311611192576020808501948460051b01011161119257565b600080fd5b60005b8381106111aa5750506000910152565b818101518382015260200161119a565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176111fb57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff81116111fb57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926112708261122a565b9161127e60405193846111ba565b829481845281830111611192578281602093846000960137010152565b91908110156112ab5760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b91908110156112ab5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561119257019081359167ffffffffffffffff8311611192576020018236038113611192579190565b6020919283604051948593843782019081520301902090565b3d1561137e573d906113648261122a565b9161137260405193846111ba565b82523d6000602084013e565b606090565b67ffffffffffffffff81116111fb5760051b60200190565b80518210156112ab5760209160051b010190565b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300541633036113ef57565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b906041810361159957156112ab577f04000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008235160361151557806001602161148a9301359101356116d1565b1561149157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579206f60448201527f6e206375727665000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579207060448201527f72656669780000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5075624b657956657269666965723a20496e76616c6964207075626b6579206c60448201527f656e6774680000000000000000000000000000000000000000000000000000006064820152fd5b7fffffffffffffffffffffffff0000000000000000000000000000000000000000907f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008281541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549073ffffffffffffffffffffffffffffffffffffffff80931680948316179055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b8015801561175a575b8015611752575b8015611728575b611721576007907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f918282818181950909089180091490565b5050600090565b507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f8210156116e8565b5081156116e1565b507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f8110156116da565b906117c3575080511561179957805190602001fd5b60046040517f1425ea42000000000000000000000000000000000000000000000000000000008152fd5b8151158061181b575b6117d4575090565b60249073ffffffffffffffffffffffffffffffffffffffff604051917f9996b315000000000000000000000000000000000000000000000000000000008352166004820152fd5b50803b156117cc565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561185357565b60046040517fd7e6bcf8000000000000000000000000000000000000000000000000000000008152fdfea2646970667358221220d0f8a42a134e52bcffc7046d7d772454a8bcdf1bd93a296d1e0d7df24bb4129864736f6c63430008170033" +) + +//go:embed ubipool_storage_layout.json +var ubipoolStorageLayoutJSON []byte + +var UBIPoolStorageLayout = mustGetStorageLayout(ubipoolStorageLayoutJSON) diff --git a/contracts/bindings/ubipool_storage_layout.json b/contracts/bindings/ubipool_storage_layout.json new file mode 100644 index 00000000..5f70b606 --- /dev/null +++ b/contracts/bindings/ubipool_storage_layout.json @@ -0,0 +1,46 @@ +{ + "storage": [ + { + "astId": 2443, + "contract": "src/protocol/UBIPool.sol:UBIPool", + "label": "currentDistributionId", + "offset": 0, + "slot": "0", + "type": "t_uint256" + }, + { + "astId": 2450, + "contract": "src/protocol/UBIPool.sol:UBIPool", + "label": "validatorUBIAmounts", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_bytes_memory_ptr,t_uint256))" + } + ], + "types": { + "t_bytes_memory_ptr": { + "encoding": "bytes", + "label": "bytes", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes_memory_ptr,t_uint256)": { + "encoding": "mapping", + "key": "t_bytes_memory_ptr", + "label": "mapping(bytes => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_mapping(t_uint256,t_mapping(t_bytes_memory_ptr,t_uint256))": { + "encoding": "mapping", + "key": "t_uint256", + "label": "mapping(uint256 => mapping(bytes => uint256))", + "numberOfBytes": "32", + "value": "t_mapping(t_bytes_memory_ptr,t_uint256)" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } +} diff --git a/contracts/bindings/upgradeentrypoint.go b/contracts/bindings/upgradeentrypoint.go new file mode 100644 index 00000000..2402bb02 --- /dev/null +++ b/contracts/bindings/upgradeentrypoint.go @@ -0,0 +1,1100 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package bindings + +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 +) + +// UpgradeEntrypointMetaData contains all meta data concerning the UpgradeEntrypoint contract. +var UpgradeEntrypointMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cancelUpgrade\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"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\":\"planUpgrade\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"height\",\"type\":\"int64\",\"internalType\":\"int64\"},{\"name\":\"info\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"CancelUpgrade\",\"inputs\":[],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"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\":\"SoftwareUpgrade\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"height\",\"type\":\"int64\",\"indexed\":false,\"internalType\":\"int64\"},{\"name\":\"info\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"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\"}]}]", + Bin: "0x608080604052346100b8577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c166100a957506001600160401b036002600160401b031982821601610064575b60405161099690816100be8239f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080610055565b63f92ee8a960e01b8152600490fd5b600080fdfe60406080815260048036101561001457600080fd5b600091823560e01c90816355f2916614610713578163715018a61461062b57816379ba5097146105805781638da5cb5b1461050e578163c4d66de8146102bb578163e30c397814610249578163ef176e0e1461016c575063f2fde38b1461007a57600080fd5b346101685760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610168573573ffffffffffffffffffffffffffffffffffffffff808216809203610164576100d16107e3565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b8280fd5b5080fd5b9050346101645760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101645767ffffffffffffffff918035838111610245576101bd9036908301610771565b919092602435908160070b809203610241576044359586116102415761020a61023b937f112749e79b2098b58eab36c21f123b2883c3ecbbb4f41623a744fa6d9b3e37c697369101610771565b916102136107e3565b61022981519788976060895260608901916107a4565b936020870152858403908601526107a4565b0390a180f35b8680fd5b8480fd5b83903461016857817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101685760209073ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0054169051908152f35b919050346101645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016457803573ffffffffffffffffffffffffffffffffffffffff811690818103610245577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009283549260ff84871c16159367ffffffffffffffff811680159081610506575b60011490816104fc575b1590816104f3575b506104cb578460017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008316178755610496575b501561041357506103b4906103a7610907565b6103af610907565b610853565b6103bc578280f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291817fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff602093541690555160018152a138808280f35b60849060208651917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602f60248201527f55706772616465456e747279706f696e743a206f776e65722063616e6e6f742060448201527f6265207a65726f206164647265737300000000000000000000000000000000006064820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000166801000000000000000117855538610394565b8287517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b90501538610361565b303b159150610359565b86915061034f565b83903461016857817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101685760209073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054169051908152f35b90503461016457827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610164573373ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c005416036105fb57826105f833610853565b80f35b6024925051907f118cdaa70000000000000000000000000000000000000000000000000000000082523390820152fd5b833461071057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610710576106626107e3565b8073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffff00000000000000000000000000000000000000007f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008181541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549182169055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b833461071057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107105761074a6107e3565b7f812c36a273ff85c1871fc7c629fa4c010821a53f3a2492dcc0ea00a396b6a64f8180a180f35b9181601f8401121561079f5782359167ffffffffffffffff831161079f576020838186019501011161079f57565b600080fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416330361082357565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b7fffffffffffffffffffffffff0000000000000000000000000000000000000000907f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008281541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549073ffffffffffffffffffffffffffffffffffffffff80931680948316179055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561093657565b60046040517fd7e6bcf8000000000000000000000000000000000000000000000000000000008152fdfea2646970667358221220be333f2c6359ad86ba5a2725a0598a84324c739999832bfdce1711c007c0748b64736f6c63430008170033", +} + +// UpgradeEntrypointABI is the input ABI used to generate the binding from. +// Deprecated: Use UpgradeEntrypointMetaData.ABI instead. +var UpgradeEntrypointABI = UpgradeEntrypointMetaData.ABI + +// UpgradeEntrypointBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use UpgradeEntrypointMetaData.Bin instead. +var UpgradeEntrypointBin = UpgradeEntrypointMetaData.Bin + +// DeployUpgradeEntrypoint deploys a new Ethereum contract, binding an instance of UpgradeEntrypoint to it. +func DeployUpgradeEntrypoint(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *UpgradeEntrypoint, error) { + parsed, err := UpgradeEntrypointMetaData.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(UpgradeEntrypointBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &UpgradeEntrypoint{UpgradeEntrypointCaller: UpgradeEntrypointCaller{contract: contract}, UpgradeEntrypointTransactor: UpgradeEntrypointTransactor{contract: contract}, UpgradeEntrypointFilterer: UpgradeEntrypointFilterer{contract: contract}}, nil +} + +// UpgradeEntrypoint is an auto generated Go binding around an Ethereum contract. +type UpgradeEntrypoint struct { + UpgradeEntrypointCaller // Read-only binding to the contract + UpgradeEntrypointTransactor // Write-only binding to the contract + UpgradeEntrypointFilterer // Log filterer for contract events +} + +// UpgradeEntrypointCaller is an auto generated read-only Go binding around an Ethereum contract. +type UpgradeEntrypointCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UpgradeEntrypointTransactor is an auto generated write-only Go binding around an Ethereum contract. +type UpgradeEntrypointTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UpgradeEntrypointFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type UpgradeEntrypointFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// UpgradeEntrypointSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type UpgradeEntrypointSession struct { + Contract *UpgradeEntrypoint // 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 +} + +// UpgradeEntrypointCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type UpgradeEntrypointCallerSession struct { + Contract *UpgradeEntrypointCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// UpgradeEntrypointTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type UpgradeEntrypointTransactorSession struct { + Contract *UpgradeEntrypointTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// UpgradeEntrypointRaw is an auto generated low-level Go binding around an Ethereum contract. +type UpgradeEntrypointRaw struct { + Contract *UpgradeEntrypoint // Generic contract binding to access the raw methods on +} + +// UpgradeEntrypointCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type UpgradeEntrypointCallerRaw struct { + Contract *UpgradeEntrypointCaller // Generic read-only contract binding to access the raw methods on +} + +// UpgradeEntrypointTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type UpgradeEntrypointTransactorRaw struct { + Contract *UpgradeEntrypointTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewUpgradeEntrypoint creates a new instance of UpgradeEntrypoint, bound to a specific deployed contract. +func NewUpgradeEntrypoint(address common.Address, backend bind.ContractBackend) (*UpgradeEntrypoint, error) { + contract, err := bindUpgradeEntrypoint(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &UpgradeEntrypoint{UpgradeEntrypointCaller: UpgradeEntrypointCaller{contract: contract}, UpgradeEntrypointTransactor: UpgradeEntrypointTransactor{contract: contract}, UpgradeEntrypointFilterer: UpgradeEntrypointFilterer{contract: contract}}, nil +} + +// NewUpgradeEntrypointCaller creates a new read-only instance of UpgradeEntrypoint, bound to a specific deployed contract. +func NewUpgradeEntrypointCaller(address common.Address, caller bind.ContractCaller) (*UpgradeEntrypointCaller, error) { + contract, err := bindUpgradeEntrypoint(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &UpgradeEntrypointCaller{contract: contract}, nil +} + +// NewUpgradeEntrypointTransactor creates a new write-only instance of UpgradeEntrypoint, bound to a specific deployed contract. +func NewUpgradeEntrypointTransactor(address common.Address, transactor bind.ContractTransactor) (*UpgradeEntrypointTransactor, error) { + contract, err := bindUpgradeEntrypoint(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &UpgradeEntrypointTransactor{contract: contract}, nil +} + +// NewUpgradeEntrypointFilterer creates a new log filterer instance of UpgradeEntrypoint, bound to a specific deployed contract. +func NewUpgradeEntrypointFilterer(address common.Address, filterer bind.ContractFilterer) (*UpgradeEntrypointFilterer, error) { + contract, err := bindUpgradeEntrypoint(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &UpgradeEntrypointFilterer{contract: contract}, nil +} + +// bindUpgradeEntrypoint binds a generic wrapper to an already deployed contract. +func bindUpgradeEntrypoint(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := UpgradeEntrypointMetaData.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 (_UpgradeEntrypoint *UpgradeEntrypointRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UpgradeEntrypoint.Contract.UpgradeEntrypointCaller.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 (_UpgradeEntrypoint *UpgradeEntrypointRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UpgradeEntrypoint.Contract.UpgradeEntrypointTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UpgradeEntrypoint *UpgradeEntrypointRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UpgradeEntrypoint.Contract.UpgradeEntrypointTransactor.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 (_UpgradeEntrypoint *UpgradeEntrypointCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _UpgradeEntrypoint.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 (_UpgradeEntrypoint *UpgradeEntrypointTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UpgradeEntrypoint.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_UpgradeEntrypoint *UpgradeEntrypointTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _UpgradeEntrypoint.Contract.contract.Transact(opts, method, params...) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_UpgradeEntrypoint *UpgradeEntrypointCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _UpgradeEntrypoint.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 (_UpgradeEntrypoint *UpgradeEntrypointSession) Owner() (common.Address, error) { + return _UpgradeEntrypoint.Contract.Owner(&_UpgradeEntrypoint.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_UpgradeEntrypoint *UpgradeEntrypointCallerSession) Owner() (common.Address, error) { + return _UpgradeEntrypoint.Contract.Owner(&_UpgradeEntrypoint.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_UpgradeEntrypoint *UpgradeEntrypointCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _UpgradeEntrypoint.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 (_UpgradeEntrypoint *UpgradeEntrypointSession) PendingOwner() (common.Address, error) { + return _UpgradeEntrypoint.Contract.PendingOwner(&_UpgradeEntrypoint.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_UpgradeEntrypoint *UpgradeEntrypointCallerSession) PendingOwner() (common.Address, error) { + return _UpgradeEntrypoint.Contract.PendingOwner(&_UpgradeEntrypoint.CallOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_UpgradeEntrypoint *UpgradeEntrypointTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UpgradeEntrypoint.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_UpgradeEntrypoint *UpgradeEntrypointSession) AcceptOwnership() (*types.Transaction, error) { + return _UpgradeEntrypoint.Contract.AcceptOwnership(&_UpgradeEntrypoint.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_UpgradeEntrypoint *UpgradeEntrypointTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _UpgradeEntrypoint.Contract.AcceptOwnership(&_UpgradeEntrypoint.TransactOpts) +} + +// CancelUpgrade is a paid mutator transaction binding the contract method 0x55f29166. +// +// Solidity: function cancelUpgrade() returns() +func (_UpgradeEntrypoint *UpgradeEntrypointTransactor) CancelUpgrade(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UpgradeEntrypoint.contract.Transact(opts, "cancelUpgrade") +} + +// CancelUpgrade is a paid mutator transaction binding the contract method 0x55f29166. +// +// Solidity: function cancelUpgrade() returns() +func (_UpgradeEntrypoint *UpgradeEntrypointSession) CancelUpgrade() (*types.Transaction, error) { + return _UpgradeEntrypoint.Contract.CancelUpgrade(&_UpgradeEntrypoint.TransactOpts) +} + +// CancelUpgrade is a paid mutator transaction binding the contract method 0x55f29166. +// +// Solidity: function cancelUpgrade() returns() +func (_UpgradeEntrypoint *UpgradeEntrypointTransactorSession) CancelUpgrade() (*types.Transaction, error) { + return _UpgradeEntrypoint.Contract.CancelUpgrade(&_UpgradeEntrypoint.TransactOpts) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address owner) returns() +func (_UpgradeEntrypoint *UpgradeEntrypointTransactor) Initialize(opts *bind.TransactOpts, owner common.Address) (*types.Transaction, error) { + return _UpgradeEntrypoint.contract.Transact(opts, "initialize", owner) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address owner) returns() +func (_UpgradeEntrypoint *UpgradeEntrypointSession) Initialize(owner common.Address) (*types.Transaction, error) { + return _UpgradeEntrypoint.Contract.Initialize(&_UpgradeEntrypoint.TransactOpts, owner) +} + +// Initialize is a paid mutator transaction binding the contract method 0xc4d66de8. +// +// Solidity: function initialize(address owner) returns() +func (_UpgradeEntrypoint *UpgradeEntrypointTransactorSession) Initialize(owner common.Address) (*types.Transaction, error) { + return _UpgradeEntrypoint.Contract.Initialize(&_UpgradeEntrypoint.TransactOpts, owner) +} + +// PlanUpgrade is a paid mutator transaction binding the contract method 0xef176e0e. +// +// Solidity: function planUpgrade(string name, int64 height, string info) returns() +func (_UpgradeEntrypoint *UpgradeEntrypointTransactor) PlanUpgrade(opts *bind.TransactOpts, name string, height int64, info string) (*types.Transaction, error) { + return _UpgradeEntrypoint.contract.Transact(opts, "planUpgrade", name, height, info) +} + +// PlanUpgrade is a paid mutator transaction binding the contract method 0xef176e0e. +// +// Solidity: function planUpgrade(string name, int64 height, string info) returns() +func (_UpgradeEntrypoint *UpgradeEntrypointSession) PlanUpgrade(name string, height int64, info string) (*types.Transaction, error) { + return _UpgradeEntrypoint.Contract.PlanUpgrade(&_UpgradeEntrypoint.TransactOpts, name, height, info) +} + +// PlanUpgrade is a paid mutator transaction binding the contract method 0xef176e0e. +// +// Solidity: function planUpgrade(string name, int64 height, string info) returns() +func (_UpgradeEntrypoint *UpgradeEntrypointTransactorSession) PlanUpgrade(name string, height int64, info string) (*types.Transaction, error) { + return _UpgradeEntrypoint.Contract.PlanUpgrade(&_UpgradeEntrypoint.TransactOpts, name, height, info) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_UpgradeEntrypoint *UpgradeEntrypointTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _UpgradeEntrypoint.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_UpgradeEntrypoint *UpgradeEntrypointSession) RenounceOwnership() (*types.Transaction, error) { + return _UpgradeEntrypoint.Contract.RenounceOwnership(&_UpgradeEntrypoint.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_UpgradeEntrypoint *UpgradeEntrypointTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _UpgradeEntrypoint.Contract.RenounceOwnership(&_UpgradeEntrypoint.TransactOpts) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_UpgradeEntrypoint *UpgradeEntrypointTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _UpgradeEntrypoint.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_UpgradeEntrypoint *UpgradeEntrypointSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _UpgradeEntrypoint.Contract.TransferOwnership(&_UpgradeEntrypoint.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_UpgradeEntrypoint *UpgradeEntrypointTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _UpgradeEntrypoint.Contract.TransferOwnership(&_UpgradeEntrypoint.TransactOpts, newOwner) +} + +// UpgradeEntrypointCancelUpgradeIterator is returned from FilterCancelUpgrade and is used to iterate over the raw logs and unpacked data for CancelUpgrade events raised by the UpgradeEntrypoint contract. +type UpgradeEntrypointCancelUpgradeIterator struct { + Event *UpgradeEntrypointCancelUpgrade // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UpgradeEntrypointCancelUpgradeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UpgradeEntrypointCancelUpgrade) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UpgradeEntrypointCancelUpgrade) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UpgradeEntrypointCancelUpgradeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UpgradeEntrypointCancelUpgradeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UpgradeEntrypointCancelUpgrade represents a CancelUpgrade event raised by the UpgradeEntrypoint contract. +type UpgradeEntrypointCancelUpgrade struct { + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCancelUpgrade is a free log retrieval operation binding the contract event 0x812c36a273ff85c1871fc7c629fa4c010821a53f3a2492dcc0ea00a396b6a64f. +// +// Solidity: event CancelUpgrade() +func (_UpgradeEntrypoint *UpgradeEntrypointFilterer) FilterCancelUpgrade(opts *bind.FilterOpts) (*UpgradeEntrypointCancelUpgradeIterator, error) { + + logs, sub, err := _UpgradeEntrypoint.contract.FilterLogs(opts, "CancelUpgrade") + if err != nil { + return nil, err + } + return &UpgradeEntrypointCancelUpgradeIterator{contract: _UpgradeEntrypoint.contract, event: "CancelUpgrade", logs: logs, sub: sub}, nil +} + +// WatchCancelUpgrade is a free log subscription operation binding the contract event 0x812c36a273ff85c1871fc7c629fa4c010821a53f3a2492dcc0ea00a396b6a64f. +// +// Solidity: event CancelUpgrade() +func (_UpgradeEntrypoint *UpgradeEntrypointFilterer) WatchCancelUpgrade(opts *bind.WatchOpts, sink chan<- *UpgradeEntrypointCancelUpgrade) (event.Subscription, error) { + + logs, sub, err := _UpgradeEntrypoint.contract.WatchLogs(opts, "CancelUpgrade") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(UpgradeEntrypointCancelUpgrade) + if err := _UpgradeEntrypoint.contract.UnpackLog(event, "CancelUpgrade", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCancelUpgrade is a log parse operation binding the contract event 0x812c36a273ff85c1871fc7c629fa4c010821a53f3a2492dcc0ea00a396b6a64f. +// +// Solidity: event CancelUpgrade() +func (_UpgradeEntrypoint *UpgradeEntrypointFilterer) ParseCancelUpgrade(log types.Log) (*UpgradeEntrypointCancelUpgrade, error) { + event := new(UpgradeEntrypointCancelUpgrade) + if err := _UpgradeEntrypoint.contract.UnpackLog(event, "CancelUpgrade", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// UpgradeEntrypointInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the UpgradeEntrypoint contract. +type UpgradeEntrypointInitializedIterator struct { + Event *UpgradeEntrypointInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UpgradeEntrypointInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UpgradeEntrypointInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UpgradeEntrypointInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UpgradeEntrypointInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UpgradeEntrypointInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UpgradeEntrypointInitialized represents a Initialized event raised by the UpgradeEntrypoint contract. +type UpgradeEntrypointInitialized 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 (_UpgradeEntrypoint *UpgradeEntrypointFilterer) FilterInitialized(opts *bind.FilterOpts) (*UpgradeEntrypointInitializedIterator, error) { + + logs, sub, err := _UpgradeEntrypoint.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &UpgradeEntrypointInitializedIterator{contract: _UpgradeEntrypoint.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 (_UpgradeEntrypoint *UpgradeEntrypointFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *UpgradeEntrypointInitialized) (event.Subscription, error) { + + logs, sub, err := _UpgradeEntrypoint.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(UpgradeEntrypointInitialized) + if err := _UpgradeEntrypoint.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 (_UpgradeEntrypoint *UpgradeEntrypointFilterer) ParseInitialized(log types.Log) (*UpgradeEntrypointInitialized, error) { + event := new(UpgradeEntrypointInitialized) + if err := _UpgradeEntrypoint.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// UpgradeEntrypointOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the UpgradeEntrypoint contract. +type UpgradeEntrypointOwnershipTransferStartedIterator struct { + Event *UpgradeEntrypointOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UpgradeEntrypointOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UpgradeEntrypointOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UpgradeEntrypointOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UpgradeEntrypointOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UpgradeEntrypointOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UpgradeEntrypointOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the UpgradeEntrypoint contract. +type UpgradeEntrypointOwnershipTransferStarted 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 (_UpgradeEntrypoint *UpgradeEntrypointFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*UpgradeEntrypointOwnershipTransferStartedIterator, 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 := _UpgradeEntrypoint.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &UpgradeEntrypointOwnershipTransferStartedIterator{contract: _UpgradeEntrypoint.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 (_UpgradeEntrypoint *UpgradeEntrypointFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *UpgradeEntrypointOwnershipTransferStarted, 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 := _UpgradeEntrypoint.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(UpgradeEntrypointOwnershipTransferStarted) + if err := _UpgradeEntrypoint.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 (_UpgradeEntrypoint *UpgradeEntrypointFilterer) ParseOwnershipTransferStarted(log types.Log) (*UpgradeEntrypointOwnershipTransferStarted, error) { + event := new(UpgradeEntrypointOwnershipTransferStarted) + if err := _UpgradeEntrypoint.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// UpgradeEntrypointOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the UpgradeEntrypoint contract. +type UpgradeEntrypointOwnershipTransferredIterator struct { + Event *UpgradeEntrypointOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UpgradeEntrypointOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UpgradeEntrypointOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UpgradeEntrypointOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UpgradeEntrypointOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UpgradeEntrypointOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UpgradeEntrypointOwnershipTransferred represents a OwnershipTransferred event raised by the UpgradeEntrypoint contract. +type UpgradeEntrypointOwnershipTransferred 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 (_UpgradeEntrypoint *UpgradeEntrypointFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*UpgradeEntrypointOwnershipTransferredIterator, 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 := _UpgradeEntrypoint.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &UpgradeEntrypointOwnershipTransferredIterator{contract: _UpgradeEntrypoint.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 (_UpgradeEntrypoint *UpgradeEntrypointFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *UpgradeEntrypointOwnershipTransferred, 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 := _UpgradeEntrypoint.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(UpgradeEntrypointOwnershipTransferred) + if err := _UpgradeEntrypoint.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 (_UpgradeEntrypoint *UpgradeEntrypointFilterer) ParseOwnershipTransferred(log types.Log) (*UpgradeEntrypointOwnershipTransferred, error) { + event := new(UpgradeEntrypointOwnershipTransferred) + if err := _UpgradeEntrypoint.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// UpgradeEntrypointSoftwareUpgradeIterator is returned from FilterSoftwareUpgrade and is used to iterate over the raw logs and unpacked data for SoftwareUpgrade events raised by the UpgradeEntrypoint contract. +type UpgradeEntrypointSoftwareUpgradeIterator struct { + Event *UpgradeEntrypointSoftwareUpgrade // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *UpgradeEntrypointSoftwareUpgradeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(UpgradeEntrypointSoftwareUpgrade) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(UpgradeEntrypointSoftwareUpgrade) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *UpgradeEntrypointSoftwareUpgradeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *UpgradeEntrypointSoftwareUpgradeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// UpgradeEntrypointSoftwareUpgrade represents a SoftwareUpgrade event raised by the UpgradeEntrypoint contract. +type UpgradeEntrypointSoftwareUpgrade struct { + Name string + Height int64 + Info string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSoftwareUpgrade is a free log retrieval operation binding the contract event 0x112749e79b2098b58eab36c21f123b2883c3ecbbb4f41623a744fa6d9b3e37c6. +// +// Solidity: event SoftwareUpgrade(string name, int64 height, string info) +func (_UpgradeEntrypoint *UpgradeEntrypointFilterer) FilterSoftwareUpgrade(opts *bind.FilterOpts) (*UpgradeEntrypointSoftwareUpgradeIterator, error) { + + logs, sub, err := _UpgradeEntrypoint.contract.FilterLogs(opts, "SoftwareUpgrade") + if err != nil { + return nil, err + } + return &UpgradeEntrypointSoftwareUpgradeIterator{contract: _UpgradeEntrypoint.contract, event: "SoftwareUpgrade", logs: logs, sub: sub}, nil +} + +// WatchSoftwareUpgrade is a free log subscription operation binding the contract event 0x112749e79b2098b58eab36c21f123b2883c3ecbbb4f41623a744fa6d9b3e37c6. +// +// Solidity: event SoftwareUpgrade(string name, int64 height, string info) +func (_UpgradeEntrypoint *UpgradeEntrypointFilterer) WatchSoftwareUpgrade(opts *bind.WatchOpts, sink chan<- *UpgradeEntrypointSoftwareUpgrade) (event.Subscription, error) { + + logs, sub, err := _UpgradeEntrypoint.contract.WatchLogs(opts, "SoftwareUpgrade") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(UpgradeEntrypointSoftwareUpgrade) + if err := _UpgradeEntrypoint.contract.UnpackLog(event, "SoftwareUpgrade", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSoftwareUpgrade is a log parse operation binding the contract event 0x112749e79b2098b58eab36c21f123b2883c3ecbbb4f41623a744fa6d9b3e37c6. +// +// Solidity: event SoftwareUpgrade(string name, int64 height, string info) +func (_UpgradeEntrypoint *UpgradeEntrypointFilterer) ParseSoftwareUpgrade(log types.Log) (*UpgradeEntrypointSoftwareUpgrade, error) { + event := new(UpgradeEntrypointSoftwareUpgrade) + if err := _UpgradeEntrypoint.contract.UnpackLog(event, "SoftwareUpgrade", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contracts/bindings/upgradeentrypoint_more.go b/contracts/bindings/upgradeentrypoint_more.go new file mode 100644 index 00000000..62769162 --- /dev/null +++ b/contracts/bindings/upgradeentrypoint_more.go @@ -0,0 +1,14 @@ +package bindings + +import ( + _ "embed" +) + +const ( + UpgradeEntrypointDeployedBytecode = "0x60406080815260048036101561001457600080fd5b600091823560e01c90816355f2916614610713578163715018a61461062b57816379ba5097146105805781638da5cb5b1461050e578163c4d66de8146102bb578163e30c397814610249578163ef176e0e1461016c575063f2fde38b1461007a57600080fd5b346101685760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610168573573ffffffffffffffffffffffffffffffffffffffff808216809203610164576100d16107e3565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b8280fd5b5080fd5b9050346101645760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101645767ffffffffffffffff918035838111610245576101bd9036908301610771565b919092602435908160070b809203610241576044359586116102415761020a61023b937f112749e79b2098b58eab36c21f123b2883c3ecbbb4f41623a744fa6d9b3e37c697369101610771565b916102136107e3565b61022981519788976060895260608901916107a4565b936020870152858403908601526107a4565b0390a180f35b8680fd5b8480fd5b83903461016857817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101685760209073ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0054169051908152f35b919050346101645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016457803573ffffffffffffffffffffffffffffffffffffffff811690818103610245577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009283549260ff84871c16159367ffffffffffffffff811680159081610506575b60011490816104fc575b1590816104f3575b506104cb578460017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008316178755610496575b501561041357506103b4906103a7610907565b6103af610907565b610853565b6103bc578280f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291817fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff602093541690555160018152a138808280f35b60849060208651917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602f60248201527f55706772616465456e747279706f696e743a206f776e65722063616e6e6f742060448201527f6265207a65726f206164647265737300000000000000000000000000000000006064820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000166801000000000000000117855538610394565b8287517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b90501538610361565b303b159150610359565b86915061034f565b83903461016857817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101685760209073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054169051908152f35b90503461016457827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610164573373ffffffffffffffffffffffffffffffffffffffff7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c005416036105fb57826105f833610853565b80f35b6024925051907f118cdaa70000000000000000000000000000000000000000000000000000000082523390820152fd5b833461071057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610710576106626107e3565b8073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffff00000000000000000000000000000000000000007f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008181541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549182169055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b833461071057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107105761074a6107e3565b7f812c36a273ff85c1871fc7c629fa4c010821a53f3a2492dcc0ea00a396b6a64f8180a180f35b9181601f8401121561079f5782359167ffffffffffffffff831161079f576020838186019501011161079f57565b600080fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416330361082357565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b7fffffffffffffffffffffffff0000000000000000000000000000000000000000907f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008281541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549073ffffffffffffffffffffffffffffffffffffffff80931680948316179055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561093657565b60046040517fd7e6bcf8000000000000000000000000000000000000000000000000000000008152fdfea26469706673582212201f8e41e67a182e0c945e2b639310775738680205d656f26b067c62fc5f1f146b64736f6c63430008170033" +) + +//go:embed upgradeentrypoint_storage_layout.json +var upgradeentrypointStorageLayoutJSON []byte + +var UpgradeEntrypointStorageLayout = mustGetStorageLayout(upgradeentrypointStorageLayoutJSON) diff --git a/contracts/bindings/upgradeentrypoint_storage_layout.json b/contracts/bindings/upgradeentrypoint_storage_layout.json new file mode 100644 index 00000000..127dec9f --- /dev/null +++ b/contracts/bindings/upgradeentrypoint_storage_layout.json @@ -0,0 +1,4 @@ +{ + "storage": [], + "types": {} +}